Блог им. sariato

Теория - получение OHLCV из тиковой таблицы

Всем привет!

Заранее оговорюсь, меня интересует исключительно теория, что с чем складывать/умножать/вычитать и тд, с кодом я сам справлюсь. Поэтому, даже если вы не разработчик, любой совет будет полезным.

Я разработчик, пишу инструмент на C# по переводу тиковой таблицы в 1-минутную с OHLC-данными и объемом. Работаю с фьючерсами.
Прошу помочь разобраться, поделиться опытом. Может кому-то тоже будет полезно. 

В итоге, я хочу получить 5 разных OHLCV-данных:
1. OHLCV цен контрактов.
2. OHLCV объема (не цены, а объема) контрактов на покупку. Это о том, сколько всего контрактов на покупку в течение 1 минуты.
3. OHLCV объема контрактов на продажу. Это о том, сколько всего контрактов на продажу стоит в течение 1 минуты.
4. OHLCV объема заявок на покупку. Это о том, сколько всего заявок на покупку стоит в течение 1 минуты.
5. OHLCV объема заявок на продажу. Это о том, сколько всего заявок на продажу стоит в течение 1 минуты.

Я в финансовой теме новичок, пытался разобраться, но боюсь ошибиться.
В таблице есть T-строки (Trade, примеры полей: <ACTIVITY.DATETIME>,<TRADE.PRICE>,<TRADE.SIZE>), Q-строки (Quote, поля: <ACTIVITY.DATETIME>,<BID.PRICE>,<BID.SIZE>,<ASK.PRICE>,<ASK.SIZE>), так же в первой H-строке заголовка (Header) есть поля <YEST.TRADE.CLOSE>,<YEST.TRADE.VOL> — это данные предыдущего дня — последняя цена закрытия, последний объем. Пример таблицы скопировал ниже.

Вопросы:
1. Нашел в сети принцип построения OHLC свечи. Верный ли он?
«Если это первый тик минуты, цена открытия = цена тика, минимальная цена = цена тика, максимальная цена = цена тика. Цена закрытия предыдущей минуты равна цене закрытия.
Если не первый тик минуты, выберите самую низкую цену, а также самую высокую цену.»
Т.е., в случае с ценами, в первой минуте за цену Close берем из поля <YEST.TRADE.CLOSE>, остальное как описано выше, правильно понимаю?

2. Как правильно вычислить объем сделок — Volume (на графике свечей вертикальные линии внизу)? Нужно использовать для этого <TRADE.SIZE>, верно? Или что-то другое.
Пример, что я понимаю под объемом:
100 долларов — 100 сделок
101 долларов — 20 сделок
99 долларов — 10 сделок
Итого, объем — 100+20+10=130 сделок.

3. Как правильно вычислить OHLCV объемов контрактов на покупку/продажу и объемов заявок на покупку/продажу (т.е. объем на начало минуты, высший объем, низший объем и тд), это уже будет исходят из объемов 2 пункта?

4. Правильно ли, если я буду использовать поле <BID.SIZE> для вычисления объема контактов на покупку?
5. Правильно ли, если я буду использовать поле <ASK.SIZE> для вычисления объема контактов на продажу?

Благодарю за помощь!

Таблица фьючерсов:
__________________
##TICKER.PLANT=8
##PRIMARY.FILE.SIGNATURE=841249294+325504988 (Internal Use)
#D=H|<ENUM.SRC.ID>|<SYMBOL.TICKER>|<CURRENCY.STRING>|<ISIN>|<SEDOL>|<CUSIP>|<DISPLAY.PRECISION>|<TRADE.OPEN>|<OPEN_INT>|<YEST.TRADE.CLOSE>|<YEST.TRADE.VOL>|<SETTLE.DATE>|<SETTLE.PRICE>|<EXPIRATION.DATE>|<FRONT.MONTH.CONTRACT>|<ENUM.INSTR.TYPE>|<LOT.SIZE>|<CONTRACT.SIZE>|<VARIABLE.TICK.SIZE>|<MKT.SEGMENT>
#D=T|<TAS.SEQ>|<RNR.END.EXCH.SEQ>|<ACTIVITY.DATETIME>|<TRADE.PRICE>|<TRADE.SIZE>|<TRADE.COND_1>|<PART.CODE>|<VWAP>|<TRADE.DATETIME>|<EXCH.MESSAGE.TIMESTAMP>|<TRADE.COND_2>|<TRADE.COND_3>|<TRADE.OFFICIAL.TIME>|<TRADE.COND_4>|<TRADE.COND_5>|<EXTENDED.TRADE.COND>|<TRADE.OFFICIAL.DATE>|<RETRANSMISSION.FLAG>|<AGGRESSOR.SIDE>|<TRADE.UNIQUE.ID>
#D=Q|<TAS.SEQ>|<RNR.END.EXCH.SEQ>|<ACTIVITY.DATETIME>|<BID.PRICE>|<BID.SIZE>|<ASK.PRICE>|<ASK.SIZE>|<QUOTE.COND_1>|<PART.CODE>|<QUOTE.DATETIME>|<EXCH.MESSAGE.TIMESTAMP>
#D=S|<TAS.SEQ>|<ACTIVITY.DATETIME>|<INSTR.STATUS>|<EXCH.MESSAGE.TIMESTAMP>|<TRADABLE.STATUS>|<MARKET.PHASE>
H|817|F:AF\H21|RUB||||6|6967|69170|6968|24312|1615939200|6964|20210319||1024||100.0|1.00000|0
T|11||1615954022.1954|7046|1|0||7047.859122|1615954022.1954|40702165|||40702160308251||||20210317||2|307224898174321368
Q|12||1615954022.1954|7046|4|7049|20|||1615954022.1954|
Q|13||1615954327.3543|7046|4|7050|16|||1615954327.3543|
T|14||1615954582.2266|7046|1|0||7047.858264|1615954582.2266|41622195|||40702160308251||||20210317||2|307224898174321368
Q|15||1615954590.4962|7046|4|7050|16|||1615954590.4962|
Q|16||1615954590.4962|7046|4|7050|16|||1615954590.4962|
Q|1||1615952739.0391|0|5|7050|0|||1615952739.0391|
Q|2||1615952739.0391|6900|2|7050|0|||1615952739.0391|
S|3|1615953600.8611|17|40000828|1|4
Q|4||1615953601.3659|6900|2|7079|92|||1615953601.3659|
Q|5||1615953601.4004|6908|111|7079|92|||1615953601.4004|
S|6|1615953603.4038||40003376|1|4
Q|7||1615953612.409|7028|32|7079|92|||1615953612.409|
Q|8||1615953612.409|7028|32|7068|7|||1615953612.409|
Q|9||1615953623.8241|7028|32|7056|48|||1615953623.8241|
Q|10||1615953745.7116|7028|32|7049|20|||1615953745.7116|

★1

теги блога sariato

....все тэги



UPDONW
Новый дизайн