Продолжаем разбираться со слоем создания свечек. Заключительная статья. Сегодня рассмотрим серию Tick сверху вниз и разберёмся с тем, как она работает. Этого должно быть достаточно, чтобы на основе этого делать свои серии.
1. Где находится серия Tick?
2. Параметры и метод OnStateChange.
- Единственный параметр данной серии свечек – TradeCount. Это параметр для целочисленного значения, регулирующий кол-во трейдов, после набора которых свеча закрывается.
- Параметр TradeCount создаётся в методе OnStateChange, когда метод вызывается со статусом Configure (т.е. при создании серии). Вам точно также надо будет создавать все параметры здесь.
- Когда метод OnStateChange вызывается со статусом ParametersChange, т.е. при смене значения параметра, свечи внутри серии очищаются.
- Если данный метод вызывается со статусом Dispose, не происходит ничего. Однако в Вашей серии вы можете здесь очищать какие-нибудь данные, если Вы их накапливаете.
3. Метод UpDateCandle. Параметры метода.
В этот метод поступают данные с рынка. От самого старого трейда до самых свежих в порядке их появления в коннекторе.
Именно в нём нужно собирать свечи, аккуратно их складывая в массив CandlesAll.
Что входит в этот метод:
- time — Время данных.
- price — Цена трейда или цена центра стакана. В зависимости от того, из каких данных формируется свеча.
- volume — Объём трейда.
- canPushUp — Нужно ли высылать наверх данные об изменении цены. Если приходит FALSE, вызывать события обновления свечи не следует. Это означает, что идёт предварительная прогрузка серии на старте.
- side – сторона сделки. Buy / Sell. Это нужно для некоторых типов свечей. Например, Delta.
4. Метод UpDateCandle. Формирование свечей.
При формировании любых серий свечей можно условно разбить логику на три различных этапа:
- Данные пришли в первый раз, и нужно сформировать первую свечку.
- Уже какие-то свечи есть, и мы понимаем по какому-то признаку, что свечу нужно закрыть. В данном случае, признак закрытия – превышение кол-ва трейдов внутри свечи.
- Данные пришли внутри свечи. Нужно обновить её OHLC.
Рассмотрим три эти ситуации подробнее.
Этап 1. Данные пришли в первый раз.
- Создаём новый массив для хранения свечек.
- Ровняем стартовое время для первой свечи.
- Создаём свечку. Указываем её OHLCV, время и статус Started. Добавляем в массив.
- Высылаем наверх, если разрешено.
- Устанавливаем текущее кол-во трейдов в формирующейся свече. Это нужно только для свечей типа Tick.
Этап 2. Свечу пора закрывать.
- Устанавливаем для свечи статус Finished и высылаем наверх, если разрешено.
- Обрезаем стартовое время для новой свечи.
- Создаём свечку. Указываем её OHLCV, время и статус Started. Добавляем в массив.
- Высылаем наверх, если разрешено.
- Устанавливаем текущее кол-во трейдов в формирующейся свече. Это нужно только для свечей типа Tick. Выходим из метода.
Этап 3. Данные внутри свечи.
- Добавляем 1 к кол-ву трейдов в формирующейся свече. Это нужно только для свечей типа Tick. Выходим из метода.
- Обновляем OHLCV для текущей формирующейся свечи.
- Высылаем наверх, если разрешено.
Удачных алгоритмов!
Комментарии открыты для друзей!
Пост из серии «Свечи и преобразование ленты сделок».
OsEngine: https://github.com/AlexWan/OsEngine
FAQ: https://o-s-a.net/os-engine-faq
Поддержка OsEngine: https://t.me/osengine_official_support
Регистрируйся в АЛОР и получай бонусы: https://www.alorbroker.ru/open
Сайт АЛОР БРОКЕР: https://www.alorbroker.ru
Раздел «Для клиентов»: https://www.alorbroker.ru/openinfo/for-clients
Программа лояльности от АЛОР БРОКЕР и OsEngine: https://smart-lab.ru/company/os_engine/blog/972745.php