Вот, допустим,
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 (это законно?).
(
Читать дальше )