Скачать MetaTrader 5

Глобальные переменные терминала и тестер стратегий

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Изучаешь MQL5? Начни с документации!
Forex Trader
114257
Forex Trader 2006.08.17 06:51 
Хотелось бы обратить внимание разработчиков на следующую неприятную особенность тестера при работе с глобальными переменными терминала.
Во-первых, при тестировании стратегии, которая работает с глобальными переменными терминала, происходит ИЗМЕНЕНИЕ ТЕКУЩИХ РЕАЛЬНЫХ ГЛОБАЛЬНЫХ ПЕРЕМЕННЫХ ТЕРМИНАЛА, что очень неудобно. А если в этот момент времени работает на реале тот же самый советник, который использует те же самые глобальные переменные, то высока вероятность сбоев в его работе (выставление неправильных ордеров). Я конечно же вовремя это заметил и принял соответствующие меры (больше на рабочем терминале стратегии не тестирую).
Во-вторых, если первую проблему решить нет технической возможности, то уж сделать чтобы глобальные переменные по окончанию (или прекращению) тестирования возвращались в первоначальное значение, которое они имели до момента старта тестера стратегий, уж наверное сделать можно?
Хотелось бы узнать мнение разработчиков на этот счёт.
Билд 195 (liveupdate от 30.06.2006)
Forex Trader
114257
Forex Trader 2006.08.17 16:12  
Для того, чтоб тесты не мешали реальной работе, есть функция IsTesting().
А глобальные переменные - это единственный мостик между тестами и реальностью. Без них было бы сложно реализовать некоторые идеи, связанные с тестированием ;)
MetaQuotes Software Corp.
Модератор
181346
MetaQuotes Software Corp. 2006.08.17 16:54  
Мы подумаем над разделением глобальных переменных в тестере.
Forex Trader
114257
Forex Trader 2006.08.17 17:19  
Для того, чтоб тесты не мешали реальной работе, есть функция IsTesting().

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

Мы подумаем над разделением глобальных переменных в тестере.

Будем ждать новых исправлений в грядущих билдах.
Forex Trader
114257
Forex Trader 2006.08.17 17:26  
Можно продублировать второй набор глобальных переменных исключительно для целей бектеста. ТИпа ,
if (IsTesting()) 
{
// работа с одним набором глю переменных
}
else 
{
// работа с другим набором гл. переменных
}


И никаких пересечений. Этот вариант уже предлагался где-то на форуме раньше.

Forex Trader
114257
Forex Trader 2006.08.17 17:37  
А массив может быть глобальным?
Forex Trader
114257
Forex Trader 2006.08.17 17:49  
Нет, но есть обходные пути :)
Forex Trader
114257
Forex Trader 2006.08.17 18:29  
Но глобальные переменные не отключить таким образом.
Почему?

Я их использую исключительно в целях восстановления системы после выключения питания, чтобы система знала расчётные значения например за последние несколько баров без дополнительного (постоянного) пересчёта.
Какое может быть отключение питания при тесте? В МТ 4 ещё нет симулятора уборщицы ;)


Я тоже тспользую гл. п. для восстановления работы эксперта, но при тесте я использую обычные переменные, объявленные на глобальном уровне.
Forex Trader
114257
Forex Trader 2006.08.17 18:54  
Конечно же обходных путей море. И самый лучший из них просто не тестировать советника на рабочем терминале ;o)! Но если разработчики смогут довести тестер так как и для других составляющих типа отдельного экаунта, то это будет в любом случае самым рациональным решением.
Forex Trader
114257
Forex Trader 2006.08.17 18:59  
Rosh: "Нет, но есть обходные пути :)"

И где смотреть про эти пути?
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий