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

 

Нашёл новый профилировщик совершенно бесполезным. Старый, возможно, имел неточности замера и влиял на исполнение кода, но давал много информации о времени исполнения операторов. Новый не показал ни одного оператора, а показал от 1 до 3 функций, первый из которых якобы имеет активность 100%, при том, что есть много функций гораздо более прожорливых. Основное время съедает iCustom, но об этом молчок.

Код старого профилировщика вырезан, или есть возможность его активировать?

 
Edgar Akhmadeev:

Нашёл новый профилировщик совершенно бесполезным. Старый, возможно, имел неточности замера и влиял на исполнение кода, но давал много информации о времени исполнения операторов. Новый не показал ни одного оператора, а показал от 1 до 3 функций, первый из которых якобы имеет активность 100%, при том, что есть много функций гораздо более прожорливых. Основное время съедает iCustom, но об этом молчок.

Код старого профилировщика вырезан, или есть возможность его активировать?

Код старого профилировщика вырезан

Возможно, что Вы недостаточное время тестировали код, чем больше данных соберёт новый профилировщик, тем точнее будет информация по затратам.

 
Смешно. Подключили основательно язык R а развивают основательно плохо подключенный Python, который еще и не планируется подключать
 
Ilyas:

Код старого профилировщика вырезан

Возможно, что Вы недостаточное время тестировали код, чем больше данных соберёт новый профилировщик, тем точнее будет информация по затратам.

Я об этом уже читал, поэтому тестировал эксперт на истории за 21 год OHLC M1. Это заняло около 3 минут. Как его тестировать больше? Нельзя же зациклить.

И смущает, что нет ни одного вызова или оператора. Только сами тела функций. Должны появляться?

 

Это ещё не конец. После завершённого до конца профилирования отладчик вообще перестал работать. Появляется сообщение "failed to load debug symbols" и идёт визуализация без остановок на BreakPoint. Не помогает ни удаление ex5, ни промежуточная перекомпиляция в Release, ни перезагрузка эксперта, ни компьютера (по другому поводу).

PS:  отладчик перестал работать только на этом эксперте.

 
Vladimir Karputov:

На примере такой конфигурации (кстати, эти трои строки Вы просто обязаны вставлять в пост)


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

На примере индикатора [data folder]\MQL5\Indicators\Examples\Accelerator.mq5, ставим точку останова в начале OnCalculate и ставим в отслеживание два значения: time[0] и time[rates_total-1].

Все работает:


Да действительно на простых небольших индикаторах,скриптах и советниках(не более 400-500строк кода) вы правы все работает как и ранее

если есть #include ... или текст с большим кол-вом строк кода-НЕ ОСТАНАВЛИВАЕТСЯ на точках останова .

вот простой индикатор ColorBBCandles.mq5 Nikolay Kositsine у него есть #include <SmoothAlgorithms.mqh>

ставим точку останова в начале OnCalculate и ставим в отслеживание два значения: time[0] и time[rates_total-1].пишет expression could not be evaluated

до этой версии ведь все большие программы отлаживались ОК.

 

failed to load debug symbolsведь не только у меня другие тоже пишут

и кроме того опция [сохранять личные настройки и данные при старте] не работает почему?

к выполнению кода претензий нет все работает как и ранее, претензии к отладчику

вот сейчас выкинул весь код(примерно 350 строк) из

OnCalculate  и ставим в отслеживание два значения: time[0] и time[rates_total-1].пишет как у  ColorBBCandles.mq5 Nikolay Kositsine  -- expression could not be evaluated ну хотя бы точки останова стали работать

вы попробуйте тяжелые(много кода свои индикаторы)  #include ... не так влияет на отладку

 

Индикатор Султонова - индикатор для MetaTrader 5

https://www.mql5.com/ru/code/32939 тоже самое как у ColorBBCandles.mq5 Nikolay Kositsine  -- expression could not be evaluated у него #include ... нет но много кода
Документация по MQL5: Общие функции / DebugBreak
Документация по MQL5: Общие функции / DebugBreak
  • www.mql5.com
DebugBreak - Общие функции - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 

2766

Компиляция индикатора привела к тому, что эдитор съел всю свободную оперативку (процессом было занято 7 с чем-то Гб) и виндоуз ругнулся:


Грохнул процесс, запустил заново, еще раз воспроизвелось. Потом начало выдавать "Internal compiler error" (при generating code 22%). Потом иногда опять жрало память.


Вот тако вот выглядит (первый раз увожу мышь, чтобы нажать Cancel, это не помогает, второй раз - жму крестик и "завершить процесс"):




 

Вот из лога советника после перезапуска терминала:

2021.01.28 01:57:57.607 test (USDCHF,M5)        Unhandled exception in '....ex5'
2021.01.28 01:57:57.607 test (USDCHF,M5)           crash -->  000000B53EC046D1 0F0B              ud2        
2021.01.28 01:57:57.607 test (USDCHF,M5)                      000000B53EC046D3 48B9108D6A4CB500  mov        rcx, 0xb54c6a8d10
2021.01.28 01:57:57.607 test (USDCHF,M5)                                       0000
2021.01.28 01:57:57.607 test (USDCHF,M5)                      000000B53EC046DD 48B82029D9E6F77F  mov        rax, 0x7ff7e6d92920
2021.01.28 01:57:57.607 test (USDCHF,M5)                                       0000
2021.01.28 01:57:57.607 test (USDCHF,M5)                      000000B53EC046E7 48BAF9010000BC00  mov        rdx, 0x2900bc000001f9
2021.01.28 01:57:57.607 test (USDCHF,M5)                                       2900
2021.01.28 01:57:57.607 test (USDCHF,M5)                      000000B53EC046F1 FFD0              call       rax
2021.01.28 01:57:57.607 test (USDCHF,M5)                      000000B53EC046F3 48BFB873C03EB500  mov        rdi, 0xb53ec073b8
2021.01.28 01:57:57.607 test (USDCHF,M5)                                       0000
2021.01.28 01:57:57.607 test (USDCHF,M5)                      000000B53EC046FD 488B8424CC000000  mov        rax, [rsp+0xcc]
2021.01.28 01:57:57.607 test (USDCHF,M5)        
2021.01.28 01:57:57.607 test (USDCHF,M5)        00: 0x000000B53EC046D1
2021.01.28 01:57:57.607 test (USDCHF,M5)        
 
Vladimir Karputov:

Код:


Внутри цикла стоит точка останова. Запускаю тестирование на исторических данных ( ), после останова продолжаю по кнопке  .

В чем вижу ошибку:

Массив rates, после копирования в него 'count' элементов становится массивом из трех элементов.

В чем вижу ошибку:

При отслеживании значения i-того элемента 'rates[i].time' его значение не отображается. А если сделать двойной клик, то это значение разворачивается как массив.


Спасибо за подробный отчёт об ошибке, исправлено