Структура рулит. Учимся структурировать программы, изучаем возможности, ошибки, решения и т.п. - страница 6
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
ЗЫ. А вооще меленко как то, давайте задачку поглобальнее ?
Ну тады колись (в общих чертах) как ты эти бреши затыкаешь в четвёрке. Всё в DLL-ках? :)
Никаких ДЛЛ, чистый МКЛ + винапи для обработки событий.
По поводу этого, надо найти время все красиво описать и сделать большую статью. Могу кинуть или пример, или реализацию псевдоклассов визуала для МТ4, но боюсь без подробного описания будет тяжело переварить. Суть создание DOM (Data Object Module) для МТ по аналогии с JS - они и так реально похожи. Для затравки - основная функция сердце так сказать:
Есть конкретное предложение?
Есть, и задача живая, но боюсь ее произносить здесь, могу в личку.
Сейчас ни один нормальный программист не рисует блок-схемы. Все это теоретический бред разработанный для преподавания школьникам, но не для работы в реальных проектах.
Никаких ДЛЛ, чистый МКЛ + винапи для обработки событий.
По поводу этого, надо найти время все красиво описать и сделать большую статью. Могу кинуть или пример, или реализацию псевдоклассов визуала для МТ4, но боюсь без подробного описания будет тяжело переварить. Суть создание DOM (Data Object Module) для МТ по аналогии с JS - они и так реально похожи. Для затравки - основная функция сердце так сказать:
Да ушш.. С размахом. ))
DOM - это сильно. Давай хоть пару скриншотов что-ли... Заценить как оно всё смотрится. Или (если есть) какой-нибудь автономный скомпилированный примерчик, чтоб пощупать это дело в терминале. Есть такой?
Да ушш.. С размахом. ))
DOM - это сильно. Давай хоть пару скриншотов что-ли... Заценить как оно всё смотрится. Или (если есть) какой-нибудь автономный скомпилированный примерчик, чтоб пощупать это дело в терминале. Есть такой?
Поштурмуем задачку?
Нечего.
1. Панель сразу в хвост. стратегия первична, если она не будет пахать, панель бессмысленна и бесполезна.
2. Реализация торговой части зависит от стратегии, так что в рамках штурма гипотетической стратегии обсуждать нечего. Реализация стратегии как ни странно тоже зависит от стратегии :)
3. Сразу сделать триггер отключения стратегии, учитываемый в торговом блоке. И отключения выставления новых ордеров.
4. Панель. Ну что панель -- рутина.
Что касается написания ТС, то как-то так:
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Обсуждение высокочастотной торговли на МТ5
hrenfx, 2013.02.06 14:30
Простой и довольно эффективной логикой написания боевого робота является следующая схема:
- робот делится на две части: тестер и синхронизатор.
- тестер на основании ранней истории и только что пришедшей выдает текущее состоянии торговой стратегии.
- синхронизатор "переносит" текущие тестерные открытые позиции и приказы на реал.
Это чем-то напиминает копирование торговых сигналов с одного счета на другой. Только вместо примитивного копировщика работает грамотный синхронизатор.
К сожалению, правильную логику синхронизатора посмотреть где-либо практически невозможно, поэтому озадачевшемуся придется подумать самому - очень полезно.
Но и такая логика построения боевого-робота далеко не совершенна, т.к. встает дилема первичности курицы и яйца. Поэтому применяются более сложные свои схемы, основанные на опыте автора-алготрейдера.
Все эти действия совершаются только ради одного - адекватной настройки стратегии. Какой бы совершенной не была схема, все равно одинаковые боевые роботы на разных счетах одного и того же ECN/STP брокера покажут расхождения. И помимо поиска рыночных закономерностей, важной задачей для алготрейдера также является уменьшение этих расхождений. Как уже говорилось выше, чем ближе брокер к возможстям HFT, тем меньше расхождения.
Если вникнуть в написанное, должно прийти понимание, что результаты работы стратегии на реале являются также своего рода тестером. И выводы на основании этой торговли также должны быть вероятностными.
Нечего.
1. Панель сразу в хвост. стратегия первична, если она не будет пахать, панель бессмысленна и бесполезна.
2. Реализация торговой части зависит от стратегии, так что в рамках штурма гипотетической стратегии обсуждать нечего. Реализация стратегии как ни странно тоже зависит от стратегии :)
3. Сразу сделать триггер отключения стратегии, учитываемый в торговом блоке. И отключения выставления новых ордеров.
4. Панель. Ну что панель -- рутина.
Ну вот, сразу есть о чём поспорить... :))
Не поспорить, допустим, но указать на возможные варианты:
1. Панель сразу в хвост. стратегия первична, если она не будет пахать, панель бессмысленна и бесполезна.
Пока, соглашусь, но с оговоркой: программу нужно сразу ориентировать на работу в двух режимах, поэтому стратегическая/торговая части должны быть сразу прописываемы с учётом наличия/отсутствия управления с панели и с выводом/без вывода информации на панель.
А вот и не обязательно. У меня так практически не зависит. Вся торговая часть прописана в виде класса (CMarketDriver), который полностью реализует выставление ордеров, отслеживание позиций, реквоты и прочую хрень связанную с торговлей. По всем инструментам сразу. А стратегическая часть только подаёт ему на вход рекомендованные рыночные позиции по инструментам: т.е. заполняет массив структур формата {string Instrument; double Position} и запрашивает синхронизацию с сервером : MD.Synhronize(PositionArray). И псё. Пока торгует только рыночными ордерами, но на подходе версия торгующая лимитниками выставляемыми внутрь спреда (для уменьшения торговых издержек). Для торговли тейкпрофиты/стоплоссы не использую, но MarketDriver может ставить защитные стопы на случай длительной потери связи с сервером (параметры стопов указываются один раз в настройках драйвера). Кстати, очень удачное, практически беспроблемное структурное решение. Для проверки стратегических идей в тестере вообще песня - никаких проблем с торговлей, всё внимание можно посвятить стратегии - вся торговля уже давно отлажена и инкапсулирована в торговом драйвере.
2............., так что в рамках штурма гипотетической стратегии обсуждать нечего. Реализация стратегии как ни странно тоже зависит от стратегии :)
Ну можно тут конкретизировать от балды, чисто щёб было что обсуждать. Например свежая идея посетила - можно торговать по пересечению пары машек. Гениально, правда? Задача в данном случае - так проструктурировать программу, чтоб при её развитии (ну например добавлении третьей машки), не пришлось менять большую часть кода. В идеале - совсем чуть-чуть и в строго локальной зоне (а не в десятке модулей). Затем возможно развитие в сторону мультивалютности ( для простоты проекта, предположим что торговля по инструментам строго независимая, взаимосвязи тупо не учитываются). Как, заранее предвидя такое развитие, организовывать стратегическую часть?
3. Сразу сделать триггер отключения стратегии, учитываемый в торговом блоке. И отключения выставления новых ордеров.
Здесь можно немножко пожевать. Но и не обязательно. В конце концов тут сложностей особо не предвидится.
4. Панель. Ну что панель -- рутина.
Не очень согласен. Сама по себе панель, конечно, рутина. А вот организация событийной связи стратегии с панелью - вполне себе творческая задачка, особенно если пытаться разработать более-менее универсальный шаблон для такой панели, предполагающий лёгкую адаптацию к разным советникам и лёгкое развитие при разрастании/развитии проекта.
А вот и не обязательно. У меня так практически не зависит.
У меня почти всегда зависит. Тем более если с ECN работать. Ну т.е. все делается конечно не на самом низком уровне, но просто через оболочки стандартных торговых функций.
У меня почти всегда зависит. Тем более если с ECN работать. Ну т.е. все делается конечно не на самом низком уровне, но просто через оболочки стандартных торговых функций.
Ну вот плохо это вроде как. Не знаю как у меня там с ECN сложатся отношения (собираюсь открывать счёт на RoboForex), но буду всеми силами стремиться сохранить эту структурную развязку (стратегия/рыночный драйвер). Она настолько удобна, что готов даже на некоторые умеренные торговые издержки (типа недополученной прибыли).
Смотри как просто в итоге выглядит главный цикл советника:
На вот глянь упрощённую тестерную версию, может понравится схема. Если что - доработай под свои нужды и пользуйся на здоровье.