Bar

July 25, 2026 · View on GitHub

Bar represents OHLCV price and volume data for a specific BarType. Bars can be provided externally by a venue or data provider, aggregated internally from quote or trade ticks, or aggregated from smaller bars.

Fields

FieldRust typePython typeRequired/defaultNotes
bar_typeBarTypeBarTypeRequiredInstrument, aggregation, price type, and source.
openPricePriceRequiredFirst price in the bar interval.
highPricePriceRequiredHighest price in the bar interval.
lowPricePriceRequiredLowest price in the bar interval.
closePricePriceRequiredLast price in the bar interval.
volumeQuantityQuantityRequiredTraded volume or tick‑volume proxy.
ts_eventUnixNanosintRequiredBar event timestamp in nanoseconds.
ts_initUnixNanosintRequiredInitialization timestamp in nanoseconds.

Behavior

  • high must be greater than or equal to open, low, and close.
  • low must be less than or equal to open and close.
  • bar_type determines whether a bar is internal or external.
  • Composite bar types use @ syntax to identify the source bar type.

Example

use nautilus_core::UnixNanos;
use nautilus_model::{
    data::{Bar, BarType},
    types::{Price, Quantity},
};

let bar = Bar::new(
    BarType::from("AUD/USD.SIM-1-MINUTE-LAST-EXTERNAL"),
    Price::from("0.65000"),
    Price::from("0.65010"),
    Price::from("0.64990"),
    Price::from("0.65005"),
    Quantity::from("1000000"),
    UnixNanos::from(1_000_000_000),
    UnixNanos::from(1_000_000_100),
);
from nautilus_trader.model import Bar
from nautilus_trader.model import BarType
from nautilus_trader.model import Price
from nautilus_trader.model import Quantity

bar = Bar(
    bar_type=BarType.from_str("AUD/USD.SIM-1-MINUTE-LAST-EXTERNAL"),
    open=Price.from_str("0.65000"),
    high=Price.from_str("0.65010"),
    low=Price.from_str("0.64990"),
    close=Price.from_str("0.65005"),
    volume=Quantity.from_int(1_000_000),
    ts_event=1_000_000_000,
    ts_init=1_000_000_100,
)