MetaEditor. Проблемы и решения. - страница 6

 
1
Liric86 2011.02.27 14:15 2011.02.27 14:15:10

Добрый день! После установки MQL5 столкнулся с дефектами отображения текстов программ при редактировании. Расположение текста меняется при выделении. Новые символы при наборе с клавиатуры появляются не в месте нахождения курсора. Переустановка ПО не помогает. Как можно решить данную проблему?



 
Подскажите можно ли использовать в торговле (советником) стакан заявок?
 
Liric86:

1
Liric86 2011.02.27 14:15 2011.02.27 14:15:10

Добрый день! После установки MQL5 столкнулся с дефектами отображения текстов программ при редактировании. Расположение текста меняется при выделении. Новые символы при наборе с клавиатуры появляются не в месте нахождения курсора. Переустановка ПО не помогает. Как можно решить данную проблему?

Вы выбрали не моноширинный шрифт.

Поставьте в настройках шрифт Courier New размером 10 пунктов, пожалуйста.

 
todem:
Подскажите можно ли использовать в торговле (советником) стакан заявок?

Можно, но только не в тестере торговых стратегий.

На текущий момент мало кто (есть у Альпари в тестовом режиме) предлагает стаканы на форексе.

 
Не хватает в отладчике счётчика шагов. И предустанавливаемого параметра делать первый брейк на заданном шаге.
 
Urain:
Не хватает в отладчике счётчика шагов. И предустанавливаемого параметра делать первый брейк на заданном шаге.

Брейки на данный момент безусловные, но можно обойти это ограничение используя DebugBreak()
Документация по MQL5: Общие функции / DebugBreak
Документация по MQL5: Общие функции / DebugBreak
  • www.mql5.com
Общие функции / DebugBreak - Документация по MQL5
 
mql5:
Брейки на данный момент безусловные, но можно обойти это ограничение используя DebugBreak()

Всё так, но вот столкнулся с ситуацией когда в коде много вызовов одного универсального класса описанного на подключаемом файле. И при разных условиях происходят обращения к несуществующим ячейкам массива этого класса. В самой программе происходят тысячи шагов алгоритма, поэтому отследить на каком шаге происходит сбой с помощью DebugBreak()+F11 очень сложно.

Я конечно вышел из ситуации старыми методами(принтами и логическими догадками). Но стоимость этого, много часов работы. Главная проблема была не в том какая функция даёт ошибку, а в том какая функция не правильно расчитывает значение которое потом приводит в другой функции к ошибке. То есть нужна была не сама точка ошибки, а знание что происходило непосредственно перед этим.

Вот для этого и нужен штатный трассировщик по шагам и возможность сразу после нового запуска (промотав все предыдущие) идти на указанный шаг.

 
Я имел ввиду такую конструкцию:

if(step==123124) DebugBreak();
 
mql5:

Я имел ввиду такую конструкцию:

if(step==123124) DebugBreak();


Да я тоже как раз о ней. Запихнуть её на каждую строку пятитясячного кода проблемка. А промежуточная локализация не давало результатов так как обращение постоянно прыгает между инклюдниками, поэтому сначало грубо оценить чтоб потом более точно локализовать не получалось.

Я описал вот такую перегрузку вначале файла:

ulong cntDebugBreak=0;
void DebugBreak(ulong step)
  {
   if(step>=cntDebugBreak){cntDebugBreak++;DebugBreak();}
   else cntDebugBreak++;
  }

но если бы вызов её стоял невидимо(штатно в отладчике), перед каждым выражением было бы очень здорово.

PS поправил код.

 

В метаедиторе 4 было гениальное решение по расположению справки в окне инструментов, справка всегда была под рукой прямо в окне редактирования текста. Можно ли также поместить окно справки в метаэдиторе 5?

Причина обращения: