В данной статье будем учиться подключать OsEngine к TwelveData. Это международный сервис, предоставляющий данные о торгах на мировых площадках: акции США и Индии, ETF, валютные пары и товары. Доступны как исторические данные, так и трансляция цен в реальном времени.
Алготрейдерам данные нужны для тестирования своих алгоритмов, а трансляция цен в реальном времени — для работы арбитражных роботов. Торговля через данный коннектор не поддерживается, доступно только получение данных.
Ссылки:
1) https://github.com/AlexWan/OsEngine — наш терминал для алготрейдинга.
2) https://twelvedata.com — поставщик данных, о котором идёт речь в статье.
Доступные классы бумаг:
— Акции США.
— Акции Индии.
— ETF США.
— ETF Великобритании (биржа LSE).
— Валютные пары (Forex).
— Товары (commodities, фьючерсы не поддерживаются).
Доступные таймфреймы: 1 минута, 5 минут, 15 минут, 30 минут, 1 час, 2 часа, 4 часа, 1 день. Скачиваются только свечи. Лента сделок и стакан исторически недоступны.
Заключительная статья цикла «Сектора в алго». Мы разобрали базу (девять секторов, 39 бумаг) и двух роботов для торговли секторов по отдельности. В этой статье рассмотрим, как это работает вместе: монитор секторов, парковка денег в TMON и совместный запуск двух роботов на одном счёте.

Трендовый робот не торгует всё время. Когда рынок в боковике и сильных секторов нет — деньги должны работать. Для этого рядом с роботами сборника запускается готовый бот TMONRebalancer из OsEngine: вечером он покупает фонд денежного рынка TMON на свободные средства, утром продаёт. Капитал в боковике лежит не рублями, а ставкой денежного рынка.
Важная деталь честности: в тестере TMONRebalancer тоже запускался рядом с роботами — результаты комплекта ниже посчитаны именно так, с парковкой, а не «голые».
Итого: комплект состоит из трёх роботов, и запускать их нужно именно так — вместе, на одном портфеле, и в тестере, и в реале.
Продолжаем цикл «Сектора в алго». В прошлой статье разобрали SectorsSetBollingerMomentum: пробой полос Боллинджера с моментумом. Сегодня на очереди второй робот сборника: SectorsSetAlligatorTurtle. Та же секторальная рама, другой двигатель: классический черепаший пробой ценового канала плюс Аллигатор Билла Вильямса.
1) Торговая идея
Робот отвечает на те же два вопроса: ГДЕ торговать и КОГДА входить. «Где» решает тот же монитор секторов по среднему RSI: торговать разрешено только в топ-N сильнейших секторах (по умолчанию пять).
«Когда» решают два классических индикатора трендовой торговли. Первый — черепахи Ричарда Денниса: покупаем пробой верхней границы длинного ценового канала (канала Дончиана). Второй — Аллигатор Билла Вильямса: три сглаженные линии должны стоять в правильном порядке — губы выше зубов, зубы выше челюсти. Пасть открыта вверх, значит, тренд жив.
Итого: сильный сектор + открытая пасть Аллигатора + пробой длинного канала = вход в лонг.
Продолжаем цикл «Сектора в алго». Базу мы собрали: девять секторов, 39 бумаг. Теперь разберём первого робота сборника. SectorsSetBollingerMomentum торгует импульсный пробой полос Боллинджера, но только внутри самых сильных секторов рынка.

Робот отвечает на два вопроса: ГДЕ торговать и КОГДА входить.
Где — решает монитор секторов. На каждой бумаге каждого сектора считается RSI. Средний RSI сектора — это его сила прямо сейчас. Сектора сортируются по силе, и торговать разрешено только в топ-N (по умолчанию — в пяти). Слабые сектора робот игнорирует полностью.
Когда — решает импульсный пробой. Внутри разрешённого сектора робот ждёт, когда бумага разгонится: моментум выше порога, цена ушла выше середины канала Боллинджера, но ещё не над верхней полосой. Тогда на верхнюю полосу выставляется стоп-заявка на покупку: сработает — значит, пробой состоялся.
Итого: сильный сектор + разогнавшаяся бумага + подтверждённый пробой = вход в лонг.
Продолжаем цикл «Сектора в алго». В первой статье мы обрисовали идею: торгуем сильнейшие бумаги в сильнейших секторах. В этой статье разберём три вопроса: какие сектора есть на Московской бирже, что входит в каждый и как из почти сотни бумаг мы отобрали 39, которыми торгуют роботы.
1) Сектора на MOEX
Московская биржа делит рынок акций на десять отраслей, и у каждой есть отраслевой индекс. Вот полный список:
— Нефть и газ (индекс MOEXOG)
— Финансы (MOEXFN)
— Металлы и добыча (MOEXMM)
— Потребительский сектор (MOEXCN)
— Телекоммуникации (MOEXTL)
— Транспорт (MOEXTN)
— Электроэнергетика (MOEXEU)
— Химия и нефтехимия (MOEXCH)
— Информационные технологии (MOEXIT)
— Недвижимость (MOEXRE)
Важно понимать: отраслевой индекс — это не просто цифра на сайте биржи. Это официальная корзина: биржа сама решает, какие бумаги к какому сектору относятся, и пересматривает состав каждый квартал. Мы берём эту готовую классификацию как основу, а не выдумываем свою.
Продолжаем цикл «Синтетические облигации в алго».
До этого мы разбирали арбитражных роботов, которые входили в синтетическую облигацию в основную торговую сессию.
В этой статье покажем робота иного склада: SyntheticBondsScalper. Позиция «лонг акция + шорт фьючерс» набирается у него лимитными ордерами по стакану, по уровням контрагента, асинхронно. Работает он круглосуточно — днём, ночью и в выходные, когда на рынке нет маркет-мейкера, а слабые трейдеры есть. И есть возможность собрать «по зёрнышку» позицию на 30–70% лучше по прибыли, чем LQDT.
1) Торговая идеяСинтетическая облигация — конструкция из акции (базы) и фьючерса на неё. Пока фьючерс дороже базы (контанго), позиция лонг акция + шорт фьючерс к экспирации приносит почти безрисковую доходность: цены сходятся, а раздвижка между ними забирается как прибыль.
Классика входит в такой арбитраж маркетом: две ноги уходят рыночными ордерами, и весь контанго-спред съедается проскальзыванием в стакане. Скальпер действует иначе — он снимает ликвидность постепенно, лимитками на встречной стороне:
В статье рассматривается группировка роботов в облегчённых интерфейсах OsEngine — функция для пользователей, у которых в работе десятки и сотни роботов.
Группировка позволяет разбить список роботов на именованные сворачиваемые секции и наводить порядок в боевом терминале и тестере.
1) Где работает группировка
Группировка доступна в двух облегчённых интерфейсах:
Bot Station Lite — облегчённое окно боевого терминала;
Tester Lite — облегчённое окно тестера.
Оба окна рисуют список роботов одним общим компонентом, поэтому группировка в них работает одинаково. В классических (тяжёлых) интерфейсах с графиками группировки нет.
В статье разбираем учебного робота ServerStopOrdersSample — готовый пример торговли внешними (серверными) стоп-ордерами.
Робот показывает полный цикл работы с внешним стопом: выставление, ожидание активации, контроль исполнения порождённой биржей заявки, снятие по таймауту и перевыставление по актуальной цене.
Исходный код открыт и доступен на GitHub — ссылка в конце статьи. Робот демонстрирует механику внешних стоп-ордеров и не ставит целью получение прибыли.
Робот торгует только в Long и использует внешний стоп-лимит как способ войти в позицию при подтверждении движения цены вверх. Внешний стоп хранится на бирже, поэтому активация происходит даже при выключенном терминале, а заявка порождается биржей без задержки на отправку.
Особенность примера — контроль исполнения по времени. Стоп-лимит не гарантирует исполнения: цена может коснуться уровня активации и уйти дальше, а лимитная заявка останется неисполненной. Поэтому у каждого ордера есть лимит времени на исполнение. Если ордер не успел исполниться, робот снимает его и перевыставляет по текущим ценам.
В статье рассматривается механика внешних (серверных) стоп-ордеров в OsEngine: как поддержка включается в коннекторе, какие коннекторы её имеют, как устроен жизненный цикл внешнего стопа и как он хранится внутри позиции.
До этого момента все стопы внутри платформы были внутренние. Теперь у нас появился механизм для выставления внешних. Пока в тестовом режиме и не для всех коннекторов. После бета-тестирования и как устоится – данный вид стопов будет проброшен по большинству популярных коннекторов в OsEngine.
Внутренний стоп-приказ хранится внутри OsEngine: движок сам отслеживает цену последней сделки и отправляет ордер на рынок только после достижения цены активации.
Внешний стоп-приказ сразу отправляется на биржу и хранится там. За ценой активации следит биржа и сама порождает заявку при касании уровня. Основные следствия:
стоп срабатывает, даже когда OsEngine выключен или потерял связь с сервером;
исключается задержка между касанием уровня и выставлением заявки — активацию выполняет биржа;
Добавлен функционал для быстрого переноса роботов из тестовой станции в торговую и обратно. Эта инструкция объясняет, как это работает.
Кнопка «Миграция» позволяет сохранить всех роботов из таблицы вместе с настройками в один файл (пресет), а затем загрузить роботов из этого файла обратно.
Загрузить пресет можно:
— в том же окне (например, чтобы сделать копию робота);
— в другом окне: из Тестера Лайт в Роботы Лайт и обратно;
— на другом компьютере (перенесите файл любым способом и загрузите).
Кнопка находится в таблице роботов: в нижней строке, в последней колонке справа — там же, где кнопки «Общий журнал» и «Добавить бота». Она есть и в Тестере Лайт, и в Роботах Лайт.