Обсуждение статьи "Универсальный торговый эксперт: Событийная модель и прототип торговой стратегии (Часть 2)" - страница 2
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Здравствуйте,
Я попытался скомпилировать ваш код (Agent.mq5) и получил следующую ошибку. Build 1274
Внутренняя ошибка компилятора Agent.mq5 1 1
Также есть небольшая опечатка в строке 388 файла Dictionary.mqh
/| Returns previous object. The current object becomes previous|На билде 1241 код компилируется хорошо, поэтому я попытался запустить бэктест. Он не принимает никаких сделок.
Покопавшись немного на
, я обнаружил, что это связано с режимом заполнения. На используемом мной брокере/символе разрешен режим ORDER_FILLING_IOC. Ваш класс TradeCustom по умолчанию устанавливает режим заполнения ORDER_FILLING_FOK. И я застрял на месте, как можно изменить этот режим заполнения, чтобы советник Agent.mq5 мог вести торговлю? Я могу поискать, но это займет у меня много времени.
В этом и заключается проблема подобных инструментов, очень похожих на советник MQL5 wizard от Metaquotes, он практически непригоден для тех, кто не знает всех тонкостей работы с классами. Как только вы сталкиваетесь с проблемой, которая не была предусмотрена автором, исправить ее или изменить/дополнить становится настоящим мучением. Я не вижу никакой реальной разницы между вашим решением и решением от Metaquotes (wizard).
В любом случае, поздравляю с огромной работой. Это отличная работа программиста.
Василий, как "руководство по применению ООП в трейдинге" Ваши работы очень познавательны и полезны, а вот, как "рабочий торговый движок" очень бедны. Я, в частности, о разнообразии "административных функций".
Сегодня МТ5 по доступности и лояльности к трейдеру близится к МТ4 (добавлена хэдж-торговля). За многие годы МТ4 накопило достаточно богатый административный функционал в свободном доступе:
* частичное закрытие позиций (я про контроль за этим процессом со стороны торгового движка);
* разнообразие расчёта СТОПов;
* динамические СТОПы;
* виртуальные СТОПы;
* профессиональный ММ (это контроль за распределением средств м\у стратегиями). Конечный, а главное устойчивый результат торговли, зависит в большей степени не от правильного входа и выхода в рынок (хоя и это важно), а от правильного инвестирования;
* виртуальная троговля;
* построение сетей. Т.е. взаимосвязь серии ордеров, объединённых м\у собой единой логикой формирования размеров лотов каждой позиции в серии.
* оставляет желать лучшего и реализация обработки исключений при содании торговых приказов (реквоты, ошибка № 130 [МТ4], STOPLEVEL, FREEZELEVEL и т.д. и т.п.).
Возникает вопрос: "Будете в свободном доступе развивать дальше свой движок?"
Василий, как "руководство по применению ООП в трейдинге" Ваши работы очень познавательны и полезны, а вот, как "рабочий торговый движок" очень бедны. Я, в частности, о разнообразии "административных функций".
Сегодня МТ5 по доступности и лояльности к трейдеру близится к МТ4 (добавлена хэдж-торговля). За многие годы МТ4 накопило достаточно богатый административный функционал в свободном доступе:
* частичное закрытие позиций (я про контроль за этим процессом со стороны торгового движка);
* разнообразие расчёта СТОПов;
* динамические СТОПы;
* виртуальные СТОПы;
* профессиональный ММ (это контроль за распределением средств м\у стратегиями). Конечный, а главное устойчивый результат торговли, зависит в большей степени не от правильного входа и выхода в рынок (хоя и это важно), а от правильного инвестирования;
* виртуальная троговля;
* построение сетей. Т.е. взаимосвязь серии ордеров, объединённых м\у собой единой логикой формирования размеров лотов каждой позиции в серии.
* оставляет желать лучшего и реализация обработки исключений при содании торговых приказов (реквоты, ошибка № 130 [МТ4], STOPLEVEL, FREEZELEVEL и т.д. и т.п.).
Возникает вопрос: "Будете в свободном доступе развивать дальше свой движок?"
Да, развитие движка планируется и дальше. И он всегда останется свободным.
На счет остального что Вы перечислили - пишите свои стопы, ММ и "административные функции" в рамках CStrategy. Никто этого не запрещает.
Контроль ошибок всегда был - юзайте класс CTrade и его ответы для контроля ошибок.
Да, развитие движка планируется и дальше. И он всегда останется свободным.
На счет остального что Вы перечислили - пишите свои стопы, ММ и "административные функции" в рамках CStrategy. Никто этого не запрещает.
Контроль ошибок всегда был - юзайте класс CTrade и его ответы для контроля ошибок.
Простому пользователю не нужно задумываться об ошибках, возвращаемых торговым сервером. Торговый движок должен обеспечивать, чтобы при любых обстоятельствах (кроме не рабочего времени) торговый приказ (открытие, закрытие, модификация) был правильно сформирован, а затем выполнен. Или я слишком многого требую от торгового движка?
P.S. Что следующим ожидать (какой функционал) в очередной статье?
Простому пользователю не нужно задумываться об ошибках, возвращаемых торговым сервером. Торговый движок должен обеспечивать, чтобы при любых обстоятельствах (кроме не рабочего времени) торговый приказ (открытие, закрытие, модификация) был правильно сформирован, а затем выполнен. Или я слишком многого требую от торгового движка?
Что, по вашему мнению, должен сделать торговый движок, если в приказе на открытие сделки СЛ слишком близко к цене открытия:
- не открывать сделку;
- скорректировать стоп на минимально допустимое расстояние и открыть сделку (а если новости и стоп-левел 50 четырехзначных пунктов — тоже?);
- скорректировать стоп, как в предыдущем пункте, пропорционально скорректировать лот (чтобы риск оставался таким же), и открыть сделку. Если при этом лот становится меньше минимально допустимого:
- отменить вход, чтобы не нарушать риск-менеджмент,
- войти минимальным лотом.
- скорректировать стоп-лосс и все отложенные ордера, которые стоят на том же уровне (если это сетка);
- скорректировать стоп-лосс и пропорционально тейк-профит;
- ...
Вы понимаете, что, в зависимости от стратегии, нужно использовать разные варианты?Да, можно сделать элементарную корректировку на минимальное расстояние (как опцию), но абсолютно универсального рецепта не существует.
Простому пользователю не нужно задумываться об ошибках, возвращаемых торговым сервером. Торговый движок должен обеспечивать, чтобы при любых обстоятельствах (кроме не рабочего времени) торговый приказ (открытие, закрытие, модификация) был правильно сформирован, а затем выполнен. Или я слишком многого требую от торгового движка?
P.S. Что следующим ожидать (какой функционал) в очередной статье?
Задача торгового движка предоставить удобное окружение стратегии, а также обеспечить целостность и непротиворечивость представляемых данных. Других задач у торгового движка нет. Но не в коем случае он не должен "приторговывать" за саму стратегию. Поэтому если стратегия накосячила, движок не будет исправлять ее ошибки, иначе получиться медвежья услуга. Нужно сделать все для предотвращения ошибки. Но если она произошла, менять торговую логику эксперта на лету не имеет ни какого смысла. Нужно просто сесть и исправить код стратегии. Другого варианта нет.
Пример из практики. Если Вы в CStrategy запросите какую-либо цену, например так:
То гарантированно получите уже нормализованную цену инструмента, которую можно непосредственно использовать в торговых приказах. Чего нельзя сказать о том же, если будете использовать системный запрос. Т.е. CStrategy делает все, что бы предотвратить технические ошибки появляющиеся например при отсутствии нормализации цен. Однако выполнять работу за пользователя он не будет. И если Вы эту цену подставите для отложенного ордера, он может и не сработать.
Что, по вашему мнению, должен сделать торговый движок, если в приказе на открытие сделки СЛ слишком близко к цене открытия:
- не открывать сделку;
- скорректировать стоп на минимально допустимое расстояние и открыть сделку (а если новости и стоп-левел 50 четырехзначных пунктов — тоже?);
- скорректировать стоп, как в предыдущем пункте, пропорционально скорректировать лот (чтобы риск оставался таким же), и открыть сделку. Если при этом лот становится меньше минимально допустимого:
- отменить вход, чтобы не нарушать риск-менеджмент,
- войти минимальным лотом.
- скорректировать стоп-лосс и все отложенные ордера, которые стоят на том же уровне (если это сетка);
- скорректировать стоп-лосс и пропорционально тейк-профит;
- ...
Вы понимаете, что, в зависимости от стратегии, нужно использовать разные варианты?Да, можно сделать элементарную корректировку на минимальное расстояние (как опцию), но абсолютно универсального рецепта не существует.
Задача торгового движка предоставить удобное окружение стратегии, а также обеспечить целостность и непротиворечивость представляемых данных. Других задач у торгового движка нет. Но не в коем случае он не должен "приторговывать" за саму стратегию. Поэтому если стратегия накосячила, движок не будет исправлять ее ошибки, иначе получиться медвежья услуга. Нужно сделать все для предотвращения ошибки. Но если она произошла, менять торговую логику эксперта на лету не имеет ни какого смысла. Нужно просто сесть и исправить код стратегии. Другого варианта нет.
Пример из практики. Если Вы в CStrategy запросите какую-либо цену, например так:
То гарантированно получите уже нормализованную цену инструмента, которую можно непосредственно использовать в торговых приказах. Чего нельзя сказать о том же, если будете использовать системный запрос. Т.е. CStrategy делает все, что бы предотвратить технические ошибки появляющиеся например при отсутствии нормализации цен. Однако выполнять работу за пользователя он не будет. И если Вы эту цену подставите для отложенного ордера, он может и не сработать.
Спорить здесь бесполезно. Это сугубо личночстный подход. Но я себе не позволяю получать в лог такие сообщения:
об этом должен заботится движок.Спорить здесь бесполезно. Это сугубо личночстный подход. Но я себе не позволяю получать в лог такие сообщения:
об этом должен заботится движок.