Caractéristiques du langage mql5, subtilités et techniques - page 224

 
Maxim Kuznetsov #:

if (ChartID()!=0) {

    // Graphical chart presents
    // draws on it

}

Pouvez-vous nous en dire plus à ce sujet ?

 
Andrey Dik #:

Pouvez-vous nous en dire plus à ce sujet ?

Andrew, ce n'est pas le bon sujet. Vous devez vous renseigner dans un autre fil.

 
Artyom Trishkin #:

Andrew, ce n'est pas le bon sujet. Vous devriez vous renseigner sur ce genre de choses dans un autre fil.

Nous parlons des particularités de mql5, c'est donc le bon fil.
 
Andrey Dik #:

Quelqu'un a-t-il une idée sur la question ?

Peut-être essayer ceci ?

 // --- если обычное тестирование без оптимизации и визуализации
bool IsUsualTester = (MQLInfoInteger(MQL_TESTER) && !MQLInfoInteger(MQL_OPTIMIZATION) && !MQLInfoInteger(MQL_VISUAL_MODE));

 // --- если не тестирование и не оптимизация, значит видимый график
bool IsVisibleChart = (!IsUsualTester && !MQLInfoInteger(MQL_OPTIMIZATION));
 
Andrey Dik #:

Quelqu'un a-t-il une idée sur la question ?

Andrei, veuillez consulter l'article (Section 2. Modes dans MQL5), cela pourrait vous aider )).

Программируем режимы работы советника с помощью ООП
Программируем режимы работы советника с помощью ООП
  • www.mql5.com
В статье рассматривается идея мультирежимного программирования торговых роботов на MQL5. Используется объектно-ориентированный подход для реализации каждого из режимов. Приводится пример иерархии режимных классов и пример классов для тестирования. Предполагается, что мультирежимное программирование торговых роботов полностью учитывает особенности каждого режима работы MQL5-советника. Для идентификации режимов создаются функции и перечисление.
 
Andrey Dik #:

Pouvez-vous nous en dire plus à ce sujet ?

Il peut sembler à certains que ce n'est pas la bonne branche, mais c'est simple :

si ChartID est raisonnable - cela signifie qu'il y a une place pour lui dans l'interface graphique et qu'il fonctionne dans celle-ci, vous pouvez dessiner, donc soit VISUAL_TESTER, soit simplement travailler dans le terminal.

Si ChartGetInteger(ChartID(),CHART_WINDOW_HANDLE) renvoie un handle invalide, alors nous sommes dans le testeur. (Ou peut-être MQ VPS - je ne l'ai pas touché, je ne sais pas).

 
Maxim Kuznetsov #:

Cela peut sembler être le mauvais fil conducteur pour certains, mais c'est simple :

Si ChartID donne des résultats raisonnables, cela signifie qu'il y a une place pour lui dans l'interface graphique et qu'il fonctionne dans cette interface, vous pouvez dessiner, donc soit VISUAL_TESTER, soit travailler dans le terminal.

Si ChartGetInteger(ChartID(),CHART_WINDOW_HANDLE) renvoie un handle invalide, alors nous sommes dans le testeur. (Ou peut-être MQ VPS - je ne l'ai pas touché, je ne sais pas).

Le testeur a aussi un graphique, bien que virtuel, donc c'est une impasse.

 
Andrey Dik #:

Le testeur dispose également d'une carte, même si elle est virtuelle, et c'est donc une voie sans issue.

Je vous ai répondu dans ce fil (les questions sont les mêmes).

 
Andrey Dik #:

Quelqu'un a-t-il une idée sur la question ?

//true если работа на чарте или в визуальном тестировании, в остальных случаях false
bool CheckMode ()
{
  if(MQLInfoInteger(MQL_DEBUG)        ||
     MQLInfoInteger(MQL_PROFILER)     ||
    (MQLInfoInteger(MQL_TESTER) && ! MQLInfoInteger(MQL_VISUAL_MODE)) ||
     MQLInfoInteger(MQL_OPTIMIZATION) ||
     MQLInfoInteger(MQL_FRAME_MODE)) return false;

  return true;
}
 
Artyom Trishkin #:

Je vous ai répondu dans ce fil (même question).

Vous avez tous les droits. Supprimer là où c'est hors sujet... Où est le problème ?