Обсуждение статьи "Универсальный торговый эксперт: Событийная модель и прототип торговой стратегии (Часть 2)" - страница 2

 
Гога:

Василий, как "руководство по применению ООП в трейдинге" Ваши работы очень познавательны и полезны, а вот, как "рабочий торговый движок" очень бедны. Я, в частности, о разнообразии "административных функций".

Сегодня МТ5 по доступности и лояльности к трейдеру близится к МТ4 (добавлена хэдж-торговля). За многие годы МТ4 накопило достаточно богатый административный функционал в свободном доступе:

* частичное закрытие позиций (я про контроль за этим процессом со стороны торгового движка);

* разнообразие расчёта СТОПов;

* динамические СТОПы;

* виртуальные СТОПы;

* профессиональный ММ (это контроль за распределением средств м\у стратегиями). Конечный, а главное устойчивый результат торговли, зависит в большей степени не от правильного входа и выхода в рынок (хоя и это важно), а от правильного инвестирования;

* виртуальная троговля;

* построение сетей. Т.е. взаимосвязь серии ордеров, объединённых м\у собой единой логикой формирования размеров лотов каждой позиции в серии.

* оставляет желать лучшего и реализация обработки исключений при содании торговых приказов (реквоты, ошибка № 130 [МТ4], STOPLEVEL, FREEZELEVEL и т.д. и т.п.).

Возникает вопрос: "Будете в свободном доступе развивать дальше свой движок?"

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

На счет остального что Вы перечислили - пишите свои стопы, ММ и "административные функции" в рамках CStrategy. Никто этого не запрещает.

Контроль ошибок всегда был - юзайте класс CTrade и его ответы для контроля ошибок. 

 
Vasiliy Sokolov:

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

На счет остального что Вы перечислили - пишите свои стопы, ММ и "административные функции" в рамках CStrategy. Никто этого не запрещает.

Контроль ошибок всегда был - юзайте класс CTrade и его ответы для контроля ошибок. 

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

P.S. Что следующим ожидать (какой функционал) в очередной статье?

 
Гога:

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

Что, по вашему мнению, должен сделать торговый движок, если в приказе на открытие сделки СЛ слишком близко к цене открытия:

  • не открывать сделку;
  • скорректировать стоп на минимально допустимое расстояние и открыть сделку (а если новости и стоп-левел 50 четырехзначных пунктов — тоже?);
  • скорректировать стоп, как в предыдущем пункте, пропорционально скорректировать лот (чтобы риск оставался таким же), и открыть сделку. Если при этом лот становится меньше минимально допустимого:
    • отменить вход, чтобы не нарушать риск-менеджмент,
    • войти минимальным лотом.
  • скорректировать стоп-лосс и все отложенные ордера, которые стоят на том же уровне (если это сетка);
  • скорректировать стоп-лосс и пропорционально тейк-профит;
  • ...
Вы понимаете, что, в зависимости от стратегии, нужно использовать разные варианты?

Да, можно сделать элементарную корректировку на минимальное расстояние (как опцию), но абсолютно универсального рецепта не существует. 

 
Гога:

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

P.S. Что следующим ожидать (какой функционал) в очередной статье?

Задача торгового движка предоставить удобное окружение стратегии, а также обеспечить целостность и непротиворечивость представляемых данных. Других задач у торгового движка нет. Но не в коем случае он не должен "приторговывать" за саму стратегию. Поэтому если стратегия накосячила, движок не будет исправлять ее ошибки, иначе получиться медвежья услуга. Нужно сделать все для предотвращения ошибки. Но если она произошла, менять торговую логику эксперта на лету не имеет ни какого смысла. Нужно просто сесть и исправить код стратегии. Другого варианта нет.

Пример из практики. Если Вы в CStrategy запросите какую-либо цену, например так:

double ask = Ask();

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

 
Andrey Khatimlianskii:

Что, по вашему мнению, должен сделать торговый движок, если в приказе на открытие сделки СЛ слишком близко к цене открытия:

  • не открывать сделку;
  • скорректировать стоп на минимально допустимое расстояние и открыть сделку (а если новости и стоп-левел 50 четырехзначных пунктов — тоже?);
  • скорректировать стоп, как в предыдущем пункте, пропорционально скорректировать лот (чтобы риск оставался таким же), и открыть сделку. Если при этом лот становится меньше минимально допустимого:
    • отменить вход, чтобы не нарушать риск-менеджмент,
    • войти минимальным лотом.
  • скорректировать стоп-лосс и все отложенные ордера, которые стоят на том же уровне (если это сетка);
  • скорректировать стоп-лосс и пропорционально тейк-профит;
  • ...
Вы понимаете, что, в зависимости от стратегии, нужно использовать разные варианты?

Да, можно сделать элементарную корректировку на минимальное расстояние (как опцию), но абсолютно универсального рецепта не существует. 

