Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
На самом деле выгрузить мне не подходит.
Мне нужно, чтобы при попытке запустить вторую копию эксперта, он сообщил об этом и ничего не делал.
Тогда метку в оперативной памяти
Я не умею такое, но на форуме где-то есть
Тогда метку в оперативной памяти
Я не умею такое, но на форуме где-то есть
Смотрите. Допустим я сохранил где-то на каком чарте у меня запущен эксперт. Потом терминал у меня аварийно завершился.
Метка с ID чарта у меня осталась, он ее не стер при деинициализации. Не понятно как мне потом проверить действительно ли на этом чарте работает эксперт.
при запуске эксперт создает в терминале глобальную переменную, остальные копии проверяют есть ли эта переменная, если есть - значит выходим, если нет - создаем и запускаемся
при деинциализации переменную удалять
при запуске эксперт создает в терминале глобальную переменную, остальные копии проверяют есть ли эта переменная, если есть - значит выходим, если нет - создаем и запускаемся
при деинциализации переменную удалять
Если терминал аварийно завершит работу, то переменная останется. Что делать в этом случае?
Конечно можно в метку писать текущее время и постоянно ее обновлять, но какой-то это странный способ, через задний проход.
Только хотел этот способ написать, т. к. сам его использую. Правда, у меня два отличия:
Только хотел этот способ написать, т. к. сам его использую. Правда, у меня два отличия:
Похоже, что другого способа нет.
при запуске эксперт создает в терминале глобальную переменную, остальные копии проверяют есть ли эта переменная, если есть - значит выходим, если нет - создаем и запускаемся
при деинциализации переменную удалять
Это уже обсуждалось недавно: https://www.mql5.com/ru/forum/228820 Только нужно создавать временную глобальную переменную. Тогда не страшны проблемы с крахом терминала.
Создавайте временную глобальную переменную с именем содержащим ChartId. Например "MY_EA_WORKING_<ChartId>"
В содержимое раз в секунду кладите текущее время.
ChartId всех графиков можно определить из любого эксперта. Перебираете соответствующие глобальные переменные и видите, где есть работающие эксперты.
Если даже эксперт упадет из-за ошибки - переменная есть, но по содержимому видно, что эксперт не работает.
При проверке необходимо учитывать небольшое запаздывание между выполнением экспертов на разных графиках и подтормаживание компьютера. По опыту приходится ставить 4-6 секунд, иначе при пиковой загрузке компьютера иногда можно посчитать, что проверяемого эксперта нет.
Подскажите, пожалуйста, как из эксперта определить, что он уже запущен на другом чарте?
Для МТ5 я знаю как это сделать. Нужен способ для МТ4.