Скачать MetaTrader 5

Функция эмуляции переинициализации советника или индикатора в тестере стратегий.

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Maxim Zaguzov
1468
Maxim Zaguzov  
Есть ли в тестере стратегий MT5 функция эмуляции переинициализации советника или индикатора. Зачем это нужно, думаю объяснять долго не стоит. Например, зависает компьютер, а Наш советник или индикатор после переиницилизации должен правильно подхватить все ордера, глобальные переменные, графические объекты... Без такой функции приходится теоретически всё предвидеть при написании программы и исправлять баги уже во время тестирования советника или индикатора на демо. Но ведь на демо нельзя ускорить время тестирования или начать тест заново. Хотя второе не так уж и принципиально, так как всегда можно закрыть ордера, удалить все графические объекты, очистить глобальные переменные и начать всё заново. Но всё же в тестере подобная функция должна ускорить этот процесс значительно, если её ещё не конечно!! Кто как считает? :)))) Может Мне одному пригодилась бы такая функция!?
Документация по MQL5: Графические объекты / ObjectsDeleteAll
Документация по MQL5: Графические объекты / ObjectsDeleteAll
  • www.mql5.com
Графические объекты / ObjectsDeleteAll - Документация по MQL5
Rashid Umarov
Админ
11993
Rashid Umarov  

Вы первые за много лет, кто спрашивает подобное. Любой советник просто по умолчанию должен уметь стартовать правильно при запуске.  И никакой готовой функции для этого не требуется.
Maxim Zaguzov
1468
Maxim Zaguzov  
Rosh:

Вы первые за много лет, кто спрашивает подобное. Любой советник просто по умолчанию должен уметь стартовать правильно при запуске.  И никакой готовой функции для этого не требуется.
Стартуют то советники и правда правильно... Но вот случился мини-форс-мажор: Мы закрыли случайно терминал или отключилась электроэнергия. Через какое-то время Мы запустили терминал по новой и, например, висевший советник на графике сразу же переинициализируется (ну или для Кого просто инициализируется по новой). И вдруг Нам важно время последней совершённой торговой операции, которую Мы храним в переменной, или графический объект, который Мы создали при первом запуске советника. Мы всё это попытались включить в функцию init() при написании кода, но забыли подстраховаться, проверить всё и допустили ошибку где-то в коде. Советник переинициализировался неправильно и в итоге это повлияло на его работу в дальнейшем...
Nikolay Demko
12499
Nikolay Demko  
MaxZ:
Стартуют то советники и правда правильно... Но вот случился мини-форс-мажор: Мы закрыли случайно терминал или отключилась электроэнергия. Через какое-то время Мы запустили терминал по новой и, например, висевший советник на графике сразу же инициализируется. И вдруг на важно время последней совершённой торговой операции, которую Мы храним в переменной, или графический объект, который Мы создали при первом запуске советника. Мы всё это включили в функции init(), но забыли подстраховаться и допустили ошибку где-то в коде. Советник инициализировался неправильно и в итоге это повлияло на его работу в дальнейшем...

Отрубите инет, запустите МТ, удалите с чарта советник.

А дальше подключаем инет и как штатный запуск.

Maxim Zaguzov
1468
Maxim Zaguzov  
На ATC помню, как некоторые Люди "кричали" после вынужденного перезапуска терминалов: "Мой советник столько информации накопил, столько переменных насчитал, а Вы взяли всё и сбросили... Я думал, что не будет перезапуска терминалов!!". Если, например, включить в тестер стратегий функцию эмуляции случайной переинициализации советника или индикатора, то тесты бы стали выглядеть немного интересней для некоторых советников (видны бы стали простои в такие-то моменты, висячие сделки или же вынужденные потери), а Авторам пришлось бы учитывать и этот нюанс при подготовке советника на ATC. Да это и так нужно учитывать повсеместно!! Согласитесь!? Не для всех советников конечно. Ведь не все советники держат в Себе подобную информацию... Показания с индикаторов хранить и запоминать не нужно, также всегда доступна история сделок и так далее. А некоторые Люди (более опытные и наученные Программисты) все необходимые значения сохраняют в глобальные переменные или же научились восстанавливать часть потерь, пробежавшись в советнике по истории. И такие Люди хорошо понимают, что такой мини-форс-мажор может произойти всегда и надо быть всегда готовым к переинициализации.
Nikolay Demko
12499
Nikolay Demko  
MaxZ:
На ATC помню, как некоторые Люди "кричали" после вынужденного перезапуска терминалов: "Мой советник столько информации накопил, столько переменных насчитал, а Вы взяли всё и сбросили... Я думал, что не будет перезапуска терминалов!!". Если, например, включить в тестер стратегий функцию эмуляции случайной переинициализации советника или индикатора, то тесты бы стали выглядеть немного интересней для некоторых советников (видны бы стали простои в такие-то моменты, висячие сделки или же вынужденные потери), а Авторам пришлось бы учитывать и этот нюанс при подготовке советника на ATC. Да это и так нужно учитывать повсеместно!! Согласитесь!? Не для всех советников конечно. Ведь не все советники держат в Себе подобную информацию... Показания с индикаторов хранить и запоминать не нужно, также всегда доступна история сделок и так далее. А некоторые Люди (более опытные и наученные Программисты) все необходимые значения сохраняют в глобальные переменные или же научились восстанавливать часть потерь, пробежавшись по истории. И такие Люди хорошо понимаю, что такой мини-форс-мажор может произойти всегда и надо быть всегда готовым к переинициализации.
Пишите переменные в файл. И сбрасывайте на диск.
Maxim Zaguzov
1468
Maxim Zaguzov  
Urain:

Отрубите инет, запустите МТ, удалите с чарта советник.

А дальше подключаем инет и как штатный запуск.

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


Urain:
Пишите переменные в файл. И сбрасывайте на диск.

Спасибо, Я не ищу выхода из этой ситуации... Я лишь предложил такую вот функцию и спросил мнение форума.

Пока были нужные мысли в голове, создал новую тему и всё расписал.

Rashid Umarov
Админ
11993
Rashid Umarov  
Обработка кодов ошибок позволит быстро локализовать проблемное место, и даже предотвратить некоторые ситуации.
ООП в MQL5 на примерах: обработка кодов ошибок и предупреждений
ООП в MQL5 на примерах: обработка кодов ошибок и предупреждений
  • 2010.05.04
  • KlimMalgin
  • www.mql5.com
В статье рассматривается пример создания класса для работы с кодами возврата торгового сервера и всеми ошибками, возникающими в процессе работы MQL-программы. После прочтения статьи, вы сможете сформулировать для себя начальное представление о том как работать с классами и объектами в MQL5. И в то же время у вас появится удобный инструмент для обработки ошибок, который в дальнейшем можно будет дорабатывать на свой вкус и цвет.
Maxim Zaguzov
1468
Maxim Zaguzov  
Rosh:

Обработка кодов ошибок позволит быстро локализовать проблемное место, и даже предотвратить некоторые ситуации.
Спасибо... Обработка ошибок - это правильное и нужное дело!
Konstantin Gruzdev
14193
Konstantin Gruzdev  
Я бы приветствовал появление подобной функции. Понятно, что можно самому устроить своего рода "crash test" для советника, но это всегда связано со множеством ручных действий и затратами дополнительного времени. Советник после нештатной ситуации должен восстановить не начальное состояние , а последний рабочий момент плюс отследить все изменения, которые успели произойти. Возможно, лучше сделать кнопку "crash test", когда советник или индикатор работает в режиме "отладка". Тогда можно отследить все "радости" прям в отладчике. 
Nazariy Stapyak
1744
Nazariy Stapyak  
Lizar:
Я бы приветствовал появление подобной функции. Понятно, что можно самому устроить своего рода "crash test" для советника, но это всегда связано со множеством ручных действий и затратами дополнительного времени. Советник после нештатной ситуации должен восстановить не начальное состояние , а последний рабочий момент плюс отследить все изменения, которые успели произойти. Возможно, лучше сделать кнопку "crash test", когда советник или индикатор работает в режиме "отладка". Тогда можно отследить все "радости" прям в отладчике. 
+1. новая функция ExpertReinit() пригодилась бы.
12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий