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

 
Vladislav Boyko #:

А DebugBreak() разве не сделает это при отладке на исторических данных?

(я не знаю, я не пользуюсь дебагером)

Я использовал слово "отладка" в широком смысле слова.

Указанной функцией так же не пользовался. Из описания она останавливает работу программы и не связана с интерфейсом визуального тестирования.

 
Aleksey Vyazmikin #:
Я бы лучше добавил функцию в язык MQL5, которая ставила бы на паузу визуализатор при нужных определённых условиях.
Stanislav Korotky #:
Для отладки было бы лучше сделать настраиваемые условия, - кому-то нужно не ближайший OnTrade, а сделка номер X, например, или срабатывание стоп-лосса.

Когда-то давно я программировал в VisualC++, там были условные точки останова - можно было задавать условия для остановки. было очень удобно. Но в MQ занимаются только оптимальностью компилятора, увы...

 
Edgar Akhmadeev #:

Когда-то давно я программировал в VisualC++, там были условные точки останова - можно было задавать условия для остановки. было очень удобно. Но в MQ занимаются только оптимальностью компилятора, увы...

есть же как в коде(зачемто), так и жестко так сказать в редакторе

 
lynxntech #:

есть же как в коде(зачемто), так и жестко так сказать в редакторе

Что есть? Условные точки остановки? Нет, только безусловные. Или я что-то пропустил?

Безусловная = остановить здесь.

Условная = остановить, если переменная * равна или ... (к примеру)

 
Edgar Akhmadeev #:

Что есть? Условные точки остановки? Нет, только безусловные. Или я что-то пропустил?

Безусловная = остановить здесь.

Условная = остановить, если переменная * равна или ... (к примеру)

в коде ты можешь создать условия для остановки, зачем только

 

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

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

fxsaber, 2025.05.14 10:58

Отладка ТС - это более широкое понятие, чем дебагер.

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

Я не знаю, на сколько сильно данные в визуализаторе будут отличаться от данных в момент останова. Если представить, что мне нужно остановить визуализацию при выполнении какого-то условия, то в голову сразу приходит что-то такое:

#ifdef _DEBUG
   if(someCondition())
      DebugBreak();
#endif 

Я не проверял, но по логике вещей, код внутри #ifdef не должен попасть в релизный билд.

Вопрос лишь в том, на сколько велико будет то несоответствие визуализатора.

 
Vladislav Boyko #:

Вопрос лишь в том, на сколько велико будет то несоответствие визуализатора.

Даже если будет соответствовать, кнопка перехода на ближайший OnTrade востребована для уже готовых EX5.

Вы просто анализируете правильность работы советника.

 
lynxntech #:

в коде ты можешь создать условия для остановки, зачем только

Не смогу сходу подтвердить (давно это было), поэтому замнём, но помню, что при отладке была необходимость задавать условия остановки, которые нельзя или неудобно было хардкодить. Например, для данных обстоятельств, условия, получаемые из окружения (GUI, терминал, тестер...), но недоступные из API.

 
Edgar Akhmadeev #:

Не смогу сходу подтвердить (давно это было), поэтому замнём, но помню, что при отладке была необходимость задавать условия остановки, которые нельзя или неудобно было хардкодить. Например, для данных обстоятельств, условия, получаемые из окружения (GUI, терминал, тестер...), но недоступные из API.

средней кнопкой в любом месте можно остановить код в редакторе,

ты меня расстраиваешь

 
Vladislav Boyko #:

Я не знаю, на сколько сильно данные в визуализаторе будут отличаться от данных в момент останова. Если представить, что мне нужно остановить визуализацию при выполнении какого-то условия, то в голову сразу приходит что-то такое:

Я не проверял, но по логике вещей, код внутри #ifdef не должен попасть в релизный билд.

Вопрос лишь в том, на сколько велико будет то несоответствие визуализатора.


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