75 if (!std::isfinite(t.open) || t.open <= 0.0)
return false;
76 if (!std::isfinite(t.high) || t.high <= 0.0)
return false;
77 if (!std::isfinite(t.low) || t.low <= 0.0)
return false;
78 if (!std::isfinite(t.close) || t.close <= 0.0)
return false;
80 if (!std::isfinite(t.volume) || t.volume < 0.0)
return false;
82 if (t.timestamp_ns <= 0)
return false;
84 if (t.high < t.low)
return false;
85 if (t.high < t.open)
return false;
86 if (t.high < t.close)
return false;
87 if (t.low > t.open)
return false;
88 if (t.low > t.close)
return false;
bool tick_is_valid(const OHLCVTick &t) noexcept
Validate all fields of an OHLCVTick.
TickRejectReason
Reason codes for tick rejection (diagnostic, not returned on hot path).
@ RingFull
Valid tick dropped because ring buffer was full.
Single OHLCV bar tick from the market data feed.
double low
Lowest price of the bar.
double open
Opening price of the bar.
double volume
Traded volume over the bar.
double close
Closing price of the bar.
std::int64_t timestamp_ns
Bar timestamp, nanoseconds since epoch.
double high
Highest price of the bar.