Merkmale der Sprache mql5, Feinheiten und Techniken - Seite 224

 
Maxim Kuznetsov #:

if (ChartID()!=0) {

    // Graphical chart presents
    // draws on it

}

Was bedeutet das? Können Sie das näher erläutern?

 
Andrey Dik #:

Was bedeutet das? Können Sie das näher erläutern?

Andrew, dies ist der falsche Thread. Du musst es in einem anderen Thema herausfinden.

 
Artyom Trishkin #:

Andrew, dies ist der falsche Thread. Du solltest solche Dinge in einem anderen Thread herausfinden.

Warum nicht im falschen? Wir sprechen über die Besonderheiten von mql5, also ist es der richtige.
 
Andrey Dik #:

Hat irgendjemand eine Idee?

Vielleicht versuchen Sie dies?

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

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

Hat irgendjemand eine Idee?

Andrei, schauen Sie sich bitte den Artikel (Abschnitt 2. Modi in MQL5), es kann helfen )).

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

Was bedeutet das? Können Sie das näher erläutern?

Es mag einigen so vorkommen, dass dies nicht der richtige Zweig ist, aber es ist ganz einfach:

Wenn ChartID einen vernünftigen Wert ergibt, bedeutet das, dass es einen Platz in der GUI gibt und dass man darin zeichnen kann, also entweder VISUAL_TESTER oder einfach im Terminal arbeiten.

Wenn ChartGetInteger(ChartID(),CHART_WINDOW_HANDLE) gibt ungültige Handle, dann sind wir in der Tester. (Oder vielleicht MQ VPS - ich habe es nicht berührt, ich weiß es nicht).

 
Maxim Kuznetsov #:

Dies mag für einige wie das falsche Thema erscheinen, aber es ist ganz einfach:

Wenn ChartID vernünftig ist, bedeutet das, dass es einen Platz in der GUI gibt und dass man darin zeichnen kann, also entweder VISUAL_TESTER oder einfach im Terminal arbeiten.

Wenn ChartGetInteger(ChartID(),CHART_WINDOW_HANDLE) gibt ungültige Handle, dann sind wir in der Tester. (Oder vielleicht MQ VPS - ich habe es nicht berührt, ich weiß es nicht).

Der Tester hat auch ein Diagramm, wenn auch ein virtuelles, so dass dies eine Sackgasse ist.

 
Andrey Dik #:

Der Tester hat auch ein Diagramm, wenn auch ein virtuelles, so dass es eine Sackgasse ist.

Ich habe Ihnen in diesem Thread geantwortet (die Fragen sind dieselben).

 
Andrey Dik #:

Hat irgendjemand eine Idee?

//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 #:

Ich habe Ihnen in diesem Thread geantwortet (dieselbe Frage).

Nun, Sie haben alle Rechte. Löschen, wo es nicht zum Thema gehört... Wo ist das Problem?