Erreurs, bugs, questions - page 215

 

Est-il encore possible de rendre possible l'impression du fragment sélectionné dans Yeditor ? Pour l'instant, ce bouton radio n'est pas actif.

Une petite chose, bien sûr, mais désagréable, surtout lorsque les listes font 50 pages.

 

Le serveur semble avoir gelé... depuis hier.

 

L'algorithme génétique a disparu quelque part... Construire 360

Question supprimée ! Vous cherchez au mauvais endroit !

 

Peut-on se fier au fait que HistorySelectByPosition() renvoie une liste ORDONNÉE de transactions ?

ulong CExpertAdvisor::GetDealByOrder(ulong order) // получение тикета сделки по тикету ордера
  {
   PositionSelect(m_smb);
   HistorySelectByPosition(PositionGetInteger(POSITION_IDENTIFIER));
   uint total=HistoryDealsTotal();
//   for(uint i=0; i<total; i++)
   for(uint i=total-1; i>=0; i--)
     {
      ulong deal=HistoryDealGetTicket(i);
      if(order==HistoryDealGetInteger(deal,DEAL_ORDER))
         return(deal);                            // запомнили тикет сделки 
     }
   return(0);
  } 

Dans ce cas, l'énumération ICI serait inutile. Sinon, l'énumération peut commencer par la fin ... (j'ai remarqué que les métiers du testeur étaient commandés).

 

Chers Messieurs les développeurs et programmeurs ! J'ai besoin d'aide ! Je ne suis peut-être pas le premier, mais quand même...

1. Comment il est possible d'organiser une boucle, qui serait interrompue (par exemple) en appuyant sur l'objet "bouton". D'après ce que je comprends, la fonction OnChartEvent ne peut pas être appelée de force à partir de la même boucle ? Si c'est le cas, il existe peut-être des moyens de contourner ce problème, car je me suis déjà creusé la tête.

Lorsque la boucle est en cours d'exécution, les variables du système ne sont pas mises à jour, c'est-à-dire qu'il n'est pas possible de tirer parti du changement de période du graphique (au moins). Si la boucle est organisée en vérifiant OnChartEvent, il est alors nécessaire de faire constamment quelque chose avec le graphique pour déclencher cette fonction - ce qui n'est pas non plus une option.

2. Est-il possible de déplacer le graphique dans la fenêtre graphique de manière programmatique, et pas seulement manuellement ? Soit ChartNavigate ne fonctionne pas, soit il est conçu pour autre chose, soit je n'ai pas compris comment il fonctionne.

Je vous remercie d'avance.

p.s. Serait-il possible de faire des fonctions et des variables propres mises en évidence dans le texte du programme ?

 
KffAlex:

1. Comment créer une boucle qui s'interrompt (par exemple) lorsqu'on appuie sur un objet "bouton" ? Je comprends que la fonction OnChartEvent ne peut pas être appelée de force depuis la même boucle ? Si c'est le cas, il existe peut-être des moyens de contourner le problème, car je me suis déjà creusé les méninges.

Vérifie l'état de l'objet bouton.
 
KffAlex:

Soit ChartNavigate ne fonctionne pas, soit il est conçu pour autre chose, soit je n'ai pas compris comment celui-ci fonctionne.

Essayez ChartRedraw après l'appel de la fonction et assurez-vous que le défilement automatique du graphique est désactivé...
Документация по MQL5: Основы языка / Функции / Вызов функции
Документация по MQL5: Основы языка / Функции / Вызов функции
  • www.mql5.com
Основы языка / Функции / Вызов функции - Документация по MQL5
 

J'ai installé MT5 sur un serveur distant dédié. De temps en temps, je dois m'assurer que le terminal se reconnecte à un serveur si la connexion est interrompue pendant une courte période. Veillez à spécifier le serveur à utiliser, sinon l'ensemble de la transaction se "fige". Comment faire pour que le terminal se reconnecte automatiquement s'il n'est pas connecté dans les 5 minutes, par exemple ?

 
EvgeTrofi:

J'ai installé MT5 sur un serveur distant dédié. De temps en temps, je dois m'assurer que le terminal se reconnecte à un serveur si la connexion est interrompue pendant une courte période. Veillez à spécifier le serveur à utiliser, sinon l'ensemble de la transaction se "fige". Comment faire pour que le terminal se reconnecte automatiquement s'il n'est pas connecté au bout de 5 minutes, par exemple ?

Cela devrait se faire automatiquement.

Le terminal détecte automatiquement la perte de la connexion et s'y reconnecte (lorsque cette fonction est disponible).

Si ce n'est pas le cas, envoyez une demande au Service Desk avec une description complète du problème et n'oubliez pas de joindre les journaux.

 

Confronté à un problème de débordement de pile d'appels (je pense).

Après avoir appelé une méthode de l'un des objets, voir l'exemple ci-dessous. Le code est simplifié, juste l'essentiel. La classe CClass1 est une classe de base, et list1 a différents objets qui sont des descendants de cette classe, et leurs fonctions init ont une implémentation différente. Ainsi, dans une classe où la fonction init récupère une telle liste (pour faire simple, elle initialise une interface imbriquée, un panneau dans le panneau) après le retour de init dans la ligne

    Print(t.name);

il y a une erreur

2010.12.02 00:21:00 test1 (EURUSD,H1) Accès au pointeur non valide dans 'Container.mqh' (74,10)

for(CClass1* t = list1.GetLastNode(); t != NULL; t = list1.GetPrevNode() ) {
   t.init(); //после выхода отсюда t-мертвый указатель
    Print(t.name); 
}

C'est-à-dire que le pointeur t est mort.

Lors du débogage, cette erreur ne se produit pas, après avoir appelé la méthode, le pointeur est "vivant", les interfaces imbriquées sont créées et l'EA continue de fonctionner.

La seule façon de contourner l'erreur

savePoint = t;
t.init();
t = savePoint;
#propriété stacksize pointeur réalisé rien.
Raison: