Вот, допустим,
bars он же
OHLC(V), его более-менее частный вариант
trade (price, size) — конкретная сделка, еще есть
quotes (ask, ask size, bid, bid size). Очень часто trade и quote объединяют в некий
«tick» (иногда также называемый quote
;)), но
английская вики говорит что этот самый «tick» всего-лишь шаг возможной цены, то есть употребление этого термина некорректно.
В связи с этим всем возникает ряд вопросов (PS: в смартлабовский «Задать вопрос» не уложился):
- Какие данные используете для торговли?
- Какие данные используете для бэктеста?
- Как это все систематизировать? Вот мое предложение:
struct Bar {
open: f64,
high: f64,
low: f64,
close: f64,
volume: Option<u32>,
}
struct Trade {
price: f64,
size: u32,
}
struct Quote {
ask: f64,
ask_size: u32,
bid: f64,
bid_size: u32,
}
enum Price {
Bar(Bar),
Trade(Trade),
Quote(Quote),
}
trait MarketData {
fn prices(&self) -> &HashMap<&'static str, Price>;
fn timestamp(&self) -> &OffsetDateTime;
}
То-есть создать объединение из bar, trade, quote и назвать его price (это законно?). НО тогда будут проблемы с одновременным их использованием. И возникает вопрос: кто-нибудь использует эти данные одновременно? (слышал что кто-то входит по trades, а логика на барах). Из-за схожести bar и trade в некоторых фреймворках используют только их, и тут возникает еще один вопрос, о надобности quote.
Помагите пж, а то голова пухнет(