Skip to main content

TradeHistory

Struct TradeHistory 

Source
pub struct TradeHistory { /* private fields */ }
Expand description

Trade history ring buffer for inter-bar feature computation

Implementations§

Source§

impl TradeHistory

Source

pub fn new(config: InterBarConfig) -> Self

Create new trade history with given configuration

Source

pub fn push(&mut self, trade: &AggTrade)

Push a new trade to the history buffer

Automatically prunes old entries based on lookback mode, but preserves trades needed for lookback computation (timestamp < protected_until).

Source

pub fn on_bar_open(&mut self, bar_open_time: i64)

Notify that a new bar has opened at the given timestamp

This sets the protection threshold to ensure trades from before the bar opened are preserved for lookback computation. The protection extends until the next bar opens and calls this method again.

Source

pub fn on_bar_close(&mut self)

Notify that the current bar has closed

For BarRelative mode, records the current trade count as a bar boundary. For other modes, this is a no-op. Protection is always kept until the next bar opens.

Source

pub fn get_lookback_trades(&self, bar_open_time: i64) -> Vec<&TradeSnapshot>

Get trades for lookback computation (excludes trades at or after bar_open_time)

This is CRITICAL for temporal integrity - we only use trades that occurred BEFORE the current bar opened.

Source

pub fn compute_features(&self, bar_open_time: i64) -> InterBarFeatures

Compute inter-bar features from lookback window

§Arguments
  • bar_open_time - The open timestamp of the current bar (microseconds)
§Returns

InterBarFeatures with computed values, or None for features that cannot be computed due to insufficient data.

Source

pub fn reset_bar_boundaries(&mut self)

Reset bar boundary tracking (Issue #81)

Called at ouroboros boundaries. Clears bar close indices but preserves trade history — trades are still valid lookback data for the first bar of the new segment.

Source

pub fn clear(&mut self)

Clear the trade history (e.g., at ouroboros boundary)

Source

pub fn len(&self) -> usize

Get current number of trades in buffer

Source

pub fn is_empty(&self) -> bool

Check if buffer is empty

Trait Implementations§

Source§

impl Clone for TradeHistory

Source§

fn clone(&self) -> TradeHistory

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for TradeHistory

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.