ScriptingData Types
Volumes
Volume profile shapes for Market Lab scripts.
Volumes
Volume profile data is available under input.volumes.
Input
type VolumesWindowInput = {
mode: "window";
volumes: {
profiles: VolumeProfile[];
timeframe_sec: number;
};
}
type VolumesStreamInput = {
mode: "stream";
source: "volumes";
volumes: {
profile: VolumeProfile;
timeframe_sec: number;
};
}Volume Profile
type VolumeProfile = {
t: number;
p: number[];
b: number[];
s: number[];
pg: number;
}Fields:
t: timestamp in Unix secondsp: price levelsb: buy volume at each price in USDs: sell volume at each price in USDpg: price grouping / bucket size
The arrays are aligned by index. For example, p[3] has buy volume b[3] and sell volume s[3].
Example
export function onData(ctx, input) {
const profiles = input.mode === "stream" ? [input.volumes.profile] : input.volumes.profiles
const latest = profiles[profiles.length - 1]
let poc = null
let pocVolume = -Infinity
let totalVolume = 0
for (let idx = 0; idx < latest.p.length; idx += 1) {
const total = (latest.b[idx] ?? 0) + (latest.s[idx] ?? 0)
totalVolume += total
if (total > pocVolume) {
pocVolume = total
poc = latest.p[idx]
}
}
return {
metrics: {
poc,
total_volume: totalVolume,
price_group: latest.pg
}
}
}