Большинство роботов в OsEngine видят и управляют только своими личными позициями. Теми, которые хранятся только в журнале конкретного робота. Роботы открывают и закрывают позиции, управляют ими и видят их только у себя в журнале.
На картинке ниже, изображена разница между позицией на бирже (PositionOnBoard) и позициями (Positioin) у роботов. Из этой картинки Вы должны понять, что у роботов по одному инструменту может быть много позиций (и даже в разные стороны), а в портфеле на бирже она всегда одна:
Когда робот хочет купить или продать какой-то инструмент на бирже, он открывает позицию, которую видит только он и которую можно увидеть в его журнале.
Когда робот хочет выйти из какого-то актива, то робот должен закрыть позицию.
Для тех, кто торговал много лет только в Quik, данная концепция болезненна. Однако, это пришло в OsEngine из WealthLab, а это является мировым стандартом написания роботов уже много лет. Придётся очень плотно работать с этим классом и привыкать к такой абстракции.
Продолжаем связывать данные из терминалов на бирже с тем, как это видят роботы.
Сегодня поговорим про портфель на бирже. Это Ваш «кошелёк», на котором хранятся деньги (активы) и позиции по акциям и деривативам. В вёб-терминале это выглядит как-то так:
В процессе ведения торговой деятельности на финансовом рынке пользователь так или иначе приобретает права на активы, не важно какие, будь то акции, облигации, опционы, криптовалютные пары или любые другие.
Вследствие этого возникает необходимость хранить всю эту информацию в определенном месте. В OsEngine этим целям служит класс Portfolio, представляющий собой реализацию такой абстрактной сущности, как брокерский счет на классических биржах или же кошелек на криптовалютных биржах.
Внутри терминала OsEngine данная сущность хранится в классе Portfolio.
На ГитХаб данный класс хранится по адресу: https://github.com/AlexWan/OsEngine/blob/master/project/OsEngine/Entity/Portfolio.cs
Сегодня поговорим про инструменты и как они представлены внутри OsEngine. Они Вам обязательно в какой-то момент пригодятся, т.к. из них можно получить очень много полезной информации, такой как гарантийное обеспечение, точность цены, максимальную цену покупки и т.д.
В терминале мы видим их где-то здесь:
Любой торговый инструмент в OsEngine описывается классом Security. В объекте хранятся важные параметры инструмента, которые часто бывают необходимы в торговом алгоритме.
Кроме того, биржевым инструментом может быть и индекс. Т.е. торговать его нельзя, но информацию по нему получать можно.
За предоставление информации по инструментам в OsEngine отвечает класс Security. Посмотреть на него на ГитХаб можно здесь: https://github.com/AlexWan/OsEngine/blob/master/project/OsEngine/Entity/Security.cs
В самом проекте он находится тут:
Продолжаем связывать данные из терминалов на бирже с тем, как это видят роботы.
Сегодня поговорим про сделки по нашему счёту. Они появляются в момент исполнения наших ордеров. В своих вёб-терминалах мы видим их примерно так:
В одной из предыдущих статей мы говорили об обезличенных сделках, которые доступны всем участникам торгов. В этой поговорим про собственные сделки, которые отличаются от обезличенных расширенным набором информации и доступны только их владельцу.
Как мы знаем, все сделки генерируются в момент исполнения ордеров, следовательно, каждая собственная сделка в дополнение к полям, присутствующим в обезличенных трейдах, будет содержать номер своего ордера-родителя.
Итого, процесс генерации моей сделки выглядит так:
Продолжаем связывать данные из терминалов на бирже с тем, как это видят роботы.
Сегодня поговорим про стакан или книгу заявок, как ещё это иногда называют. Почти в любом вёб-терминале он имеет такой вид:
Неотъемлемым атрибутом любой торговой площадки является такая сущность, как книга заявок.
Абсолютно все сделки после валидации попадают в ядро биржи, в котором специальный алгоритм сводит покупателей с продавцами.
У книги заявок есть два сортированных списка. Первый называют бидами (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
Вся наша команда и я там сутками. Можно позадавать вопросы и пообщаться.
Комментарии открыты для друзей.
Удачных алгоритмов!