Форум о заработке, инвестициях и криптовалюте - Показать сообщение отдельно - Вокруг программирования на MQL4
Показать сообщение отдельно
Старый 13.10.2013, 03:24   #7
DSG_UA
Новичок
 
Регистрация: 12.10.2013
Сообщений: 8
Вы сказали Спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
По умолчанию

Цитата:
Сообщение от Bobs Посмотреть сообщение
Нет, неправильно поняли. Задача в том, чтобы чтобы второй советник в обычном режиме прото страховал первый советник, а вот если первый перестанет работать (пропало электричество, интернет, завис компьютер, отключился VPS и т.п.), тогда второй включает торговый режим и работает.

Таким образом задача состоит в том, чтобы сделать обмен какими-то сигналами между двумя советниками на разных удаленных компютерах.
Поскольку, как мне кажется, единственное, что видят оба терминала (и, стало быть, оба советника) - это ордера, то путь к решению проблемы должен, думаю, лежать через открытие "вспомогательных" ордеров. Допустим, первый советник открывает отложенный ордер (с такими параметрами, чтобы он никогда не перешел в реальность (например, цена открытия позиции отстоит от текущей на пару тысяч пунктов). В поле комментариев этого ордера советник пишет "Sov1.1". Через минуту открывает еще один такой ордер - с комментарием "Sov1.2", а первый ордер закрывает. Еще через минуту - открывает с комментарием "Sov1.1", а с "Sov1.2" закрывает. И т.д. Таким образом, если первый советник работает, то в каждый данный момент времени есть отложенный ордер, открытый не более минуты назад, в поле комментариев которого есть символы Sov1. Второй советник постоянно проверяет, есть ли такой ордер. Если он видит, что такой ордер открыт более минуты назад, то он начинает работать (можно для надежности дать ему подождать минут пять, скажем). Можно, конечно, открывать, через минуту закрывать и снова открывать ОДИН вспомогательный отложенный ордер. Но это хуже, т.к. в один прекрасный момент первый советник отключится, закрыв вспомогательный ордер и не успев открыть следующий. И второй советник должен будет обрабатывать ситуацию отсутствия ордера с комментарием, содержащим Sov1. Тоже не трагично, конечно, но с двумя вспомогательными ордерами ему будет проще, т.к. уж один-то открытый вспомогательный ордер будет присутствовать всегда.

Советники в обоих терминалах одинаковые. Только первый должен открывать вспомогательные отложенные ордера с пометкой Sov1, а проверять наличие вспомогательного отложенного ордера, открытого менее минуты назад с пометкой Sov2. Если такой ордер есть, то первый советник не будет возвращать себе управление автоматически, а будет ждать, пока отключится второй советник. Ну, а советник во втором терминале открывает и проверяет соответственно Sov2 и Sov1.

Как мне кажется, это похоже на путь решения Вашей проблемы.
DSG_UA вне форума