- Как подружить MT5 c прокси-серверами?
- Новая версия MetaTrader 4 Client Terminal 387 и MetaTrader 4 Data Center build 387
- OpenCl и инструменты для него. Отзывы и впечатления.
Насколько я понимаю, основные методы отладки в MQL это Print, Alert и Comment. Ну ещё в файл можно записать. Это уже не мало. Ну а если софт достаточно громоздкий? Как насчет отладки инклудов и библиотек? Только использовать их где-то и только через терминал?
Я инклуды отлаживал компилируя собственно эксперт (скрипт, индикатор). Программа содержит 20 000 строк, тем не менее, всё получилось. Важно, чтоб на момент компиляции присоединялся только один новый инклуд, кот. может содержать ошибки. То же с библиотеками.
В MQL 5 будут классы, будет возможна компиляция отдельного модуля.
Количество инклудов не может привышать 115 (или около того, точно не помню). От количества строк не зависит. Возможно, в последних версиях МТ4 это ограничение снято.
Спасибо.
Т.е. Терминал-отладочная среда. Других простых и более гибких вариантов отладки (типа-симулятор) нет.
А есть ли какой нибудь способ погонять по циклам, изменить переменную, продолжить до какой-то точки, опять изменить и т.д.
Или всё тот же Alert?
Кстати, можно ли очищать Alert без перезапуска терминала?
Насколько я понимаю, основные методы отладки в MQL это Print, Alert и Comment.
Ну ещё в файл можно записать. Это уже не мало. Ну а если софт достаточно громоздкий?
Как насчет отладки инклудов и библиотек? Только использовать их где-то и только через
терминал?
Знаю одного талантливого программиста он написал свой отладчик под MQL4
был у него в гостях он мне его показал, я был в восторге...
я вот такой функцией пользуюсь
void Debug(string p1="", string p2="", string p3="", string p4="", string p5="", string p6="", string p7="", string p8="", string p9="") { Print(p1+" "+p2+" "+p3+" "+p4+" "+p5+" "+p6+" "+p7+" "+p8+" "+p9); }
можно писать простые и понятные конструкции в тексте вроде такой:
Debug ( "Lot =",Lot, " Stop =",stop * Point )
и в журнале увидеть читабельную строку:
Lot = 0.2 Stop = 0.0054
Для отладки под визуализатором Print меняется на Comment
я вот такой функцией пользуюсь
можно писать простые и понятные конструкции в тексте вроде такой:
и в журнале увидеть читабельную строку:
Lot = 0.2 Stop = 0.0054
Для отладки под визуализатором Print меняется на Comment
Не понял чем
Debug ( "Lot =",Lot, " Stop =",stop * Point )отличается от того же
Print ( "Lot =",Lot, " Stop =",stop * Point )
Где собака зарыта?
сорри. упростил текст получилось действительно непонятно. на самом деле полный вариант был такой:
void Debug(int PrintMode, string p1="", string p2="", string p3="", string p4="", string p5="", string p6="", string p7="", string p8="", string p9="") { if(PrintMode == 1) Print(p1+" "+p2+" "+p3+" "+p4+" "+p5+" "+p6+" "+p7+" "+p8+" "+p9); if(PrintMode == 2) Comment(p1+"\n"+p2+"\n"+p3+"\n"+p4+"\n"+p5+"\n"+p6+"\n"+p7+"\n"+p8+"\n"+p9); }
PrintMode задается в параметрах и позволяет переключать один и тотже отладочный вывод в журнал либо в коментарий. Бывает весьма полезно при прогонах в режиме визуализатора. При = 0 отладка откулючается
сорри. упростил текст получилось действительно непонятно. на самом деле полный вариант был такой:
PrintMode задается в параметрах и позволяет переключать один и тотже отладочный вывод в журнал либо в коментарий. Бывает весьма полезно при прогонах в режиме визуализатора. При = 0 отладка откулючается
Тогда понятно, к чему все это. Действительно удобно, чтобы не подстраиваться каждый раз под быстрый тест или под визуализатор. Хотя еще проще так:
void Debug(string p1="", string p2="", string p3="", string p4="", string p5="", string p6="", string p7="", string p8="", string p9="") { if(IsTesting()) Print(p1+" "+p2+" "+p3+" "+p4+" "+p5+" "+p6+" "+p7+" "+p8+" "+p9); if(IsVisualMode()) Comment(p1+"\n"+p2+"\n"+p3+"\n"+p4+"\n"+p5+"\n"+p6+"\n"+p7+"\n"+p8+"\n"+p9); }
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования