Как перед запуском эксперта можно почистить данные (возможно оставшиеся) от его предыдущего запуска?
В начале OnInit() вызвать OnDeinit() или какую-то его часть, оформленную в виде функции. Вроде нет никакой проблемы...
Не могу осознать, что это даст. Написать функцию, удаляющую все эти лишние данные особых проблем нет. Вопрос в том, как сделать так, чтобы она вызвалась лишь перед самым первым запуском советника. Если я вставлю ее в OnDeint или в начале OnInit, она будет запускаться каждый раз при запуске этих функций и данные тогда будут удалятся постоянно.
Не могу осознать, что это даст. Написать функцию, удаляющую все эти лишние данные особых проблем нет. Вопрос в том, как сделать так, чтобы она вызвалась лишь перед самым первым запуском советника. Если я вставлю ее в OnDeint или в начале OnInit, она будет запускаться каждый раз при запуске этих функций и данные тогда будут удалятся постоянно.
Вы сами писали, что данные остаются по причине того, что OnDeinit не отработала. Следовательно с вызовом той функции из OnDeinit у Вас недолжно возникнуть проблем.
Ну, убирать за собой советник должен не на каждый запуск OnDeinit, а только при своей выгрузке. И эти события нумеруются через параметр int reason OnDeinit. Выгрузка там обрабатывается, а вот загрузка нового с нуля, нет.
Насчет приема со static переменной тоже не до конца понял. Как например это решит проблему, если терминал будет банально перезапущен с уже работающим советником?
Не могу осознать, что это даст. Написать функцию, удаляющую все эти лишние данные особых проблем нет. Вопрос в том, как сделать так, чтобы она вызвалась лишь перед самым первым запуском советника. Если я вставлю ее в OnDeint или в начале OnInit, она будет запускаться каждый раз при запуске этих функций и данные тогда будут удалятся постоянно.
Вы можете ввести контроль первого запуска через файл. Например, при запуске советник ищет файл GBPUSD.lock, если его нет - значит запуск первый. Далее создает этот файл и выполняет функцию чистки. Если файл есть - пропускает этот этап.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Как перед запуском эксперта можно почистить данные от его предыдущего запуска? Например, если по каким-то причинам (может просто аварийным), от предыдущего запуска остались глобальные переменные терминала, объекты на графике или его файлы. То есть эксперт выгрузился, а OnDeinit не сработал или сработал некорректно.
Понятно, что в идеальном случае, при самом первом запуске советника надо было бы просто проверить наличие этих самых данных и переменных и удалить их, но похоже определить этот самый первый запуск не представляется возможным, так как код вызываемый из самого эксперта подразумевает, что эксперт собственно уже запущен. А постановка самой задачи (удалить переменные и файлы от предыдущего запуска), не позволяет использовать и их.