Советники: Копирование сделок с одного счёта на другой (Советники ExpertSource и ExpertReceiver)

 

Копирование сделок с одного счёта на другой (Советники ExpertSource и ExpertReceiver):

Передача сигналов открытия/закрытия позиций и отложенных ордеров от одного счёта - другому. Синхронизация двух и более счетов.

Author: Evgeniy Trofimov

 

1. в Source у вас много Print. Желательно заменить их на Comment. - засыпит ненужными сообщениями в журнал

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

3. Ошибки модификации/открытия ордеров в Receiver - не должны быть в принципе. разве интересует кого то на приёме, что "Превышена минимальная граница выставления отложенного ордера на продажу по цене открытия"); Это вы должны учитывать сами и не загружать пользователя этими сообщениями.

4. У вас не решен вопрос с частичным закрытие ордера в Receiver
5. Ну и код слишком усложнён. Весь приёмник на самом деле помещается в 4 короткие функции - приём - удаление - модификация - открытие. У вас слишком сложный стиль кодинга.
 
sergeev писал(а):

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

1. Согласен. Можно вообще все принты закомментировать.

2. Ничего лучшего придумать не смог :) При переносе открытой позиции или отложенного ордера со счёта-источника на счёте-получателе появляется новая позиция (ордер) с магическим числом, равным порядковому номеру сделки (Ticket) на счёте источника. Советник ExpertReciver закрывает позицию по теущей цене, либо удаляет отложенный ордер в случае, если среди существующих позиций на счёте-источнике отсутствует позиция с таким номером (Ticket), как Magic Number у позиции на счёте получателе.

3. Ошибок, как таковых, нет. Это просто комментарии. На сервер неправильные приказы не отправляются. Поэтому ничего уж такого катастрофического не происходит.

4. На 100% согласен с Вами. Кроме того не решён вопрос с OrderCloseBy. Просто мне это не нужно было. Кому нужно - флаг в руки!

5. Да фиг его знает... Процессор справляется нормально. Место на диске тоже хватает.

И на последок: Спасибо за столь великое внимание к моим экспертам. Очень хорошая критика!

 

2. Ничего лучшего придумать не смог :)

воспользуйтесь глобальными переменными.

 
sergeev:

2. Ничего лучшего придумать не смог :)

воспользуйтесь глобальными переменными.

В данном случае глобальные переменные - крайне ненадежное решение. Терминал слетел, комп выключился и т.д. и вся связка потерялась. Связи для надежности должны храниться только на стороне торгового сервера. А это либо мэджики, либо комменты, либо "далекие" отложки с использованием всех доступных для модификации полей, либо "далекие" уровни SL и TP для позиций-ордеров, не использующих их.

Повторюсь, хранить локально - это ненадежное решение. Такое решение пока предлагается и на MT5.

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

 

Не критика, а просто мысли вслух:

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

При такой реализации взаимосвязи вообще не нужны. Автоматически появится учет частичного закрытия и CloseBy. И также это никак не скажется на работе других советников и на источнике сделок и на счете-"двойнике".

P.S. MT4-бриджи (STP (еще проше) и ECN) именно так и реализованы. А бриджи - это и есть "копирование" сделок с одного счета на другой.

P.P.S. Забыл главное сказать: Автор - молодец!

 
getch:

Не критика, а просто мысли вслух:

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

+1 поддерживаю.

в более простом варианте (если упростить работу приёмника) - то входы/выходы будут полностью рыночными - без стопов.

и контроля (как в этом копировщике) Sensitivity. То есть всё осуществляется по итогу работы источника.

 
getch:

система копирования сделок для работы вовсе не должна анализировать историю закрытых сделок.

История сделок анализируется для случая, когда я вручную закрою позицию, открытую советником, чтобы он её второй раз не открыл. 

 
sergeev:

в более простом варианте (если упростить работу приёмника) - то входы/выходы будут полностью рыночными - без стопов. 

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

 
EvgeTrofi:

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

вариантов может быть очень много. Общепринятых парадигм копировщиков (случай как с этим) никто не отменял. Просто неттинг - это как вариант. В любом случае именно он будет в МТ5.

--------------

Есть же не только копировщик сделок (когда на приёмник отсылается параметры ордера). - есть же ещё и приемник сигналов от других экспертов. Когда на приёмник отсылается не ордер, а состояние индикаторов или результат какого то вычисления на сервере. А приёмник сам решает что делать с ними. Но это тоже совсем другая тема, которая выходит за рамки текущей модели простого копировщика сделок.

 

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

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