Публикуем исходные коды торговых стратегий на GitHub!

Начинаем публиковать исходные коды на GitHub.

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

В настоящий момент доступны следующие стратегии:

1) Классическая арбитражная стратегия

Arbitrage

Описание: Покупка и продажа спреда пары спот-фьючерс на основе индикатора Bollinger Bands.

Исходные данные: Свечки или тики. Рассмотрены оба варианта.

Алгоритм: Спред пересекает канал Боллинджера снизу вверх – продаем спред, сверху вниз – покупаем спред. При пересечении средней линии Боллинджера выходим из позиции.


2) Стратегия Черепах (
Turtle Rules)

TurtleTradesОписание: За основу взята стратегия Черепах – www.benvanvliet.net/Downloads/turtlerules.pdf

Исходные данные: Свечки или тики. Рассмотрены оба варианта. Свечки используются для расчета индикаторов. Для более точного входа в позицию и расчета стоп заявок можем использовать тики.

Алгоритм: Строится два канала Дончиана – ChannelOne и ChannelTwo. Период внутреннего канала ChannelTwo устанавливаем в процентах относительно внешнего канала ChannelOne.

Входим в позицию: Покупаем, когда цена касается канала UpperChannelOne. Продаем, когда цена касается канала LowerChannelOne.

Закрываем позицию: Покупаем, когда цена касается канала UpperChannelTwo. Продаем, когда цена касается канала LowerChannelTwo.

Дополнительно:

– Стратегия intraday. Торгуем с 10:05, в конце торговой сессии (23:40) закрываем все открытые позиции – метод CheckIntraDayTime().

– При входе/выходе ориентируемся на риск, который рассчитываем по формуле: Risk = k * atr, где к – коэффициент риска, atr – текущее значение индикатора ATR.

– Для расчета стоп заявок используем соответствующие методы MarkуtToMarket для тиков и свечек.

– Объем входа в позицию рассчитываем по формуле: Volume = Math.Min(currentFunds * riskPerTrade / risk, currentFunds / initialMargin), где currentFunds – текущие доступные денежные средства, initialMargin – гарантийное обеспечение, riskPerTrade – процент риска, risk – риск (см. выше).

3) Стратегия «Каналы Дончиана» (Donchian Channels)

DonchianChannel

Описание: За основу взята стратегия на каналах Дончиана – www.oxfordstrat.com/trading-strategies/adx

Исходные данные: Свечки или тики. Свечки используются для расчета индикаторов. Для более точного расчета алгоритмических заявок в качестве исходных данных можно использовать тики.

Алгоритм: Строится два канала Дончиана – ChannelOne и ChannelTwo. Канал Дончиана – это пара индикаторов Highest и Lowest. Период внутреннего канала ChannelTwo устанавливаем в 2 раза меньше периода внешнего канала ChannelOne.

Входим в позицию: Покупаем, когда цена касается канала UpperChannelOne. Продаем, когда цена касается канала LowerChannelOne.

Закрываем позицию: Покупаем, когда цена касается канала UpperChannelTwo. Продаем, когда цена касается канала LowerChannelTwo.

Дополнительно:

– Фильтр два индикатора ADX. Торгуем только если ADX_Look_Back > ADX_Threshold

– По индикатору ATR определяем стоп цену для стоп заявки (stopPrice = newOrder.Price – atr*AtrStop)

Опции: Защита позиции алгоритмической стоп заявкой с выставлением лимитных заявок глубоко в стакан для исполнения как рыночных.

4) Стратегия «Линии Боллинджера» (Bollinger Bands)

BollingerBands

Описание: Простая стратегия на основе индикатора линиии Боллинджера (Bollinger Bands).

Исходные данные: Свечки.

Алгоритм: Свечка пересекает канал Боллинджера снизу вверх – продаем, сверху вниз – покупаем.

5) Скользящие средние (Simple Moving Average)

SMA

Описание: Стратегия работает на пересечении двух простых скользящих средних.

Исходные данные: Свечки или тики. Свечки используются для расчета индикаторов. Для более точного расчета алгоритмических заявок в качестве исходных данных можно использовать тики.

Алгоритм: Когда “длинная” скользящая средняя пересекает “короткую” – продаем, наоборот – покупаем.

Опции:

– Защита позиции алгоритмической стоп заявкой с выставлением лимитных заявок глубоко в стакан для исполнения как рыночных

– Алгоритмическое снятие лимитных заявок по таймеру в случае неисполнения за указанный период времени

Постепенно будем пополнять этот список торговых стратегий.

Что еще планируем опубликовать:
– Коды алгоритмических заявок: стоп и трейлинг-стоп, тейкпрофит, снятие заявок по таймеру, котирование и т.д.
– Различные конверторы данных, например, конвертер ордерлога в трейды, биржевой стакан и Level1
– Коды стандартных и не стандартных индикаторов и т.д.

 

SoftAlgoTrade

About The Author