Особенности языка mql5, тонкости и приёмы работы - страница 224

 
Maxim Kuznetsov #:

if (ChartID()!=0) {

    // Graphical chart presents
    // draws on it

}

что это значит? можно мысль развернуть?

 
Andrey Dik #:

что это значит? можно мысль развернуть?

Андрей, вообще не та ветка. В другой теме нужно такое выяснять.

 
Artyom Trishkin #:

Андрей, вообще не та ветка. В другой теме нужно такое выяснять.

почему не та? речь об особенности mql5, значит та. 
 
Andrey Dik #:

есть у кого какие мысли?

Может так попробовать?

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

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

есть у кого какие мысли?

Андрей, посмотрите пож-ста статью (Раздел 2. Режимы в MQL5), может поможет ))

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

что это значит? можно мысль развернуть?

может кому кажется что и не та ветка, но всё просто :

если ChartID отдаёт разумное - значит есть предназначенное ему место в GUI и он работает в нём можно рисовать, значит или VISUAL_TESTER или просто работа в терминале.

если при этом ChartGetInteger(ChartID(),CHART_WINDOW_HANDLE) возвращает невалидный хендл, значит при этом мы внутри тестера. (Или возможно MQ VPS - не трогал, не знаю)

 
Maxim Kuznetsov #:

может кому кажется что и не та ветка, но всё просто :

если ChartID отдаёт разумное - значит есть предназначенное ему место в GUI и он работает в нём можно рисовать, значит или VISUAL_TESTER или просто работа в терминале.

если при этом ChartGetInteger(ChartID(),CHART_WINDOW_HANDLE) возвращает невалидный хендл, значит при этом мы внутри тестера. (Или возможно MQ VPS - не трогал, не знаю)

в тестере тоже есть чарт, пусть и виртуальный, поэтому это тупиковый путь

 
Andrey Dik #:

в тестере тоже есть чарт, пусть и виртуальный, поэтому это тупиковый путь

Я тебе в той ветке ответил (наплодилось вопросов одинаковых)

 
Andrey Dik #:

есть у кого какие мысли?

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

Я тебе в той ветке ответил (наплодилось вопросов одинаковых)

Ну так у тебя все права есть. Удали там где не по теме… В чём проблема? 

Причина обращения: