Вопрос к программистам-как вы отлаживаете софт в MQL4

 
Насколько я понимаю, основные методы отладки в MQL это Print, Alert и Comment. Ну ещё в файл можно записать. Это уже не мало. Ну а если софт достаточно громоздкий? Как насчет отладки инклудов и библиотек? Только использовать их где-то и только через терминал?
 
begemot61 писал(а) >>
Насколько я понимаю, основные методы отладки в MQL это Print, Alert и Comment. Ну ещё в файл можно записать. Это уже не мало. Ну а если софт достаточно громоздкий? Как насчет отладки инклудов и библиотек? Только использовать их где-то и только через терминал?

Я инклуды отлаживал компилируя собственно эксперт (скрипт, индикатор). Программа содержит 20 000 строк, тем не менее, всё получилось. Важно, чтоб на момент компиляции присоединялся только один новый инклуд, кот. может содержать ошибки. То же с библиотеками.

В MQL 5 будут классы, будет возможна компиляция отдельного модуля.

Количество инклудов не может привышать 115 (или около того, точно не помню). От количества строк не зависит. Возможно, в последних версиях МТ4 это ограничение снято.

 

Спасибо. 

Т.е. Терминал-отладочная среда. Других простых и более гибких вариантов отладки (типа-симулятор) нет. 

А есть ли какой нибудь способ погонять по циклам, изменить переменную, продолжить до какой-то точки, опять изменить и т.д. 

Или всё тот же Alert?

Кстати, можно ли очищать Alert без перезапуска терминала?

 
begemot61 >>:
Насколько я понимаю, основные методы отладки в MQL это Print, Alert и Comment.
Ну ещё в файл можно записать. Это уже не мало. Ну а если софт достаточно громоздкий?
Как насчет отладки инклудов и библиотек? Только использовать их где-то и только через
терминал?

Знаю одного талантливого программиста он написал свой отладчик под MQL4

был у него в гостях он мне его показал, я был в восторге...

 
YuraZ >>:

Знаю одного талантливого программиста он написал свой отладчик под MQL4

был у него в гостях он мне его показал, я был в восторге...



Обидно.

Мне например классы как в С++ не нужны. А вот хороший отладчик не помешал бы никому.

 
begemot61 >>:

Мне например классы как в С++ не нужны. А вот хороший отладчик не помешал бы никому.

А интересно, можно будет каким-либо путем исхитриться использовать отладчик МТ5 для работы с кодами MQL4?

Мой брокер ой как не скоро переберется на МТ5, а жить-то хочется...

 

я вот такой функцией пользуюсь

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

 
ForexTools >>:

я вот такой функцией пользуюсь

можно писать простые и понятные конструкции в тексте вроде такой:

и в журнале увидеть читабельную строку:

Lot = 0.2 Stop = 0.0054

Для отладки под визуализатором Print меняется на Comment



Не понял чем 

Debug ( "Lot =",Lot, " Stop =",stop * Point )
отличается от того же 
Print ( "Lot =",Lot, " Stop =",stop * Point )


Где собака зарыта?

 
Scriptong >>:

Не понял чем отличается..

Аналогично.

 

сорри. упростил текст получилось действительно непонятно. на самом деле полный вариант был такой:

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 отладка откулючается

 
ForexTools >>:

сорри. упростил текст получилось действительно непонятно. на самом деле полный вариант был такой:

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);
}
Причина обращения: