Новая версия платформы MetaTrader 5 build 5430: Улучшенные графики на движке Blend2D - страница 30

 

Для протокола.

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Робот создает много индикаторов при переключении таймфреймов.

Stanislav Korotky, 2025.12.27 18:39

Покопался в проблеме. Слегка модифицированные под себя исходники прикладываю. Логи тоже. Решение тоже.

Внимание! Присутствует баг терминала.

Примерное понимание - такое. Если тиков нет (они редко приходят) или переключение таймфреймов происходит очень быстро (до прихода очередного тика), терминал НЕ ТОРОПИТСЯ делать OnInit создаваемого индикатора. Единственное, что может его пошевелить - и это решение проблемы - холостой вызов CopyBuffer сразу после получения хендла в эксперте.

Это решение имеет один побочный минус - подокно индикатора появляется с заметной задержкой. Сами решайте - кому что важнее.

А теперь конкретно - БАГ. Если делать переключение таймфрейма в промежуток времени между тем, как мы заказали создание индикатора и его OnInit (то есть он не то что ещё не завершен, а точнее даже не начат из-за "неторопливости"), то последующая инициализация его происходит для нового таймфрейма и БЕЗ проверки того, что экземпляр этого же индикатора с точно такими же параметрами и новым таймфреймом уже есть (закешированная копия, которая в виде расчетной части остается в терминале на всякий случай, некоторое время до истечения таймаута неиспользования индикатора). Скорее всего, такая проверка стоит в терминале перед вызовом OnInit, но происходит для старого таймфрейма. Когда же приходит тик, а таймфрейм графика уже сменился, OnInit вызывается для нового таймфрейма. В результате получаются либо задвоенные полностью идентичные индюки (если пришел тик) или один из экземпляров остается висеть непроинициализированным (если меняем ТФ до тика), то есть он сам себе не установил еще нужный shortname.

В логах смотрите контекстные комментарии после двойной косой черты.

В эксперте определите макрос SHOW_ME_BUG, чтобы увидеть проблему.


 
2025.12.29 18:55:58.496 Custom Indicator loading of I (EURUSD,H1) from C:\Users\genin\AppData\Roaming\MetaQuotes\Terminal\CF89AB30ACB6DA0DBA14DA647C3517F8\MQL5\Indicators\I.ex5 failed [539]  по этому пути индикатор есть

Если создать индикатор не важно какой даже пустой, скомпилировать и кинуть на график получаю такую ошибку.

билд 5488

Терминал от брокера, чистый установлен с 0.

С советниками все нормально, устанавливаются на график

 
Evgeny Belyaev #:
2025.12.29 18:55:58.496 Custom Indicator loading of I (EURUSD,H1) from C:\Users\genin\AppData\Roaming\MetaQuotes\Terminal\CF89AB30ACB6DA0DBA14DA647C3517F8\MQL5\Indicators\I.ex5 failed [539]  по этому пути индикатор есть

Если создать индикатор не важно какой даже пустой, скомпилировать и кинуть на график получаю такую ошибку.

билд 5488

Терминал от брокера, чистый установлен с 0.

С советниками все нормально, устанавливаются на график

 
Vitaly Muzichenko #:

спасибо.
 

"тельняшка" что-то обозначает, или это просто глюк терминала ?

 
Maxim Kuznetsov #:

"тельняшка" что-то обозначает, или это просто глюк терминала ?

Даты посмотрите там, где разделители периодов слились воедино.
 

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Новая версия платформы MetaTrader 5 build 5370: улучшения в веб-версии

fxsaber, 2025.12.15 16:46

b5440, получаю краш терминала с такой записью в логе.
MQ      2       18:43:40.256    Terminal        crashlog generated

Но в папке AppData\Roaming\MetaQuotes\Crashes пусто (и ДО запуска Терминала). 

b5488, шаги для воспроизведения бага с крашем.

  1. Закрыть все чарты.
  2. ToolBox-окно (CTRL+T) растянуть (по вертикали) на весь экран и закрыть.
  3. Tester-окно (CTRL+R) растянуть (по вертикали) на весь экран и закрыть.
  4. Открыть чарт графика и нажать на его кнопку Maximize (если он не открыт на всю доступную область).
  5. Нажать в любой последовательности CTRL+T и CTRL+R.
 

Поясните плиз следующее поведение (ранее с таким не сталкивался).

Имеется эксперт. Мы его прооптимизировали, затем запускаем одиночный проход двойным кликом из таблицы оптимизации. Получаем конкретный результаты для правильных входных параметров.

Для доп.проверки (с тестером никогда ни в чем нельзя быть уверенным, см. далее) запускаем одиночный проход вручную - убеждаемся, что входные параметры остались прежними и результаты совпадают с предыдущими.

В МетаЕдиторе, в настройках Отладки которого НЕ стоит использовать какие-либо специфические настройки (т.е. предполагается, что будут использоваться текущие настройки тестера), запускаем этот же эксперт из-под отладчика.

В результате незнамо откуда подхватываются левые входные параметры, и получаем левые результаты.

Отладка без визуализации.

Никаких подходящих tpl-файлов (вроде tester.tpl) в шаблонах нет, set-файлов в Profiles/Tester нет, зато там есть файл типа ExpertName.symbol.tf.start.stop.ini - в нем лежат правильные настройки, и он не меняется при запуске из-под отладчика.

Итак вопрос - откуда берутся левые входные параметры? Как добиться запуска дебаггера на текущих параметрах в тестере?

 
Stanislav Korotky #:

Итак вопрос - откуда берутся левые входные параметры? Как добиться запуска дебаггера на текущих параметрах в тестере?

Дополнение. Любая перекомпиляция, а не только под отладчиком, устанавливает некоторые параметры в какие-то левые значения. Причем было бы еще относительно понятно (но неудобно), если бы параметры сбрасывались на значения по умолчанию, но тогда бы это должно было происходить со всеми параметрами, а меняются только некоторые. Кроме того, левые значения не равны значениям по умолчанию.

NB. Состав и типы параметров не меняются. Только эксперт перекомпилируется.

 
Stanislav Korotky #:

Дополнение. Любая перекомпиляция, а не только под отладчиком, устанавливает некоторые параметры в какие-то левые значения. Причем было бы еще относительно понятно (но неудобно), если бы параметры сбрасывались на значения по умолчанию, но тогда бы это должно было происходить со всеми параметрами, а меняются только некоторые. Кроме того, левые значения не равны значениям по умолчанию.

NB. Состав и типы параметров не меняются. Только эксперт перекомпилируется.

Тоже интересует этот вопрос. У меня отладчик запускается с параметрами, установленными в эксперте по умолчанию. Приходится для проверки заданных параметров изменять значения параметров в коде. Их отладчик и подхватывает, несмотря на то, что до запуска отладки во вкладке "Входные параметры" были указаны другие значения для каждого параметра.