Пример робота на внешних стопах для OsEngine

Пример робота на внешних стопах для OsEngine

 

В статье разбираем учебного робота ServerStopOrdersSample  — готовый пример торговли внешними (серверными) стоп-ордерами.

Робот показывает полный цикл работы с внешним стопом: выставление, ожидание активации, контроль исполнения порождённой биржей заявки, снятие по таймауту и перевыставление по актуальной цене.

Исходный код открыт и доступен на GitHub — ссылка в конце статьи. Робот демонстрирует механику внешних стоп-ордеров и не ставит целью получение прибыли.

 

1) Торговая логика

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

Особенность примера — контроль исполнения по времени. Стоп-лимит не гарантирует исполнения: цена может коснуться уровня активации и уйти дальше, а лимитная заявка останется неисполненной. Поэтому у каждого ордера есть лимит времени на исполнение. Если ордер не успел исполниться, робот снимает его и перевыставляет по текущим ценам.

 

2) Логика работы

Вход в позицию:

Робот выставляет внешний стоп-лимит на покупку. Цена активации — лучший аск плюс отступ (параметр «Trigger offset percent»). Лимитная цена порождённой заявки — ниже цены активации на величину отступа «Limit offset percent».

 

Если за заданное число свечей (параметр «Candles to wait») ордер не исполнился, робот снимает его и перевыставляет по актуальным ценам. Причин может быть две: стоп не активировался либо порождённая лимитная заявка не исполнилась.

Если лимитная заявка исполнена, позиция открыта.

 

Выход из позиции:

На следующей свече после открытия позиции робот выставляет закрывающий внешний стоп-лимит на продажу. Механика зеркальная: цена активации — лучший бид минус отступ, лимитная цена — выше цены активации.
Если закрывающий ордер не исполнился за заданное число свечей, он снимается и перевыставляется по актуальным ценам.

Робот работает одинаково в боевом подключении и в тестере: на серверах без поддержки внешних стопов методы автоматически переключаются на внутренние стопы OsEngine.

 

 

3) Настройки робота

Параметры разбиты на две вкладки.

 

Вкладка «Base»:

On (торговля включена) или Off (торговля выключена, активный ордер на вход снимается);

Volume — объём позиции в лотах.

 

 

Вкладка «Order prices»:

Trigger offset percent — отступ цены активации от лучшей цены стакана, в процентах (по умолчанию 0,05%);

Limit offset percent — отступ лимитной цены порождённой заявки от цены активации, в процентах (по умолчанию 0,05%);

Candles to wait — число свечей, отводимое ордеру на исполнение (по умолчанию 5).

 

 

4) Как это выглядит в коде

Выставление внешнего стоп-лимита на вход выполняется одним методом торговой вкладки BotTabSimple:

_tab.BuyAtStopOnServer(volume, priceLimit, priceActivation, "ServerStopLimitEntry");

Закрытие позиции внешним стопом:

_tab.CloseAtStopOnServer(pos, activation, priceOrder, "ServerStopLimitExit");

Робот не делит логику на «тестер» и «боевой сервер». Он запоминает свечу, на которой выставлен ордер, и по истечении заданного числа свечей снимает живой ордер. Для внутренних стопов используется BuyAtStopCancel, для внешних — CloseOrder; оба вызова безопасны в «чужом» режиме.

 

5) Где найти

Робот находится в папке Robots/TechSamples. В списке роботов он доступен под именем ServerStopOrdersSample.

Исходный код на GitHub: https://github.com/AlexWan/OsEngine/blob/master/project/OsEngine/Robots/TechSamples/ServerStopOrdersSample.cs

Удачных алгоритмов!

Скачать OsEngine: https://github.com/AlexWan/OsEngine

Официальная поддержка OsEngine в MAX:
https://max
Канал Научный трейдинг в MAX: https://max.ru/

Поддержка OsEngine в Телеграм: https://t.me/osengine_official_support 
Канал Научный трейдинг (Bad Quant) в Телеграм: https://t.me/bad_quant

https://www.tbank.ru/invest/

 

—
17:52
146

Комментарии

Нет комментариев. Ваш будет первым!