Здравствуйте!
Хочу поделиться своей наработкой в части автоматизации торговых стратегий.
Преамбула
При создании любой автоматизированной торговой системы (советника, “робота”) программист сталкивается со стандартной задачей управления ордерами. При этом исходный код для различных советников в этой части практически одинаков.
Проблема заключается в том, что операции по управлению ордерами необходимо встраивать глубоко в алгоритм торговой системы (ТС). Это крайне неудобно в ситуациях, когда выполняется автоматизация различных стратегий, непохожих по своей логике.
Также, в случае незначительных изменений в алгоритме ТС часто приходится переделывать приличное количество исходного кода советника, связанного именно с управлением ордерами.
Кроме того, для бОльшей части автоматизированных ТС присущ один и тот же функционал:
* учет “нюансов” тех или иных брокеров;
* запрет торговли в определенных направлениях;
* выполнение операций при наступлении тех или иных событий;
* вывод информации о текущих ордерах.
Чтобы решить описанные выше проблемы была разработана платформа
Vector Application Framework (
подробное обновляющееся описание).
Название платформы выбрано по аналогии с обобщенным определением компаний, выполнявшим вполне конкретные задачи в 90-ые года XX века. Подробнее о такого рода организациях можно прочитать тут: ООО “Вектор”.
Работа с брокерами
Некоторые брокеры в некоторых тарифах (например, AMarkets ->
Direct) вводят запрет на проведение торговых операций при близости цены торговой операции к значению котировки (Терминал -> “Спецификация (контракта)” -> “Уровень стопов”,
MODE_STOPLEVEL).
1. Платформа позволяет снизить влияние данного ограничения: ордер изменяется либо при выходе за границы данной блокировки автоматически, либо исполняется по рынку, при достижении текущей котировки значений открытия, TakeProfit или StopLoss обрабатываемого ордера.
2. Платформа реализует возможность сокрытия от брокера уровней TakeProfit и StopLoss.
3. Платформа реализует возможность сокрытия от брокера значения отложенного ордера.
Из п.п. 2 и 3 следует, что выполнять торговля можно в соответствии с алгоритмом ТС, но полностью “скрытно” от брокера.
4. Реализован механизм выставления “защитных” уровней TakeProfit и StopLoss в случае их близости к значениям текущей цены открытия, с последующим смещением либо исполнением по рынку.
Возможности платформы в части управления ордерами
1. В платформе реализована обработка следующих событий (т.е. после возникновения одной из нижеперечисленных ситуаций можно очень просто добавить необходимый обработчик):
a. Не изменился для: Не выставлен | Отложенный | Открыт | Закрыт
b. Не выставлен -> Не выставлен (изменился уровень цены, SL, TP)
c. Не выставлен -> Отложенный
d. Не выставлен -> Открыт
e. Не выставлен -> Удален
f. Не выставлен -> Удален по времени истечения
g. Отложенный -> Отложенный (изменился уровень цены, SL, TP)
h. Отложенный -> Открыт
i. Отложенный -> Удален
j. Отложенный -> Удален по изменению разрешения направления торговли
k. Отложенный -> Удален по времени истечения
l. Отложенный -> Удален из-за некорректных настроек уровней цены, TP, SL
m. Отложенный -> Закрыт
n. Открыт -> Открыт (изменился уровень цены, SL, TP)
o. Открыт -> Частично закрыт
p. Открыт -> Закрыт по достижению уровня TP
q. Открыт -> Закрыт по достижению уровня SL
r. Открыт -> Закрыт по времени жизни
s. Открыт -> Закрыт вручную
2. Реализована возможность выполнять частичное закрытие ордера.
3. Реализована возможность настройки времени жизни открытого ордера и закрывать его по времени жизни.
P.S.
Текущая версия фрэймворка — v0.01. В разработке v0.02, в которой буду реализованы следующие возможности:
1. изменение направления торговли прямо с графика с помощью двух кнопок на разрешение покупок и продаж. После изменения их положения производится перерасчет в алгоритме ТС.
2. возможность обработки таких событий как наступление очередных минуты, 5-ти, 10-ти, 15-ти, 30-ти минут, следующего часа, двух, трех четырех, шести, восьми, двенадцати, двадцати четырех часов, старт и завершение стандартных торговых сессий (тихоокеанская, азиатская, европейская, американская).
Комментарии (0)
Зарегистрируйтесь или авторизуйтесь, чтобы оставить комментарий