Торговые системы: Объектный подход в MQL

 

New article Объектный подход в MQL has been published:

Этот второй обзор будет интересен скорее всего программистам как начинающим так и профессионалам, работающим в среде MQL. Очень хотелось бы чтобы эта статья попала также к разработчикам и идеологам среды MQL, так как вопросы, которые здесь поднимаются, могут являться проектами для будущих реализаций как MetaTrader, так и MQL.

Одно из неудобств MQL, на мой взгляд программиста, является отсутствие объектного подхода в построении модели торговой системы. И два выхода, которые предлагают нам разработчики это 1) использовать вызов внешних функций, или 2) использование так называемого параметра ордера MAGIC для идентификации принадлежности ордера.

В принципе, если на одном счете работает только одна система, то в идентификации ордеров нет необходимости. Но когда есть программная возможность «прицепить» к одному счету несколько МТС, то без использования MAGIC нам уже не обойтись никак. Даже вызывая внешние функции у нас есть потребность в их определении. Конечно, можно строить массив OrderTicket и идентифицировать принадлежность этого массива только к одной ТС, но как мы знаем, в некоторых дилинговых центрах ticket ордера при операции swap меняется (точнее говоря закрывается один и открывается новый). Поэтому без использования числа MAGIC как вы видите нам не обойтись никак.

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

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


Итак давайте разберемся с этой моделью

А). Сигнальная система (СС).

Объекты этого модуля занимаются обработкой и трактовкой приходящих котировок. В качестве "объекта" сигнальной системы обычно выступает совокупность индикаторов. Например скользящие средние. Результатом обработки котировок и значений индикаторов "объект" (или проще семафор) подает сигналы на вход / выход, или на модификацию ордеров, доливку и т.д.

Семафор формирует свой сигнал и передает его другому объекту из модуля Входа/выхода (ВВ).

Задание семафора в рамках языка MQL очень простое.

Author: o_O