Caratteristiche del linguaggio mql5, sottigliezze e tecniche - pagina 224

 
Maxim Kuznetsov #:

if (ChartID()!=0) {

    // Graphical chart presents
    // draws on it

}

Cosa significa? Può spiegarlo meglio?

 
Andrey Dik #:

Cosa significa? Può spiegarlo meglio?

Andrew, questo è il thread sbagliato. Devi scoprirlo in un altro thread.

 
Artyom Trishkin #:

Andrew, questo è il thread sbagliato. Dovresti scoprire queste cose in un altro thread.

Perché non è quello sbagliato? Stiamo parlando delle peculiarità di mql5, quindi è quello giusto.
 
Andrey Dik #:

Qualcuno ha qualche idea?

Magari provando questo?

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

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

Qualcuno ha qualche idea?

Andrei, dai un'occhiata all'articolo (Sezione 2. Modi in MQL5), potrebbe essere utile )).

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

Cosa significa? Può spiegarlo meglio?

Ad alcuni potrebbe sembrare che questo non sia il ramo giusto, ma è semplice:

se ChartID dà un risultato ragionevole - significa che c'è un posto per esso nella GUI e funziona in esso è possibile disegnare, quindi o VISUAL_TESTER o semplicemente lavorare nel terminale.

Se ChartGetInteger(ChartID(),CHART_WINDOW_HANDLE) restituisce un handle non valido, allora siamo all'interno del tester. (O forse MQ VPS - non l'ho toccato, non lo so).

 
Maxim Kuznetsov #:

Ad alcuni potrebbe sembrare il filo conduttore sbagliato, ma è semplice:

se ChartID dà un risultato ragionevole, significa che c'è un posto per la GUI e che in essa si può disegnare, quindi o VISUAL_TESTER o semplicemente lavorare nel terminale.

Se ChartGetInteger(ChartID(),CHART_WINDOW_HANDLE) restituisce un handle non valido, allora siamo all'interno del tester. (O forse MQ VPS - non l'ho toccato, non lo so).

Anche il tester ha un grafico, anche se virtuale, quindi questo è un vicolo cieco.

 
Andrey Dik #:

Anche il tester ha un grafico, anche se virtuale, quindi è un vicolo cieco.

Ti ho risposto in quel thread (le domande sono le stesse).

 
Andrey Dik #:

Qualcuno ha qualche idea?

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

Ti ho risposto in quel thread (stessa domanda).

Beh, hai tutti i diritti. Cancellare dove è fuori tema... Qual è il problema?

Motivazione: