Мультитерминальный ММ для MT4

 

Стоит задача - преодолеть ограничение от ДЦ на количество ордеров и совокупный объем лотов.

Видится решение - организация управления ордерами и средствами на многих терминалах(счетах) единовременно.

Условно считаем, что есть один и более советников, которым для работы требуется большой совокупный объем ордеров.

Хотелось бы услышать мнение сообщества относительно решения данной задачи. 

 

А в чем проблема?

Есть общая папка терминалов, через нее синхронизируем состояние всех счетов.

Только я бы торговал виртуально (в уме), а для вывода сделок на разные счета написал бы специального менеджера. Иначе торговый алгоритм сильно усложнится. 

 
Andrey Khatimlianskii:

А в чем проблема?

Есть общая папка терминалов, через нее синхронизируем состояние всех счетов.

Только я бы торговал виртуально (в уме), а для вывода сделок на разные счета написал бы специального менеджера. Иначе торговый алгоритм сильно усложнится. 

Про файл понятно, тут даже речь не о способе передачи данных - в файл или через память, а о протоколе взаимодействия. Т.е. я так думаю, основной(торговый) советник должен принимать решение, где открывать ордера, а для этого он должен регулярно получать информацию о состоянии дел от других терминалов, и дело осложняется тем, что советников больше чем один, т.е. возникает вопрос о полноте данных, предоставляемых другими терминалами, так как для советников эти данные одинаковы, но каждый советник не учитывает желания соседних советников по работе с ордерами. Выходит, что нужно 3 файла и отдельный советник, который будет распределять задания по открытию ордеров, руководствуясь полученной информацией...
 
-Aleks-:
Про файл понятно, тут даже речь не о способе передачи данных - в файл или через память, а о протоколе взаимодействия. Т.е. я так думаю, основной(торговый) советник должен принимать решение, где открывать ордера, а для этого он должен регулярно получать информацию о состоянии дел от других терминалов, и дело осложняется тем, что советников больше чем один, т.е. возникает вопрос о полноте данных, предоставляемых другими терминалами, так как для советников эти данные одинаковы, но каждый советник не учитывает желания соседних советников по работе с ордерами. Выходит, что нужно 3 файла и отдельный советник, который будет распределять задания по открытию ордеров, руководствуясь полученной информацией...

Наверное, сделать отдельный советник MoneyManager, к которому будут обращаться другие советники за разрешением открыть сделку или ордер. Если не на продажу через маркет, я бы сделал через memory mapping, как самый быстрый способ.

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

Сделал так потому, что работаю на тиковых данных и от частоты поступления котировок и их фильтрации на стороне брокера сильно зависит качество и частота сделок. Наример, есть счет на Инсте, там та-а-ак фильтруют, что котировки не узнать.    

 
-Aleks-:
Про файл понятно, тут даже речь не о способе передачи данных - в файл или через память, а о протоколе взаимодействия. Т.е. я так думаю, основной(торговый) советник должен принимать решение, где открывать ордера, а для этого он должен регулярно получать информацию о состоянии дел от других терминалов, и дело осложняется тем, что советников больше чем один, т.е. возникает вопрос о полноте данных, предоставляемых другими терминалами, так как для советников эти данные одинаковы, но каждый советник не учитывает желания соседних советников по работе с ордерами. Выходит, что нужно 3 файла и отдельный советник, который будет распределять задания по открытию ордеров, руководствуясь полученной информацией...

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

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

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

Но по хорошему надо бежать из конторы, которая ограничивает объем. Если это центовые счета, то найти другие, с достаточным разбросом мин/макс лота.

 
Alexey Volchanskiy:

Наверное, сделать отдельный советник MoneyManager, к которому будут обращаться другие советники за разрешением открыть сделку или ордер. Если не на продажу через маркет, я бы сделал через memory mapping, как самый быстрый способ.

Знать бы мне, как организовать этот memory mapping... а класс не хотите сделать?

 

Alexey Volchanskiy:

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

Сделал так потому, что работаю на тиковых данных и от частоты поступления котировок и их фильтрации на стороне брокера сильно зависит качество и частота сделок. Наример, есть счет на Инсте, там та-а-ак фильтруют, что котировки не узнать.    

Принцип понятен, но для моей задачи не совсем подходит.

А что есть "качественные" котировки? Обнаружили, что ДЦ придерживает в коротком временном диапазоне котировки?

 

Andrey Khatimlianskii:

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

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

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

Но по хорошему надо бежать из конторы, которая ограничивает объем. Если это центовые счета, то найти другие, с достаточным разбросом мин/макс лота.

Спасибо за развернутый ответ! Однако теперь вопрос в том, как советник с логикой АТС будет получать данные по всем своим открытым ордерам - управляющий будет готовить?

Про бежать - знал бы куда... никто не может подсказать, где можно более 100 лотов на позицию открывать - для центовиков. 

 
-Aleks-:

Спасибо за развернутый ответ! Однако теперь вопрос в том, как советник с логикой АТС будет получать данные по всем своим открытым ордерам - управляющий будет готовить?

Нет, советник с логикой АТС должен торговать виртуально. С виртуальными позициями и ордерами.

А управляющий должен синхронизировать суммарное виртуальное состояние всех торговых советником со счетами.

 

-Aleks-:

Про бежать - знал бы куда... никто не может подсказать, где можно более 100 лотов на позицию открывать - для центовиков. 

А какой минимум нужен? 0.01 центового лота, что ли? )

С такими объемами до 0.01 обычного лота можно вообще в рынок не выводить, все равно это не принесет ни прибыли, ни убытков. А значит можно торговать на одном нормальном счете (виртуально), и открывать сделки только при достижении мин. лота. 

 
Andrey Khatimlianskii:

Нет, советник с логикой АТС должен торговать виртуально. С виртуальными позициями и ордерами.

А управляющий должен синхронизировать суммарное виртуальное состояние всех торговых советником со счетами.

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


Andrey Khatimlianskii:
 

А какой минимум нужен? 0.01 центового лота, что ли? )

С такими объемами до 0.01 обычного лота можно вообще в рынок не выводить, все равно это не принесет ни прибыли, ни убытков. А значит можно торговать на одном нормальном счете (виртуально), и открывать сделки только при достижении мин. лота.

Копейка рубль бережёт. Я торгую с наращиванием позиции, поэтому при малых лотах 0,01 можно жить, но если лот 0,1 , то высока вероятность достижения потолка - я дурак думал это программная проблема и реализовал дробление на ордера по 100 лотов, а оказалось, что это причуды ДЦ (всех?).

В моей концепции хочу объединить центовый и обычный счет.

 
-Aleks-:

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

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

Обработка ошибок должна лежать на менеджере, он будет видеть всю картину целиком и сможет принять взвешенное решение.

 

-Aleks-:

Копейка рубль бережёт. Я торгую с наращиванием позиции, поэтому при малых лотах 0,01 можно жить, но если лот 0,1 , то высока вероятность достижения потолка - я дурак думал это программная проблема и реализовал дробление на ордера по 100 лотов, а оказалось, что это причуды ДЦ (всех?).

Возьмите отчет тестера и посчитайте, какую прибыль приносят сделки размером меньше 0.01 стандартного лота (1.0 центового лота).

Если там действительно есть прибыль, тогда ищите ДЦ или реализуйте менеджера. Я с центовыми счетами давно не работал, не подскажу, где какие условия. 

 
Andrey Khatimlianskii:

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

Обработка ошибок должна лежать на менеджере, он будет видеть всю картину целиком и сможет принять взвешенное решение.

Торговый алгоритм не должен заботиться об обработке ошибок?

Менеджер должен распределять решения(ордера) между исполнителями (терминалами), а для принятия решения требуется вся информация - поэтому пока и не понятно, как получать информацию оперативно и безопасно.

 
Andrey Khatimlianskii:
 

Возьмите отчет тестера и посчитайте, какую прибыль приносят сделки размером меньше 0.01 стандартного лота (1.0 центового лота).

Если там действительно есть прибыль, тогда ищите ДЦ или реализуйте менеджера. Я с центовыми счетами давно не работал, не подскажу, где какие условия. 

Я не смог найти тех, кто работает, возможно это ограничение не только ДЦ...
Причина обращения: