Для работы коннектора MoexFixFastTwimeFutures с демосчетом, про оформление которого я рассказывал в предыдущей статье https://smart-lab.ru/company/os_engine/blog/1070161.php, необходимо дополнительно настроить некоторые сетевые соединения. Тоже самое потом касается и реала!
В части взаимодействия с интерфейсами FIX Gate и TWIME ничего настраивать не требуется, подключение осуществляется по протоколу ТСР через Интернет.
Дополнительные манипуляции потребуются для получения рыночных данных по протоколу FAST:
Продолжаем знакомить вас с новым профконнектором платформы OsEngine для Московской биржи. Не обязательно и даже вредно сразу разбираться с таким сложным подключением в реале. Поэтому будем учиться получать демку. Нам необходим доступ к тестовому контуру срочного рынка.
Для его получения надо заполнить анкету на сайте Московской биржи по адресу: https://www.moex.com/ru/forms/poll/questionnaire.aspx?id=03
После заполнения личных данных указываем, что необходимо подключение к срочному рынку, полигон Т0, через Интернет.
Приступая к разработке коннектора, я надеялся на наличие подробных инструкций с образцами кода, желательно на языке C#, который мы используем в OsEngine, но пришлось довольствоваться тем, что было припрятано в глубинах FTP-серверов Московской биржи.
Во-первых, для поиска инструкций на сайте Московской биржи надо зайти в раздел Технологические решения и перейти на вкладку Шлюзовое подключение.
Находим транзакционные интерфейсы срочного рынка TWIME и FIX Gate.
На странице, посвященной интерфейсу TWIME, есть ссылка на документацию, которая ведет на FTP-сервер:
Сегодня будем разбираться, зачем в терминалах для алго нужна такая абстракция, как «Позиция» или Position. У нас была техническая статья по этой теме, но вопросы продолжают поступать… И надо концептуально ещё раз объяснить.
И пока они были на плаву, было СИЛЬНО проще объяснить, как устроен наш слой создания роботов и зачем там позиции… (UPD. Да что там! У нас просто не было инструкций, люди приходили из велза и начинали молча делать роботов правильно!)
Механика управления позициями, способы их открытия и способы их закрытия пришли в OsEngine из Wealth Lab. Не целиком, но почти, и на данный момент слой увеличен раз в пять. И Wealth lab – прекрасный терминал для Алго! Когда-то этот терминал был очень популярен в России и имел приятный на тот момент интерфейс.
Если посмотреть на скрипт в Wealth-Lab, то можно обнаружить много общего с тем, что в скриптах OsEngine:
В этом видео рассмотрим один из способов узнать оптимальное соотношение объёмов между роботами. Ансамблирование объёмов, которое можно делать вручную в журнале OsEngine. Эта информация актуальна, если вы торгуете несколькими роботами одновременно.
VK Видео:
RuTube:
Как не попасть на «логические ошибки тестирования» и сделать робота правильно.
Заметка про то, как организовать логику робота, если Вы собираетесь вести большие тесты на свечных данных, а так поступают (или должны бы поступить) 95% всех, кто торгует роботами.
В общем, тема важная.
Основной её тейк такой: Если делаешь робота для тестов на свечках, старайся делать всю логику в событии завершения свечи.
И далее почему.
Отдельно на этом остановлюсь. И Арбитражи, и скринеры, и ребалансировщики, и тесты на одном инструменте – всё это просто и быстро тестируется на свечных данных.
При этом, если использовать ленту сделок для тестов, сразу же можно напороться на увеличение сложности тестирования в десятки раз (а то и в сотни).
Поэтому, если у тебя не ХФТ, использовать надо для тестов свечи.
В рамках слоя создания роботов есть события, подходящие для создания логики на тестах. В основном это конечно же:
Рассмотрим пример того, как усреднять позицию, выставляя в рынок одновременно несколько ордеров.
Это стало возможно совсем недавно, т.к. камрады из сообщества очень просили. Методы, которыми будем пользоваться для усреднения позиций, называются BuyAtLimitToPositionUnsafe и SellAtLimitToPositionUnsafe. В отличие от старых методов (Без приписки Unsafe), данные методы не убирают предыдущие ордера на усреднение, и можно выставить в рынок множество ордеров.
Точка входа у робота контртредовая на канале Envelops.
Итоговая логика робота на графике выглядит так:
Шорт, прикрытый стоп ордером, выход в плюс через профит, и два лимитных ордера на бирже для усреднения.
На ГитХаб в репозитории OsEngine это находится здесь:
https://github.com/AlexWan/OsEngine
Внутри проекта здесь:
Рассмотрим пример того, как выходить из позиции двумя (вообще можно больше, но в примере 2) лимитными ордерами одновременно.
Это стало возможно совсем недавно, т.к. камрады из сообщества очень просили. Метод, которым будем пользоваться для закрытия позиций, называется CloseAtLimitUnsafe. Отличие от CloseAtLimit такое:
Точка входа у робота контртредовая на канале Envelops.
Итоговая логика робота на графике выглядит так:
Шорт, прикрытый стоп ордером, и два лимитных ордера на бирже для закрытия в прибыль.
На ГитХаб в репозитории OsEngine это находится здесь:
Паттерн позволяет разделить логику тестирования от логики реального входа внутри робота для того, чтобы при входе и выходе не «рисовать свечи» своими большими заявками.
Очень важная заготовка паттерна управления позицией для тех, у кого много денег на счету. В том числе разберём исходный код, чтобы Вы могли модернизировать свои способы входа в реале, опираясь на данные исходники. В примере логика айсберга выделена в отдельный объект и использована многопоточность, но её надо будет переиспользовать без изменений, поэтому не пугайтесь, кто не программист, переиспользовать удастся. Будете входить, как захотите в реале.
Итоговая логика робота на графике в реале выглядит так:
В примере на графике получилось даже зайти лучше, чем если бы мы это делали одним ордером.
Сам робот – классический отбойник от боллинджера с выходом в % по стопу и профиту. Выход также в реале через «кастомный айсберг».
На ГитХаб в репозитории OsEngine это находится здесь: