pub struct M10Builder { /* private fields */ }Expand description
Stream: follows M5 candle updates and keeps the M10 candle that is forming.
Every M5 update (a forming bar sent again, or a closed one) gives the current M10 candle. A bar of an older interval than the current one is a replay and is ignored.
§Examples
use std::time::Instant;
use brokapi_core::{Candle, Price, Qty, Timeframe, Timestamps, UnixNanos};
use brokapi_finam::map::m10::M10Builder;
use brokapi_finam::util::instrument_from_symbol;
let m5 = |open_secs: i64, close: i64, volume: i64| Candle {
instrument: instrument_from_symbol("SBER@MISX"),
timeframe: Timeframe::M5,
open: Price::from(100),
high: Price::from(close.max(100)),
low: Price::from(close.min(100)),
close: Price::from(close),
volume: Qty::from(volume),
open_ts: UnixNanos::from_nanos(open_secs * 1_000_000_000),
close_ts: UnixNanos::from_nanos((open_secs + 300) * 1_000_000_000),
ts: Timestamps::new(UnixNanos::from_nanos(0), Instant::now()),
};
let mut builder = M10Builder::new();
// The first half of the interval 0..600 s.
let part = builder.on_m5(&m5(0, 101, 10)).unwrap();
assert_eq!(part.timeframe, Timeframe::M10);
// The second half arrives: the same M10 candle, now with both halves.
let whole = builder.on_m5(&m5(300, 103, 5)).unwrap();
assert_eq!(whole.volume, Qty::from(15));
assert_eq!(whole.close, Price::from(103));
// A bar of an older interval is a replay and is ignored.
let _next = builder.on_m5(&m5(600, 104, 1)).unwrap();
assert!(builder.on_m5(&m5(0, 101, 10)).is_none());Implementations§
Source§impl M10Builder
impl M10Builder
Sourcepub fn on_m5(&mut self, bar: &Candle) -> Option<Candle>
pub fn on_m5(&mut self, bar: &Candle) -> Option<Candle>
Feeds one M5 update. Returns the current M10 candle, or None when the bar belongs to an interval
older than the current one (a replay after a reconnect).
Call it for every M5 message, including the repeats of a forming bar: each one gives the up-to-date M10 candle. Prices and volume of the candle are not final until the interval ends.
Trait Implementations§
Source§impl Debug for M10Builder
impl Debug for M10Builder
Source§impl Default for M10Builder
impl Default for M10Builder
Source§fn default() -> M10Builder
fn default() -> M10Builder
Returns the “default value” for a type. Read more
Auto Trait Implementations§
impl Freeze for M10Builder
impl RefUnwindSafe for M10Builder
impl Send for M10Builder
impl Sync for M10Builder
impl Unpin for M10Builder
impl UnsafeUnpin for M10Builder
impl UnwindSafe for M10Builder
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message
T in a tonic::Request§impl<L> LayerExt<L> for L
impl<L> LayerExt<L> for L
§fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
Applies the layer to a service and wraps it in [
Layered].