не более одного советника

 

Привет всем !

надо перд установкой советника проверить что не установлен уже такой же на другом инструмент . По выставленным ордерам с Magic не совсем корректно 

 
Yerkin Sagandykov:

Привет всем !

надо перд установкой советника проверить что не установлен уже такой же на другом инструмент . По выставленным ордерам с Magic не совсем корректно 

можно перебрать чарты (см ChartFirst(), ChartNext()) и посмотреть что где запущено (ChartGetString(chartID,CHART_EXPERT_NAME))

есть нюансы :-) могут возникать гонки при загрузке терминала. Например два советника на разных чартах друг-друга найдут и самоубьются оба. Или не найдут друг-дружку потому-что идёт загрузка и не всё прогрузилось в базу

 
Yerkin Sagandykov:

Привет всем !

надо перд установкой советника проверить что не установлен уже такой же на другом инструмент . По выставленным ордерам с Magic не совсем корректно 

Добавить в советник идентификатор / флаг, который будет устанавливаться в глобальных переменных терминала.
При запуске советник проверяет флаг и принимает решение, поднимает флаг если он еще не поднят.
Если поднят - запуск запрещен. При деинициализации флаг опускается.

 
Maxim Kuznetsov #:

можно перебрать чарты (см ChartFirst(), ChartNext()) и посмотреть что где запущено (ChartGetString(chartID,CHART_EXPERT_NAME))

есть нюансы :-) могут возникать гонки при загрузке терминала. Например два советника на разных чартах друг-друга найдут и самоубьются оба. Или не найдут друг-дружку потому-что идёт загрузка и не всё прогрузилось в базу

Делать рандомную задержку проверки на копии ))

 
Alexey Volchanskiy #:

Делать рандомную задержку проверки на копии ))

не есть коненчо хороший вариант )

 
Grigori.S.B #:

Добавить в советник идентификатор / флаг, который будет устанавливаться в глобальных переменных терминала.
При запуске советник проверяет флаг и принимает решение, поднимает флаг если он еще не поднят.
Если поднят - запуск запрещен. При деинициализации флаг опускается.

рабочая вещь ? нюансов нет ?)

 
Maxim Kuznetsov #:

можно перебрать чарты (см ChartFirst(), ChartNext()) и посмотреть что где запущено (ChartGetString(chartID,CHART_EXPERT_NAME))

есть нюансы :-) могут возникать гонки при загрузке терминала. Например два советника на разных чартах друг-друга найдут и самоубьются оба. Или не найдут друг-дружку потому-что идёт загрузка и не всё прогрузилось в базу

Ну как они могут друг друга найти? Если вопрос поставлен «перед установкой советника…» значит проверка должна быть в OnInit() и при наличии такого, просто выгрузка и досвидание………

 
Yerkin Sagandykov #:

рабочая вещь ? нюансов нет ?)

Вариант рабочий. Из рекомендаций, скидывайте принудительно на диск GlobalVariablesFlush()  значение глобальной переменной.