Функция эмуляции переинициализации советника или индикатора в тестере стратегий.
- www.mql5.com
- [ВНИМАНИЕ, ТЕМА ЗАКРЫТА!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда.
- Пожелания для МТ5
- Посоветуйте решение для тестирования в МТ5 с поддержкой графических инструментов?
Вы первые за много лет, кто спрашивает подобное. Любой советник просто по умолчанию должен уметь стартовать правильно при запуске. И никакой готовой функции для этого не требуется.
Вы первые за много лет, кто спрашивает подобное. Любой советник просто по умолчанию должен уметь стартовать правильно при запуске. И никакой готовой функции для этого не требуется.
Стартуют то советники и правда правильно... Но вот случился мини-форс-мажор: Мы закрыли случайно терминал или отключилась электроэнергия. Через какое-то время Мы запустили терминал по новой и, например, висевший советник на графике сразу же инициализируется. И вдруг на важно время последней совершённой торговой операции, которую Мы храним в переменной, или графический объект, который Мы создали при первом запуске советника. Мы всё это включили в функции init(), но забыли подстраховаться и допустили ошибку где-то в коде. Советник инициализировался неправильно и в итоге это повлияло на его работу в дальнейшем...
Отрубите инет, запустите МТ, удалите с чарта советник.
А дальше подключаем инет и как штатный запуск.
На ATC помню, как некоторые Люди "кричали" после вынужденного перезапуска терминалов: "Мой советник столько информации накопил, столько переменных насчитал, а Вы взяли всё и сбросили... Я думал, что не будет перезапуска терминалов!!". Если, например, включить в тестер стратегий функцию эмуляции случайной переинициализации советника или индикатора, то тесты бы стали выглядеть немного интересней для некоторых советников (видны бы стали простои в такие-то моменты, висячие сделки или же вынужденные потери), а Авторам пришлось бы учитывать и этот нюанс при подготовке советника на ATC. Да это и так нужно учитывать повсеместно!! Согласитесь!? Не для всех советников конечно. Ведь не все советники держат в Себе подобную информацию... Показания с индикаторов хранить и запоминать не нужно, также всегда доступна история сделок и так далее. А некоторые Люди (более опытные и наученные Программисты) все необходимые значения сохраняют в глобальные переменные или же научились восстанавливать часть потерь, пробежавшись по истории. И такие Люди хорошо понимаю, что такой мини-форс-мажор может произойти всегда и надо быть всегда готовым к переинициализации.
Отрубите инет, запустите МТ, удалите с чарта советник.
А дальше подключаем инет и как штатный запуск.
Это понятно... Сейчас Я так и делаю. Но это не всегда удобно. Примера подходящего привести не могу. Я столкнулся с этим недавно. До этого все Мои советники были простыми. А сейчас просто забыл о том, что один из Моих советников можете переинициализироваться ведь и расчёт переменных начнётся заново.
Пишите переменные в файл. И сбрасывайте на диск.
Спасибо, Я не ищу выхода из этой ситуации... Я лишь предложил такую вот функцию и спросил мнение форума.
Пока были нужные мысли в голове, создал новую тему и всё расписал.
- 2010.05.04
- KlimMalgin
- www.mql5.com
Обработка кодов ошибок позволит быстро локализовать проблемное место, и даже предотвратить некоторые ситуации.
Я бы приветствовал появление подобной функции. Понятно, что можно самому устроить своего рода "crash test" для советника, но это всегда связано со множеством ручных действий и затратами дополнительного времени. Советник после нештатной ситуации должен восстановить не начальное состояние , а последний рабочий момент плюс отследить все изменения, которые успели произойти. Возможно, лучше сделать кнопку "crash test", когда советник или индикатор работает в режиме "отладка". Тогда можно отследить все "радости" прям в отладчике.