Обмен данными между двумя терминалами MT4?

 

Здравствуйте!


Хочу реализовать такую стратегию: "Вилки на разнице котировок у разных ДЦ":

   стратегия очень простая, заключаеться в том, что можно поставить противоположные ставки по одному инструменту у двух ДЦ и подождать до расхождения котировок в нужную сторону, тогда можно    закрыть обе ставки и в сумме получить прибыль (величина расхождения котировок должна быть больше, чем суммарная комиссия у двух ДЦ).


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


Основная проблемма, заключаеться в том, что надо знать в каждый момент времени значение котировки у обоих ДЦ одновременно, а советник работает только c одним терминалом (с одним ДЦ).

Т.е. в каждом из терминалов MT4 запущен советник и этот советник знает только свои котировки, а котировки "соседа" ему не известны!!!

Надо сделать так, чтобы оба советника знали котировки друг друга, т.е. могли обмениваться данными между собой.


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


Я придумал 2 способа обмена данными:


1) самый банальный: запись данных в файл и прочтение этого файла другим советником. В принципе очень просто сделать. Есть только проблемма в том, что советник может записывать и читать файлы только из "своего каталога". Но все рашаеться с помошью dll.

Есть еще хороший не достаток: маленькая скорость обмена. Не сравнить со скоростью записи и чтения из памяти(((.


2) не уверен, что так можно сделать (так как я программист неочень), но, вот, хотел бы узнать у программистов такое:

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

    Конечно, вся эта технология через dll.

3)  нащел еще GlobalAddAtom, только как с ним написать dll? т.е. я не понял как он работает?


Если кто заинтересуеться стратегией и хочет тоже ее реализовать, то обращайтесь, с радостью поделюсь своими наработками!

 
Печальный финал у такой стратегии может случиться http://www.kroufr.ru/forum/index.php/topic,6265.0.html
 
И как Вы представляете работу такого рода через DLL?
 
geopoint:
Печальный финал у такой стратегии может случиться http://www.kroufr.ru/forum/index.php/topic,6265.0.html
Я не очень понял? Наверно, о том, что ДЦ может просто кинуть, если узнает, да?
 
D500_Rised:
И как Вы представляете работу такого рода через DLL?

Просто, стандартными средствами MQL4  не получиться сделать обмен, я так думаю. Но если Вы знаете как это сделать, то поделитесь пожалуйста!

А через длл можно, например, подключить функцию, которая могла бы читать файлы из любого каталога, а не только из одного!

 

dll от каждого терминала будут все равно обращаться к одному общему файлу. Мне кажется что это вызовет ряд ошибок, приводящих к неспособности стабильной работы такой схемы. ИМХО.

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

В голову пришла мысль: если в мультитерминале есть возможность работы с несколькими счетами, то вероятно есть возможность работы с реал сервером и демо сервером одновременно. Что если заменить адрес демосервера на адрес реал сервера другого дц?

 
D500_Rised:

dll от каждого терминала будут все равно обращаться к одному общему файлу. Мне кажется что это вызовет ряд ошибок, приводящих к неспособности стабильной работы такой схемы. ИМХО.

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

В голову пришла мысль: если в мультитерминале есть возможность работы с несколькими счетами, то вероятно есть возможность работы с реал сервером и демо сервером одновременно. Что если заменить адрес демосервера на адрес реал сервера другого дц?

Ошибок нету, так как я уже сделал этот способ через файл. Файлов всего 2, т.е. у каждого советника свой файл, в который он записывает котировки, и советники читают друг у друга файлы. Главное правильно сделать чтение и запись (советник все время читает одни и тотже файл и все время записывает в один и тот же файл). Согласен, что стабильность работы будет хуже, чем обращаться к памяти.


В мультитерминале нет такой возможности, и даже если бы была, то там нельзя запускать советников. Вы хотите такую схему в ручную реализовать??? (я не хочу)

 
D500_Rised:

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


нет
 

Я сомневаюсь в возможности правильного по времени порядка запись_1---чтение_2, запись_2---чтение_1.

Как происходит упорядочивание процесса, чтобы советники не встречались на одном файле, могут ли они отличать ранее прочитанные данные от новых(требуется дополнительная временная идентификация)

И вообще, стоит ли игра свеч? Если и будет достигаться разность котировок, против этой игры сразу несколько вещей:

1- 2 спреда (2*2-4 пункта)

2- Проскальзывания

3- Низкая реальная скорость исполнения ордеров(за время обработки дилером приказа цена может изменится и свести на нет плюсовую разность)+ реквоты

и тд.

 
D500_Rised:

Я сомневаюсь в возможности правильного по времени порядка запись_1---чтение_2, запись_2---чтение_1.

Как происходит упорядочивание процесса, чтобы советники не встречались на одном файле, могут ли они отличать ранее прочитанные данные от новых(требуется дополнительная временная идентификация)

И вообще, стоит ли игра свеч? Если и будет достигаться разность котировок, против этой игры сразу несколько вещей:

1- 2 спреда (2*2-4 пункта)

2- Проскальзывания

3- Низкая реальная скорость исполнения ордеров(за время обработки дилером приказа цена может изменится и свести на нет плюсовую разность)+ реквоты

и тд.

Проблемы не возникает, так как один советник все время записывает в файл, а другой советник все время читает из этого файла и не важно в каком порядке это происходит. Чтобы проверять актуальность данных я использовал локальное время, т.е. запись котировок происходит каждые 100 миллесекунд и потом проверяеться актуальность по локальному времени.


По поводу "свеч": точного ответа не знаю, поэтому и хочу проверить. Вы же тоже не знаете, так на глазок прикинули, меня больше убеждают количественные данные. Если суммарный спред = 4 пункта, а расхождение 10 пунктов, то даже при плохих условиях из 6-ти прибыльных пунктов можно хотябы половину урвать, как думаете?

 
D500_Rised:

Я сомневаюсь в возможности правильного по времени порядка запись_1---чтение_2, запись_2---чтение_1.

Может Вы предложите свой метод, а то мы с Вами обсуждаем только одни способ: через файл, а есть более продвинутые: через память, про них можите что-нить сказать?