МТ4: Как определить, что эксперт уже запущен?

 

Подскажите, пожалуйста, как из эксперта определить, что он уже запущен на другом чарте?

Для МТ5 я знаю как это сделать. Нужен способ для МТ4.

 
Boris.Kurbin:

Подскажите, пожалуйста, как из эксперта определить, что он уже запущен на другом чарте?

Для МТ5 я знаю как это сделать. Нужен способ для МТ4.

так же

команды одни и те же

 
Renat Akhtyamov:

так же

команды одни и те же

В МТ5 используется команда ChartGetString(chart_id, CHART_EXPERT_NAME).

В МТ4 она не работает.

 
Boris.Kurbin:

В МТ5 используется команда ChartGetString(chart_id, CHART_EXPERT_NAME).

В МТ4 она не работает.

может быть у Вас chart_id не лонг?

https://www.mql5.com/ru/docs/chart_operations/chartid

Документация по MQL5: Операции с графиками / ChartID
Документация по MQL5: Операции с графиками / ChartID
  • www.mql5.com
Операции с графиками / ChartID - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Renat Akhtyamov:

может быть у Вас chart_id не лонг?

https://www.mql5.com/ru/docs/chart_operations/chartid

CHART_EXPERT_NAME - такой константы в МТ4 нет.
 
Boris.Kurbin:
CHART_EXPERT_NAME - такой константы в МТ4 нет.

да, перерыл счас всё.

нету....

остается только как нибудь заявить эксперту о себе при загрузке, с указанием чарта

а другому проверить

при выгрузке тоже самое

init/deinit

 
Renat Akhtyamov:

да, перерыл счас всё.

нету....

остается только как нибудь заявить эксперту о себе при загрузке, с указанием чарта

а другому проверить

У меня тоже нет пока другого варианта.

Эксперт при инициализации должен ставить некий флаг, а при деинициализации снимать. 

Минус этого варианта в том, что при аварийном завершении терминала флаг останется.

Поэтому пытаюсь найти оптимальное решение, вроде того, что для МТ5.


Основная идея в том, чтобы в терминале работала только одна копия эксперта.

 
Boris.Kurbin:

У меня тоже нет пока другого варианта.

Эксперт при инициализации должен ставить некий флаг, а при деинициализации снимать. 

Минус этого варианта в том, что при аварийном завершении терминала флаг останется.

Поэтому пытаюсь найти оптимальное решение, вроде того, что для МТ5.


Основная идея в том, чтобы в терминале работала только одна копия эксперта.

Как вариант - выгрузить другого эксперта при загрузке копии
 
Renat Akhtyamov:
Как вариант - выгрузить другого эксперта при загрузке копии

Чтобы его выгрузить надо сначала определить, что он есть.

 
Boris.Kurbin:

Чтобы его выгрузить надо сначала определить, что он есть.

Вот и два варианта - флаг потереть и выгрузить

Даже если флаг лажовый... всё равно два действия

Делов то..

 
Renat Akhtyamov:

Вот и два варианта - флаг потереть и выгрузить

Даже если флаг лажовый...

Делов то..

На самом деле выгрузить мне не подходит.

Мне нужно, чтобы при попытке запустить вторую копию эксперта, он сообщил об этом и ничего не делал.

Причина обращения: