ScriptingData Types
Orderbook
Orderbook data shapes for Market Lab scripts.
Orderbook
Orderbook data is available under input.orderbook.
Manifest
export const script = {
name: "orderbook-window",
version: "1",
sources: ["orderbook"],
params: {}
}Command
mlab script backtest ./scripts/orderbook-window.js \
--provider mmt \
--exchange bybitf \
--symbol BTC/USDT \
--from 1780307559000 \
--to 1780311159000 \
--source orderbook:timeframe=60 \
--source orderbook:depth=100Windowed orderbook backtests use MMT flat_heatmap_hd data. That source is binned, so it is useful for liquidity and execution-condition analysis, not exact raw order replay.
Input
type OrderbookWindowInput = {
mode: "window";
orderbook: {
books: Orderbook[];
};
}
type OrderbookStreamInput = {
mode: "stream";
source: "orderbook";
orderbook: {
snapshot: Orderbook;
};
}Orderbook
type Orderbook = {
exchange: string;
symbol: string;
timestamp_ms: number;
bids: OrderbookLevel[];
asks: OrderbookLevel[];
}
type OrderbookLevel = {
price: number;
quantity: number;
}Example
export function onData(ctx, input) {
const latest = input.mode === "stream"
? input.orderbook.snapshot
: input.orderbook.books[input.orderbook.books.length - 1]
const spread = ctx.study.spread(latest)
const imbalance = ctx.study.imbalance(latest, { depth: 20 })
return {
metrics: {
mode: input.mode,
spread_bps: spread.spread_bps,
imbalance: imbalance.imbalance
}
}
}