Обсуждение статьи "Универсальный торговый эксперт: Событийная модель и прототип торговой стратегии (Часть 2)" - страница 4
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Как минимум, проанализировать цену. Возможно, входить уже совсем не надо.
Да, есть такой механизм. И где ему быть встроенным, как не в класс торговых приказов? И как формализовать такой механизм, какое резкое движение считать критическим?
Ну так в этом и вопрос! Поэтому и не встраивается это в движок.
Для одной стратегии просскольз на 20 пунктов роли не играет, и войти надо в любом случае, а для другой проскольз в 2 пипса ломает всю статистику, и входить хуже нельзя.
И что должен делать универсальный торговый движок для этих двух стратегий? Правильно, вернуть цену реквота и позволить торговой логике принимать решение.
Ну, или настройку добавить. Точнее, настройки на все случаи жизни )
На билде 1241 код компилируется хорошо, поэтому я попытался запустить бэктест. Он не принимает никаких сделок.
Немного покопавшись, я обнаружил, что это связано с режимом заполнения. На используемом мной брокере/символе разрешен режим ORDER_FILLING_IOC. Ваш класс TradeCustom по умолчанию устанавливает режим заполнения ORDER_FILLING_FOK. И я застрял на месте, как можно изменить этот режим заполнения, чтобы советник Agent.mq5 мог вести торговлю? Я могу поискать, но это займет у меня много времени.
В этом и заключается проблема подобных инструментов, очень похожих на советник MQL5 wizard от Metaquotes, он практически непригоден для тех, кто не знает всех тонкостей работы с классами. Как только вы сталкиваетесь с проблемой, которая не была предусмотрена автором, исправить ее или изменить/дополнить становится настоящим мучением. Я не вижу никакой реальной разницы между вашим решением и решением от Metaquotes (wizard).
В любом случае, поздравляю с огромной работой. Это большая работа по программированию.
В папке MetaEditor5 include есть несколько классов. Если кто-то может дать нам глубокое объяснение классов папки Expert, это будет очень полезно, потому что они выглядят очень сложными. Людям нравится писать стандартные советники на основе формальных базовых классов и не всегда пересоздавать wheels..... В любом случае, эта статья очень помогает не создавать колеса заново.
Я согласен. Проблема возникает, когда во фреймворке есть ошибка. Прежде чем использовать фреймворк, нужно либо принять решение о его глубоком изучении, либо убедиться, что он хорошо поддерживается автором.
Вот почему я хочу изучить классы в MetaEditor5 - они из "правительства" ;)
Господин Василий,
очень хороший код... и полезный для меня...
в новостных сборках mt5 (1952), мы получили "сообщение" в компиляторе,
//+------------------------------------------------------------------+
expression not boolean NewBarDetector.mqh 87 24
правильно должно быть так? Пожалуйста, подтвердите
Здравствуйте, Василий,
Прошу прощения, что задаю вопрос по вашей статье так далеко после того, как вы ее написали. Я только сейчас просматриваю статьи в поисках альтернативы фреймворку. Кое-что показалось мне странным, вполне возможно, что это мое недопонимание.
Что касается обработчиков событий New Tick и New Bar. Вы просматриваете список добавленных тиков, затем создаете структуру событий, передавая ее обработчикам событий Init и Support, например, событие нового тика ниже:
В одном из ваших примеров, например, клип скользящей средней ниже;
Эта функция IsTrackEvents, похоже, сводит на нет назначение функции NewTickDetect, приведенной выше! Таким образом, пример со скользящей средней, приведенный выше, должен быть способен торговать на нескольких инструментах, основываясь на своей способности проверять несколько символов, как в NewTickDetect, но IsTrackEvents позволяет торговать только для таймфрейма стратегии и символа (символ здесь является ключевым). Не означает ли это, что цикл NewTickDetect на самом деле не нужен, поскольку стратегия может торговать только по своему символу? По сути, NewTickDetect должен только проверять, является ли полученный тик символом стратегии - без циклов. Что, по сути, похоже на наличие объекта стратегии для каждого интересующего символа, который CStragyList перебирает в цикле?
Я очень надеюсь, что я все правильно понимаю, и надеюсь, что вы сможете мне это объяснить.
Мне нравится ваша работа. Я многому научился из ваших статей, так что большое спасибо.
С уважением,
Шеп