Продолжаем связывать данные из терминалов на бирже с тем, как это видят роботы.
Сегодня поговорим про стакан или книгу заявок, как ещё это иногда называют. Почти в любом вёб-терминале он имеет такой вид:
Неотъемлемым атрибутом любой торговой площадки является такая сущность, как книга заявок.
Абсолютно все сделки после валидации попадают в ядро биржи, в котором специальный алгоритм сводит покупателей с продавцами.
У книги заявок есть два сортированных списка. Первый называют бидами (Bids), хранит все лимитные заявки на покупку, лучшим в списке считается ордер с наивысшей ценой. Второй называют асками (Asks). Список хранит все заявки на продажу, в котором лучшей заявкой считается ордер с наименьшей ценой.
При наличии нескольких заявок с одинаковой ценой лучшей из них считается та, которая была получена раньше остальных. На основании книги заявок строится агрегированный стакан котировок, который мы привыкли видеть во всех терминалах и интерфейсах бирж. К примеру, в популярной бирже он выглядит так:
Продолжаем связывать данные из терминалов на бирже с тем, как это видят роботы.
Сегодня поговорим про Ордера (Заявки). Мы их создаём в момент, когда хотим открыть позицию:
В одной из прошлых статей мы говорили о сделках, но сама по себе сделка не может существовать без такого понятия, как заявка.
Ордер (биржевая заявка, приказ) – это поручение, направляемое на биржу, которое выражает намерение трейдера совершить торговую операцию купли или продажи финансового инструмента. Существует несколько разновидностей ордеров, отличающихся типом заказа, особенностью исполнения и дополнительными ограничениями. По типу исполнения выделяют рыночные, лимитные и условные заявки.
Рыночный ордер исполняется сразу после поступления на биржу при наличии контрагентов в виде лимитных заявок. Такой ордер не требует установки цены. Итоговая цена исполнения будет рассчитана на основании средней цены сделок, которые появятся в результате удовлетворения заявки.
Продолжаем связывать данные из терминалов на бирже с тем, как это видят роботы.
Сегодня поговорим про свечи. В Вашем вёб-терминале Вы видите их примерно так:
Свеча представляет собой вертикально расположенный прямоугольник, по центру от которого вверх и вниз выступают линии, именуемые тенями. По сути каждая свеча является агрегатором информации о поведении цены за определенный интервал времени.
В основном Вы видите на графике Японские свечи. Про них и поговорим ниже. Однако свечей есть великое множество и по ним у нас есть отдельная серия статей. За более глубокими знаниями сюда: https://smart-lab.ru/company/os_engine/blog/1028089.php
Шаг первый. Выбор источника цен.
Для цен, из которых можно формировать свечи, берут несколько различных типов данных. Это могут быть:
Сегодня поговорим про ленту сделок.
В Вашем вёб-терминале Вы видите ленту сделок где-то здесь. Обычно это таблица:
Обезличенная сделка или трейд – все эти термины описывают факт взаимодействия между покупателем и продавцом (через сведение ордеров), результатом которого является атомарная операция передачи ценных бумаг из одних рук в другие. Записи об этом мы и видим в таблице обезличенных сделок.
Как обезличенная сделка появляется:
Почти ровно полгода назад мы закончили формирование социального лифта для начинающих программистов, желающих войти в IT рядом с алготрейдингом. Ссылка: https://smart-lab.ru/company/os_engine/blog/982134.php
Двое из них со следующего месяца выходят на пенсию (в поддержку OsEngine), которую так жаждут сторонники FIRE на СмартЛабе. Никита Буйда и Егор Ярных. Целых полгода они изучали OsEngine и работали, теперь можно и на пенсию! СЧИТАЮ, ЗАСЛУЖЕННО!
Один из камрадов, участвующих в проекте, переходит внутри своей организации из менеджеров в программисты, с повышением ЗП.
Один перешёл в наш отдел разработки роботов на заказ.
Ну и все, кто справился, конечно же получили от нашей команды наши последние разработки в сфере роботостроения, включая арбитраж 12 поколения и агрегаторы бумаг по стадиям волатильности с фильтром пилы.
Очень коротко напомню. Основная статья здесь, тут супер подробно.
У нас Open Source и его можно и нужно разрабатывать коллективно!
Кстати. Мы тут в очередной раз взялись переписывать туториалы для программистов начинающих. Возможно кто-то заметил, возможно нет. Если Вы давно хотели научиться делать роботов – велком!
Выкладываем это всё в нашем мегагайде на СмартЛабе: https://smart-lab.ru/company/os_engine/blog/1024149.php
Листайте вниз вот до этой части, это прям для самых маленьких, кто хочет научиться править скрипты, а потом уже и роботов самому делать. Знание языка СиШарп нужно минимальное:
И вместе с новыми туториалами учитесь уже работать с программой. Статьи будут выходить по 1 — 2 в течении пары месяцев в этот раздел. Постараемся старт для Вас заложить хороший. Дать базу.
Обсудить и попросить что-то добавить в гайд, о чем вам непонятно, прям мимо кассы, можно в группе поддержки: https://t.me/osengine_official_support
Вся наша команда и я там сутками. Можно позадавать вопросы и пообщаться.
Комментарии открыты для друзей.
Удачных алгоритмов!
Всё, что Вы видите у себя в вёб-терминале биржи или в QUIK, является базовым типом данных для роботов. И роботы должны их уметь анализировать. А до этого в них должен разобраться программист, который хочет этого робота создать. Этот минисборник про примитивы Вам с этим поможет.
В OsEngine существуют классы, моделирующие эти сущности, которые необходимы для работы программы. К основным типам относятся: Trade, Candle, MarketDepth, MyTrade, Order, Portfolio, PositionOnBoard, Position. Для эффективной работы вам необходимо полное понимание устройства этих объектов, поэтому далее мы подробно рассмотрим предназначение каждого из них.
Часть из вышеописанных примитивов хранятся в каталоге OsEngine\project\OsEngine\Entity. Для наглядности можно посмотреть на снимок обозревателя решений, на котором описываемые типы подчеркнуты красными линиями:
Первое, что Вы увидите, открыв OsEngine, обозреватель решения с папками справа. Главное в этот момент не испугаться.
В этих папках хранится весь проект, но для создания роботов Вам нужно примерно знать всего несколько. Ну а сами папки, по сути, можно называть «Пространства имён», которые Вы должны научиться использовать. Про это сегодня и поговорим.
Пространства имен — это способ группировки кода, который позволяет организовать логическую и удобную структуру проекта. Как правило, типы, связанные общей идеей и схожей функциональностью, содержатся в общем пространстве.
Во время разработки торговых роботов в OsEngine нужно примерно представлять откуда и что берётся. Где хранятся те или иные сущности в проекте. Рассмотрим базовые пространства, которые Вам точно пригодятся.
Начнём с того, что посмотрим, что такое пространство имён в исходном коде на примере почти любого робота, доступного в платформе. В файле с кодом пространство задается при помощи ключевого слова namespace:
Сегодня скачаем OsEngine как программист, а не пользователь. До этого у Вас уже должна быть установлена Visual Studio, что мы обсуждали в прошлой статье на тему. И Вы должны быть полны решимости научиться писать торговых роботов самому!
Ну а в этой статье скачаем свежий билд OsEngine с ГитХаб, откроем проект, как программисты это делают. А также обновим некоторые библиотеки, которые нужно подтянуть через Nuget, чтобы всё заработало.
ВАЖНО! Не забывайте про наш ГАЙД по алготрейдингу, там вы найдёте все нужные Вам инструкции и туториалы по проекту в одном месте: smart-lab.ru/company/os_engine/blog/1024149.php
Чтобы скачать OsEngine, нужно перейти по ссылке на ГитХаб. Это международное хранилище для ПО с открытым кодом.
Нажмите на зеленую кнопку Code:
Для программирования (не для запуска, а именно для разработки) торговых роботов в OsEngine вам понадобится среда разработки. Иначе они называются IDE. Это нужно для того, чтобы не писать исходный код в текстовых файлах, а делать это с комфортом и быстро.
Существует несколько программ, подходящих для этих целей. К таковым относятся Visual Studio, Rider, Visual Studio Code и другие, менее известные варианты.
Каждый выбирает то, что ему больше нравится, но, если вы затрудняетесь в выборе, мы настоятельно рекомендуем остановиться на Visual Studio Community. И в этом посте мы поговорим о том, как её установить. Программа полностью бесплатная, как и наш OsEngine.
Выбор Visual Studio будет идеальным вариантом, который закроет все ваши потребности.
Visual Studio имеет в своем арсенале как стандартные инструменты (редактор, отладчик), так и массу приятных дополнительных функций (компиляторы, оптимизаторы кода, графические конструкторы и др.), которые делают процесс разработки более продуктивным, интересным и качественным.