Пройтись по всем графикам, на каждом посмотреть имя эксперта:
ChartGetString(id,CHART_EXPERT_NAME)
1. при запуске пробежать все открытые чарты (ChartFirst ChartNext), посмотреть нет-ли с тем-же символом и не запущен ли там одноименный эксперт (ChartGetString(CHART_EXPERT_NAME))
2. если есть, то пока не работать а повторить проверку через случайное время. Повторить трижды :-)
3. когда 3 попытки исчерпались, а ТОТ эксперт всё ещё есть значит он действительно есть, то громко кричим Alert и делаем харакири ExpertRemove
ситуация гонок всё-равно остаётся, но шанс что при старте терминала "убьются" оба эксперта минимален
может я опять не в тему - но работет эксперт или нет - можно узнать так
//+------------------------------------------------------------------+ //| rabotaet.mq5 | //| Copyright 2021, MetaQuotes Ltd. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2021, MetaQuotes Ltd." #property link "https://www.mql5.com" #property version "1.00" //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { Print("rabotaet"); //--- } //+------------------------------------------------------------------+
Да прошу прощения, а как сделать такую проверку на МТ4? ChartGetString(CHART_EXPERT_NAME) есть только под МТ5.
Вроде нет такого. Можно попробовать через сохранение шаблона функцией ChartSaveTemplate() и посмотреть, что в ней записано.
а как узнать если запущен советник на другом компьютере.
Допустим торгует советник по времени 3 часа в день сделок открытых нет.
я ставлю совтеника на другой комп (ВПС) и не знаю,, что друга копия запущена на старом ВПС. Как узнать ?
а как узнать если запущен советник на другом компьютере.
Допустим торгует советник по времени 3 часа в день сделок открытых нет.
я ставлю совтеника на другой комп (ВПС) и не знаю,, что друга копия запущена на старом ВПС. Как узнать ?
Установите отложку с комментарием (понятное дело подальше от цены) и анализируйте есть она или нет.

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Всем привет, какие еще существуют варианты, проверки что на установлена только 1 копия советника на чарт кроме глобальных переменных?
Сейчас у меня при инициализации ЕА проверяется ГП, если там 0, то значит первая копия, записываем 1 и советник работает, если загрузить еще 1 копию, соответственно при инициализации советник видит там 1, и выгружается, далее, при деинициализации туда пишем 0. Но дело в том, что при резком завершении работы (при выкл света например), советник не успевает записать 0, так как при аварии вызов OnDeinit не происходит. И после запуска терминала, глобальная переменная еще содержит информацию, что советник запущен, и при инициализации и проверке, получается что эта же копия проверяет, что уже что-то работает, и не запускается, потому что думает что советник уже работает, а по факту это старые данные после аварийного закрытия терминала. Надеюсь понятно написал. В общем вопрос, если ли какой-то другой способ узнать, что советник уже висит на чарте и работает.