输入/搜索内容
内置函数
结构体
Ticker
Depth
OrderBook
Trade
Record
Market
Order
Condition
Account
Asset
Position
Funding
其它结构
HttpQuery-options
HttpQuery-return
LogStatus-table
LogStatus-btnTypeOne
LogStatus-btnTypeTwo
状态栏组件
grid
tabs
kpi
stat
progress
gauge
sparkline
chart
heatmap
calendar
histogram
pie
timeline
markdown
alert
badge
Chart-options
Chart-return
KLineChart-options
KLineChart-return
SetData-data
EventLoop-return
exchange.Go-return
DBExec-return
Dial-return
Thread.join-return
内置变量与常量
通用约定
交易所

热力图:二维网格按数值深浅着色,适合时段 × 品种的收益、相关性矩阵。

示例

用小时K线画最近3天每个小时的涨跌幅。

javascript
function main() { var r = exchange.GetRecords(PERIOD_H1) if (!r || r.length < 73) return var rets = r.slice(-73).map(function (b, i, a) { return i ? b.Close / a[i - 1].Close - 1 : 0 }) var days = [1, 25, 49] // 每天 24 根,第一行是最早的一天 LogStatus({ type: "heatmap", title: "最近3天逐小时涨跌", format: {percent: true, precision: 2}, x: r.slice(-24).map(function (b) { return _D(b.Time, "hh:00") }), y: days.map(function (d) { return _D(r[r.length - 73 + d].Time, "MM-dd") }), z: days.map(function (d) { return rets.slice(d, d + 24) }) }) }
python
def main(): r = exchange.GetRecords(PERIOD_H1) if not r or len(r) < 73: return bars = r[-73:] rets = [0] + [bars[i]["Close"] / bars[i - 1]["Close"] - 1 for i in range(1, 73)] days = [1, 25, 49] # 每天 24 根,第一行是最早的一天 LogStatus({ "type": "heatmap", "title": "最近3天逐小时涨跌", "format": {"percent": True, "precision": 2}, "x": [_D(b["Time"] / 1000, "%H:00") for b in bars[-24:]], "y": [_D(bars[d]["Time"] / 1000, "%m-%d") for d in days], "z": [rets[d:d + 24] for d in days] })
rust
fn main() { let Ok(r) = exchange.GetRecords(None, PERIOD_H1, None) else { return }; if r.len() < 73 { return; } let bars = &r[r.len() - 73..]; let days = [1usize, 25, 49]; // 每天 24 根,第一行是最早的一天 // Rust 的 _D() 固定输出 UTC 时间 let x: Vec<String> = bars[49..].iter() .map(|b| format!("\"{}:00\"", &_D(b.Time)[11..13])) .collect(); let y: Vec<String> = days.iter() .map(|&d| format!("\"{}\"", &_D(bars[d].Time)[5..10])) .collect(); let ret = |i: usize| (bars[i].Close / bars[i - 1].Close - 1.0).to_string(); let row = |d: usize| format!("[{}]", (d..d + 24).map(ret).collect::<Vec<_>>().join(",")); let z: Vec<String> = days.iter().map(|&d| row(d)).collect(); LogStatus!(format!( r#"{{"type": "heatmap", "title": "最近3天逐小时涨跌", "format": {{"percent": true, "precision": 2}}, "x": [{}], "y": [{}], "z": [{}]}}"#, x.join(","), y.join(","), z.join(",") )); }

属性

名称类型描述

type

string

必填,固定为 heatmap。

x

string数组 / 数值数组

必填。横轴刻度。

y

string数组 / 数值数组

必填。纵轴刻度,第一个在最下面。

z

array

必填。二维数值数组 z[行][列]:行数等于 y 的个数,每行的个数等于 x 的个数;非数字的格子留空。

min

number

颜色映射的下限。默认取数据最小值。

max

number

颜色映射的上限。默认取数据最大值。

color

string

单色深浅。不设置且数据有正有负时,正值涨色、负值跌色,深浅按绝对值。取值见状态栏组件。

format

object

数值格式 {precision, compact, percent},见状态栏组件。

height

number

高度(像素),120–600。默认 260。

title

string

标题,显示在组件左上角。

id

string

稳定标识。组件的个数或顺序会变化时设置,状态栏刷新时组件不重建。

span

number

在所在grid中占几列。默认 1。

参考

备注

x 与 y 个数的乘积不超过 40000,超出或 z 的行列数对不上时显示错误卡片。鼠标悬停显示格子的数值。