Вокруг программирования на MQL4 - Форум о заработке, инвестициях и криптовалюте
Форум о заработке, инвестициях и криптовалюте

Вернуться   Форум о заработке, инвестициях и криптовалюте > Практический трейдинг > Все о автоматизации торгового процесса > Архив Практического трейдинга

Важная информация

 
 
Опции темы Опции просмотра
Старый 07.06.2013, 18:48   #1
Bobs
Интересующийся
 
Аватар для Bobs
 
Регистрация: 13.10.2012
Сообщений: 9
Вы сказали Спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Автор темы По умолчанию

Есть проблема.

Когда работает советник, к примеру на VPS, и его копию запустить из другого места на тот же счет - случаются весьма плачевные последствия, т.к. из двух разных терминалов одновременно может быть открыто по ордеру, т.е. в результате получится 2 ордера. Особенно тяжелые случаи бывают при использовании мартингейла. Тогда объемы растут мгновенно и происходит самое неприятное.

Нужны идеи - как программно выполнить контроль, что работает только одна копия советника на текущем счете.
Bobs вне форума  
Старый 10.06.2013, 11:14   #2
Yurchik36
Специалист
 
Аватар для Yurchik36
 
Регистрация: 15.09.2012
Сообщений: 919
Вы сказали Спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
По умолчанию

Цитата:
Сообщение от Bobs Посмотреть сообщение
Есть проблема.

Когда работает советник, к примеру на VPS, и его копию запустить из другого места на тот же счет - случаются весьма плачевные последствия, т.к. из двух разных терминалов одновременно может быть открыто по ордеру, т.е. в результате получится 2 ордера. Особенно тяжелые случаи бывают при использовании мартингейла. Тогда объемы растут мгновенно и происходит самое неприятное.

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

Помогите доработать советник!



Помощь по реализации написания продуктов в коде MQL



Ну а по теме: выложите туда свой советник. А мы вам попробуем подсказать.

В чём суть. Может код не очень продуманный. Например прописаное открыть сделку как только совтеник будет прикреплён к графику. Тогда действительно каждый раз когда будете советник запускать он будет открывать вам сделку.

А можно допустим запрограммировать открывать только одну сделку на счету. Чтоб не было одновременно открытых две и больше. Тогда сколько бы не вешали советник, всегда будет только работать по одному принципу.



Это действительно хорошо тем, что еслу у вас на компьютере неполадкт с интернетом, то на vps советник подхватывает сделки и ведёт их контроль. И в обратном случае.

Yurchik36 вне форума  
Старый 10.06.2013, 14:33   #3
Bobs
Интересующийся
 
Аватар для Bobs
 
Регистрация: 13.10.2012
Сообщений: 9
Вы сказали Спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Автор темы По умолчанию

Спасибо, но это не подходит. Код продуман. Выкладывать не буду, потому что это программа для заказчика.

Здесь нужно придумать способ обмена информацией между двумя удаленными терминалами, обслуживающими один и тот же счет.

Боюсь что здесь средствами только MQL не обойтись, но может быть есть какие-то решения через WinAPI ...
Bobs вне форума  
Старый 10.06.2013, 15:41   #4
Yurchik36
Специалист
 
Аватар для Yurchik36
 
Регистрация: 15.09.2012
Сообщений: 919
Вы сказали Спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
По умолчанию

Цитата:
Сообщение от Bobs Посмотреть сообщение
Спасибо, но это не подходит. Код продуман. Выкладывать не буду, потому что это программа для заказчика.

Здесь нужно придумать способ обмена информацией между двумя удаленными терминалами, обслуживающими один и тот же счет.

Боюсь что здесь средствами только MQL не обойтись, но может быть есть какие-то решения через WinAPI ...
А вот в чём дело. Кажется я начинаю понимать...

Допустим у нас имеется два терминала. И каждый ждёт сигнала чтобы открыть сделку.

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



А как я понял... вы хотите сделать чтобы ваши два терминала на различных компьютерах обменивались между собой информацией независимо от графика. Если один получает сигнал на покупку, то отправляет данные второму терминалу. А второй терминал в свою очередь отправляет какие-то данные первому терминалу...



