pub struct Checkpoint {
pub symbol: String,
pub threshold_decimal_bps: u32,
pub incomplete_bar: Option<RangeBar>,
pub thresholds: Option<(FixedPoint, FixedPoint)>,
pub last_timestamp_us: i64,
pub last_trade_id: Option<i64>,
pub price_hash: u64,
pub anomaly_summary: AnomalySummary,
}Expand description
Checkpoint for cross-file range bar continuation
Enables seamless processing across any file boundaries (Binance daily, Exness monthly). Captures minimal state needed to continue building an incomplete bar.
§Example
// Process first file
let bars_1 = processor.process_agg_trade_records(&file1_trades)?;
let checkpoint = processor.create_checkpoint("BTCUSDT");
// Serialize and save checkpoint
let json = serde_json::to_string(&checkpoint)?;
std::fs::write("checkpoint.json", json)?;
// ... later, load checkpoint and continue processing ...
let json = std::fs::read_to_string("checkpoint.json")?;
let checkpoint: Checkpoint = serde_json::from_str(&json)?;
let mut processor = RangeBarProcessor::from_checkpoint(checkpoint)?;
let bars_2 = processor.process_agg_trade_records(&file2_trades)?;Fields§
§symbol: StringSymbol being processed (e.g., “BTCUSDT”, “EURUSD”)
threshold_decimal_bps: u32Threshold in decimal basis points (v3.0.0+: 0.1bps units) Example: 250 = 25bps = 0.25%
incomplete_bar: Option<RangeBar>Incomplete bar at file boundary (None = last bar completed cleanly) REUSES existing RangeBar type - no separate BarState needed!
thresholds: Option<(FixedPoint, FixedPoint)>Fixed thresholds for incomplete bar (computed from bar.open, IMMUTABLE) Stored as (upper_threshold, lower_threshold)
last_timestamp_us: i64Last processed timestamp in microseconds (universal, works for all sources)
last_trade_id: Option<i64>Last trade ID (Some for Binance, None for Exness) Binance: agg_trade_id is strictly sequential, never resets
price_hash: u64Price window hash (ahash of last 8 prices for position verification) Used to verify we’re resuming at the correct position in data stream
anomaly_summary: AnomalySummaryAnomaly summary counts for debugging
Implementations§
Source§impl Checkpoint
impl Checkpoint
Sourcepub fn new(
symbol: String,
threshold_decimal_bps: u32,
incomplete_bar: Option<RangeBar>,
thresholds: Option<(FixedPoint, FixedPoint)>,
last_timestamp_us: i64,
last_trade_id: Option<i64>,
price_hash: u64,
) -> Self
pub fn new( symbol: String, threshold_decimal_bps: u32, incomplete_bar: Option<RangeBar>, thresholds: Option<(FixedPoint, FixedPoint)>, last_timestamp_us: i64, last_trade_id: Option<i64>, price_hash: u64, ) -> Self
Create a new checkpoint with the given parameters
Sourcepub fn has_incomplete_bar(&self) -> bool
pub fn has_incomplete_bar(&self) -> bool
Check if there’s an incomplete bar that needs to continue
Sourcepub fn library_version() -> &'static str
pub fn library_version() -> &'static str
Get the library version that created this checkpoint
Trait Implementations§
Source§impl Clone for Checkpoint
impl Clone for Checkpoint
Source§fn clone(&self) -> Checkpoint
fn clone(&self) -> Checkpoint
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more