ScriptingData Types
VD
Volume delta candle shapes for Market Lab scripts.
VD
Volume delta data is available under input.vd.
The bucket source config controls which trade size range MMT aggregates. See VD Source for the bucket table.
Manifest
export const script = {
name: "vd-script",
version: "1",
sources: ["vd"],
params: {}
}Command
mlab script backtest ./scripts/vd-script.js \
--provider mmt \
--exchange hyperliquid \
--symbol HYPE/USDT \
--from 1780497965372 \
--to 1780618018000 \
--source vd:timeframe=3600 \
--source vd:bucket=1Input
Window mode:
type VdWindowInput = {
mode: "window";
vd: {
candles: VdCandle[];
bucket: number;
timeframe_sec: number;
};
}
type VdStreamInput = {
mode: "stream";
source: "vd";
vd: {
candle: VdCandle;
bucket: number;
timeframe_sec: number;
};
}VD Candle
type VdCandle = {
t: number;
o: number;
h: number;
l: number;
c: number;
n: number;
}Fields:
t: candle timestamp in Unix secondso: open cumulative volume deltah: high cumulative volume deltal: low cumulative volume deltac: close cumulative volume deltan: trade count
Example
export function onData(ctx, input) {
const candles = input.mode === "stream" ? [input.vd.candle] : input.vd.candles
const latest = candles[candles.length - 1]
const cvd = ctx.study.cvd(candles, { bucket: input.vd.bucket })
const delta = cvd.delta
return {
metrics: {
candles: candles.length,
delta,
latest_cvd: cvd.latest,
latest_close: latest.c
},
signal: {
triggered: Math.abs(delta) > 0,
side: delta > 0 ? "buy" : delta < 0 ? "sell" : "neutral"
}
}
}