Андрей, не нужно усложнять - правильный ответ: "скорректировать стоп на минимально допустимое расстояние и открыть сделку (а если новости и стоп-левел 50 четырехзначных пунктов — тоже?)". Слишком маленький СТОП длжен работать виртуально (без модификации). А сделка должна быть открыта по поступившему сигналу. В случае построения сетей дополнительные правила прописываются на этапе формирования СТОПа.
 
Vasiliy Sokolov:

Задача торгового движка предоставить удобное окружение стратегии, а также обеспечить целостность и непротиворечивость представляемых данных. Других задач у торгового движка нет. Но не в коем случае он не должен "приторговывать" за саму стратегию. Поэтому если стратегия накосячила, движок не будет исправлять ее ошибки, иначе получиться медвежья услуга. Нужно сделать все для предотвращения ошибки. Но если она произошла, менять торговую логику эксперта на лету не имеет ни какого смысла. Нужно просто сесть и исправить код стратегии. Другого варианта нет.

Пример из практики. Если Вы в CStrategy запросите какую-либо цену, например так:

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

Спорить здесь бесполезно. Это сугубо личночстный подход. Но я себе не позволяю получать в лог такие сообщения:

2016.07.01 11:04:26.866 ImpulseExpert (EURUSD,H1)       Impulse Strategy 0.05 . Trading environment has changed. Rebuild the environment
2016.07.01 10:10:30.908 ImpulseExpert (EURUSD,H1)       Impulse Strategy 0.05 . Trading environment has changed. Rebuild the environment
2016.07.01 08:18:19.129 ImpulseExpert (EURUSD,H1)       Impulse Strategy 0.05 . Trading environment has changed. Rebuild the environment
2016.07.01 07:59:48.209 ImpulseExpert (EURUSD,H1)       Impulse Strategy 0.05 . Trading environment has changed. Rebuild the environment
2016.07.01 06:29:19.308 ImpulseExpert (EURUSD,H1)       Impulse Strategy 0.05 . Trading environment has changed. Rebuild the environment
2016.07.01 04:59:36.505 ImpulseExpert (EURUSD,H1)       Impulse Strategy 0.05 . Trading environment has changed. Rebuild the environment
2016.07.01 03:13:03.656 ImpulseExpert (EURUSD,H1)       Impulse Strategy 0.05 . Trading environment has changed. Rebuild the environment
2016.07.01 02:59:55.757 ImpulseExpert (EURUSD,H1)       Impulse Strategy 0.05 . Trading environment has changed. Rebuild the environment
2016.06.30 17:59:56.557 ImpulseExpert (EURUSD,H1)       CTrade::OrderSend: modify position #1451923 EURUSD (sl: 0.00000, tp: 0.00000) [no changes]
об этом должен заботится движок.
 
Гога:

Спорить здесь бесполезно. Это сугубо личночстный подход. Но я себе не позволяю получать в лог такие сообщения:

об этом должен заботится движок.
О чем "об этом"? Это информационное сообщение идущее совместно с системными сообщениями, которые вы зачем-то почистили.
 
Гога:
Андрей, не нужно усложнять - правильный ответ: "скорректировать стоп на минимально допустимое расстояние и открыть сделку (а если новости и стоп-левел 50 четырехзначных пунктов — тоже?)". Слишком маленький СТОП длжен работать виртуально (без модификации). А сделка должна быть открыта по поступившему сигналу. В случае построения сетей дополнительные правила прописываются на этапе формирования СТОПа.

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

Я согласен, что наличие готовых вариантов обработки тех или иных ситуаций будет удобно, но автоматически движок ничего решать не должен.

 
Andrey Khatimlianskii:

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

Про 5-ку не знаю. В 4-ке у меня никогда проблем не было.

Andrey Khatimlianskii:

Я согласен, что наличие готовых вариантов обработки тех или иных ситуаций будет удобно, но автоматически движок ничего решать не должен.

С чем не могу не согласится, что правил "что должен делать торговый движок", нет - мы их сами придумываем. Я исхожу из простого постулата: мой движок должен делать любую (всю) административную работу (выше я перечислял, что я понимаю под административной работой, там не упомянут трейлинг и работа с общим профитом, как отдельно взятой стратегии, так и всего советника), а я при добавлении к советнику новой стратегии, дописываю ТОЛЬКО правила торговли для неё и настраиваю торговый движок.

Я не претендую на правильность моего подхода, мне так больше нравится. ;)

 
Vasiliy Sokolov:
О чем "об этом"? Это информационное сообщение идущее совместно с системными сообщениями, которые вы зачем-то почистили.

Я исхожу, что мне нужны в логе только содержательные информационные сообщения. Исходя из этого, мне не интересно знать, что СТОПЫ не изменились. Про торговое окружение тоже...

Василий, я не критикую, я высказываю свою точку зрения. Я понимаю, когда много времени потрачено на создание системы, даже мысль о возможном её изменении, вызывает дискомфорт. Такие разговоры (обмен мнениями) имеет смысл на стадии осмысливания. :)

Причина обращения: