Всем привет! В MQL я новичок.
Не могу разобраться как отлаживать свои советники и другие скрипты. Дело в том, что при запуске отладки, советник прилепляется к указанной паре и данные поступают в реальном времени. Ждать отлаживаемое событие, которое произойдет в лучшем случае раз в день, с вылупленными глазами не реально, что делать? Можно ли как-то запустить режим отладки в тесте на исторических данных? Как это делается?
Насколько я знаю, нет - нельзя. Жду сей фичи несколько лет с самого момента появления отладчика.
А как вообще тогда отлаживать? Как отладить события OnTester Init Pass и Deinit?
Print
А вообще есть хорошая статья на тему отладки программного кода на MQL5
https://www.mql5.com/ru/articles/654
- 2013.03.01
- Nikolay Demko
- www.mql5.com
Используйте
А вообще есть хорошая статья на тему отладки программного кода на MQL5
https://www.mql5.com/ru/articles/654
Спасибо за ответ! эту статью я вчера нашел сразу. Но так отлаживать я не хочу :))) Функцию Print для отладки в последний раз я использовал еще в школе в 9 классе когда прогали на Квик Бесике, с тех пор прошло 14 лет =)
Реально подумываю написать просто скрипт который будет записывать бинарный файл с историческими данными, и написать тестер и робота на дельфях. проверять через собственную прогу.
Спасибо за ответ! эту статью я вчера нашел сразу. Но так отлаживать я не хочу :))) Функцию Print для отладки в последний раз я использовал еще в школе в 9 классе когда прогали на Квик Бесике, с тех пор прошло 14 лет =)
Реально подумываю написать просто скрипт который будет записывать бинарный файл с историческими данными, и написать тестер и робота на дельфях. проверять через собственную прогу.
Все таки быстрее будет отладка через Print :) А в принципе можно написать свой логер и использовать его.
Для отладки mql4 до 509 билда я пользовался функцией:
void BP(string txt = "", string p11 = "", string p12 = "", string p21 = "", string p22 = "", string p31 = "", string p32 = "", string p41 = "", string p42 = "", string p51 = "", string p52 = "", string p61 = "", string p62 = "", string p71 = "", string p72 = "", bool useDebug = true ){ /* >Ver : 0.0.4 >Date : 2013.04.25 >History: @0.0.4@2013.04.25@artamir [] BP @0.0.3@2012.10.08@artamir [] @0.0.2@2012.06.25@artamir [+] useDebug = проверка на разрешение вызова модальной формы @0.0.1@2012.06.25@artamir [] >Description: Break poinT_ Use with vizualization. */ //-------------------------------------------------- if(!useDebug) return; //-------------------------------------------------- //if(!Debug) return; //-------------------------------------------------- string strOutput = StringConcatenate( p11,p12,"\n", p21,p22,"\n", p31,p32,"\n", p41,p42,"\n", p51,p52,"\n", p61,p62,"\n", p71,p72,"\n"); static int flOK = 1; if(flOK == 1){ flOK = MessageBoxA(WindowHandle(Symbol(),0), strOutput, txt, MB_OKCANCEL); return; }else{ return; } }
Но она требует включения в код WinUser32.mqh и разрешения вызова функций dll в терминале.
Но она требует включения в код WinUser32.mqh и разрешения вызова функций dll в терминале.
Да, я так и понял. Спасибо за совет.
- голосов: 1
- 2009.08.26
- Stanislav Korotky
- www.mql5.com
Я как-то начинал такую фигню делать (https://www.mql5.com/ru/code/9151), но забросил, наивно полагая, что вот-вот будет нормальный отладчик. Кроме того, сама по себе идея ущербная - пытаться ваять вещи на уровне ядра МТ вместо самих МК. Сизифов труд.
Да, я и говорю отладчик в MQL это дебилизм какой-то, что он есть, что его нет... "используй Print" - единственный способ отладки. Думаю делать так:
1) Скриптом выгружать историю в файлы;
2) Писать стратегии на Delphi и оборачивать их в DLL;
3) Написать тестер и проводить оптимизацию используя выгруженные файлы;
4) Через советника в событии OnTick вызывать стратегию.
TO Разработчикам MQL Тут сразу вопрос будет как быстро выполняется вызов пустой (без кода) функции из DLL из события OnTick?
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Всем привет! В MQL я новичок.
Не могу разобраться как отлаживать свои советники и другие скрипты. Дело в том, что при запуске отладки, советник прилепляется к указанной паре и данные поступают в реальном времени. Ждать отлаживаемое событие, которое произойдет в лучшем случае раз в день, с вылупленными глазами не реально, что делать? Можно ли как-то запустить режим отладки в тесте на исторических данных? Как это делается?