Я с таким никогда не сталкивался, т.к. только в самом начале программирования) Буду рад увидеть как вы продвигаетесь в своём направлении и тоже черпать для себя информацию)
Yurchik36 вне форума  
Старый 11.10.2013, 15:35   #5
artamir
Новичок
 
Регистрация: 22.08.2013
Сообщений: 18
Вы сказали Спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
По умолчанию

Если задача состоит в том, чтоб на одном и том же счете с разных компов запустить один и тот же советник. И что каждая копия работала независимо от другой, то проще всего использовать Магик. вывести в настройки советника, чтоб пользователь мог сам задавать значение. Тогда хоть на одном терминале на одном инструменте хоть 10 копий советника запускайте http://forum.forex-investo.ru/public...IR#>/smile.png
artamir вне форума  
Старый 12.10.2013, 08:50   #6
Bobs
Интересующийся
 
Аватар для Bobs
 
Регистрация: 13.10.2012
Сообщений: 9
Вы сказали Спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Автор темы По умолчанию

Цитата:
Сообщение от artamir Посмотреть сообщение
Если задача состоит в том, чтоб на одном и том же счете с разных компов запустить один и тот же советник. И что каждая копия работала независимо от другой, то проще всего использовать Магик. вывести в настройки советника, чтоб пользователь мог сам задавать значение. Тогда хоть на одном терминале на одном инструменте хоть 10 копий советника запускайте http://forum.forex-investo.ru/public...IR#>/smile.png
Нет, неправильно поняли. Задача в том, чтобы чтобы второй советник в обычном режиме прото страховал первый советник, а вот если первый перестанет работать (пропало электричество, интернет, завис компьютер, отключился VPS и т.п.), тогда второй включает торговый режим и работает.

Таким образом задача состоит в том, чтобы сделать обмен какими-то сигналами между двумя советниками на разных удаленных компютерах.
Bobs вне форума  
Старый 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 вне форума  
Старый 13.10.2013, 12:44   #8
Bobs
Интересующийся
 
Аватар для Bobs
 
Регистрация: 13.10.2012
Сообщений: 9
Вы сказали Спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Автор темы По умолчанию

Вот! Отличная простая идея DSG_UA ! СПАСИБО!
Bobs вне форума  
Старый 21.10.2013, 23:34   #9
DSG_UA
Новичок
 
Регистрация: 12.10.2013
Сообщений: 8
Вы сказали Спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
По умолчанию

Цитата:
Сообщение от Bobs Посмотреть сообщение
Вот! Отличная простая идея DSG_UA ! СПАСИБО!
Рад помочь собрату-программисту : )

А вот у меня тоже есть проблема, и нужен свежий взгляд.

У меня постоянно работают 33 терминала (я не шучу, их именно 33, и, вероятно, будет еще больше). На всех терминалах работает один и тот же советник. Этот советник, среди прочего, оперирует глобальными переменными (GlobalVariable). И вот иногда у меня возникает необходимость изменить значение какой-либо из этих переменных во всех терминалах одновременно. Сейчас это выглядит так: я захожу в терминал, нажимаю F3 и задаю новое значение нужной переменной. И ТАК 33 РАЗА! Думаю, понятно, что я все активнее думаю над тем, как автоматизировать этот процесс.

Но пока еще не придумал : (

Буду признателен за какую-нибудь идею.
DSG_UA вне форума  
Старый 21.10.2013, 23:49   #10
Bobs
Интересующийся
 
Аватар для Bobs
 
Регистрация: 13.10.2012
Сообщений: 9
Вы сказали Спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Автор темы По умолчанию

Я полагаю, что каждый ЕА записыват свои GV с уникальным именем, и значения GV для каждого ЕА должны быть разными?

Изменить значения в GV вероятно не сложно, например с помощью скрипта, но новые значения все-равно нужно где-то набивать, либо рассчитывать по предопределенной системе ...
Bobs вне форума  
 

Опции темы
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход


Загрузка...


Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
vB.Sponsors

© 2009-2020 «ACRYPTOINVEST.COM»
сообщество трейдеров, инвесторов и игроков