|
07.06.2013, 18:48 | #1 |
Интересующийся
Регистрация: 13.10.2012
Сообщений: 9
Вы сказали Спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
|
Есть проблема.
Когда работает советник, к примеру на VPS, и его копию запустить из другого места на тот же счет - случаются весьма плачевные последствия, т.к. из двух разных терминалов одновременно может быть открыто по ордеру, т.е. в результате получится 2 ордера. Особенно тяжелые случаи бывают при использовании мартингейла. Тогда объемы растут мгновенно и происходит самое неприятное. Нужны идеи - как программно выполнить контроль, что работает только одна копия советника на текущем счете. |
10.06.2013, 11:14 | #2 | |
Специалист
Регистрация: 15.09.2012
Сообщений: 919
Вы сказали Спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
|
Цитата:
Помогите доработать советник! Помощь по реализации написания продуктов в коде MQL Ну а по теме: выложите туда свой советник. А мы вам попробуем подсказать. В чём суть. Может код не очень продуманный. Например прописаное открыть сделку как только совтеник будет прикреплён к графику. Тогда действительно каждый раз когда будете советник запускать он будет открывать вам сделку. А можно допустим запрограммировать открывать только одну сделку на счету. Чтоб не было одновременно открытых две и больше. Тогда сколько бы не вешали советник, всегда будет только работать по одному принципу. Это действительно хорошо тем, что еслу у вас на компьютере неполадкт с интернетом, то на vps советник подхватывает сделки и ведёт их контроль. И в обратном случае. |
|
10.06.2013, 14:33 | #3 |
Интересующийся
Регистрация: 13.10.2012
Сообщений: 9
Вы сказали Спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
|
Спасибо, но это не подходит. Код продуман. Выкладывать не буду, потому что это программа для заказчика.
Здесь нужно придумать способ обмена информацией между двумя удаленными терминалами, обслуживающими один и тот же счет. Боюсь что здесь средствами только MQL не обойтись, но может быть есть какие-то решения через WinAPI ... |
10.06.2013, 15:41 | #4 | |
Специалист
Регистрация: 15.09.2012
Сообщений: 919
Вы сказали Спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
|
Цитата:
Допустим у нас имеется два терминала. И каждый ждёт сигнала чтобы открыть сделку. То что я предлагал вам. Чтоб каждый искал сигнал и открывал сделку если второй её по какой-то из технических причин не смог открыть. А как я понял... вы хотите сделать чтобы ваши два терминала на различных компьютерах обменивались между собой информацией независимо от графика. Если один получает сигнал на покупку, то отправляет данные второму терминалу. А второй терминал в свою очередь отправляет какие-то данные первому терминалу... Я с таким никогда не сталкивался, т.к. только в самом начале программирования) Буду рад увидеть как вы продвигаетесь в своём направлении и тоже черпать для себя информацию) |
|
11.10.2013, 15:35 | #5 |
Новичок
Регистрация: 22.08.2013
Сообщений: 18
Вы сказали Спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
|
Если задача состоит в том, чтоб на одном и том же счете с разных компов запустить один и тот же советник. И что каждая копия работала независимо от другой, то проще всего использовать Магик. вывести в настройки советника, чтоб пользователь мог сам задавать значение. Тогда хоть на одном терминале на одном инструменте хоть 10 копий советника запускайте http://forum.forex-investo.ru/public...IR#>/smile.png
|
12.10.2013, 08:50 | #6 | |
Интересующийся
Регистрация: 13.10.2012
Сообщений: 9
Вы сказали Спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
|
Цитата:
Таким образом задача состоит в том, чтобы сделать обмен какими-то сигналами между двумя советниками на разных удаленных компютерах. |
|
13.10.2013, 03:24 | #7 | |
Новичок
Регистрация: 12.10.2013
Сообщений: 8
Вы сказали Спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
|
Цитата:
Советники в обоих терминалах одинаковые. Только первый должен открывать вспомогательные отложенные ордера с пометкой Sov1, а проверять наличие вспомогательного отложенного ордера, открытого менее минуты назад с пометкой Sov2. Если такой ордер есть, то первый советник не будет возвращать себе управление автоматически, а будет ждать, пока отключится второй советник. Ну, а советник во втором терминале открывает и проверяет соответственно Sov2 и Sov1. Как мне кажется, это похоже на путь решения Вашей проблемы. |
|
13.10.2013, 12:44 | #8 |
Интересующийся
Регистрация: 13.10.2012
Сообщений: 9
Вы сказали Спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
|
Вот! Отличная простая идея DSG_UA ! СПАСИБО!
|
21.10.2013, 23:34 | #9 |
Новичок
Регистрация: 12.10.2013
Сообщений: 8
Вы сказали Спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
|
Рад помочь собрату-программисту : )
А вот у меня тоже есть проблема, и нужен свежий взгляд. У меня постоянно работают 33 терминала (я не шучу, их именно 33, и, вероятно, будет еще больше). На всех терминалах работает один и тот же советник. Этот советник, среди прочего, оперирует глобальными переменными (GlobalVariable). И вот иногда у меня возникает необходимость изменить значение какой-либо из этих переменных во всех терминалах одновременно. Сейчас это выглядит так: я захожу в терминал, нажимаю F3 и задаю новое значение нужной переменной. И ТАК 33 РАЗА! Думаю, понятно, что я все активнее думаю над тем, как автоматизировать этот процесс. Но пока еще не придумал : ( Буду признателен за какую-нибудь идею. |
21.10.2013, 23:49 | #10 |
Интересующийся
Регистрация: 13.10.2012
Сообщений: 9
Вы сказали Спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
|
Я полагаю, что каждый ЕА записыват свои GV с уникальным именем, и значения GV для каждого ЕА должны быть разными?
Изменить значения в GV вероятно не сложно, например с помощью скрипта, но новые значения все-равно нужно где-то набивать, либо рассчитывать по предопределенной системе ... |