chart
简易图表:折线、柱状或面积,支持多条序列、右侧纵轴和买卖点标记;需要更多配置时用Chart。
示例
收盘价折线叠加右轴成交量柱,并在最高收盘价处做标记。
javascript
function main() {
var r = exchange.GetRecords(PERIOD_H1)
if (!r || r.length < 48) return
r = r.slice(-48)
var top = r.reduce(function (a, b) { return b.Close > a.Close ? b : a })
LogStatus({
type: "chart", title: "最近48小时",
x: r.map(function (b) { return b.Time }),
series: [
{name: "收盘价", data: r.map(function (b) { return b.Close })},
{name: "成交量", kind: "bar", axis: "right", color: "muted",
data: r.map(function (b) { return b.Volume })}
],
marks: [{x: top.Time, text: "最高", color: "up"}]
})
}
python
def main():
r = exchange.GetRecords(PERIOD_H1)
if not r or len(r) < 48:
return
r = r[-48:]
top = max(r, key=lambda b: b["Close"])
LogStatus({
"type": "chart", "title": "最近48小时",
"x": [b["Time"] for b in r],
"series": [
{"name": "收盘价", "data": [b["Close"] for b in r]},
{"name": "成交量", "kind": "bar", "axis": "right", "color": "muted",
"data": [b["Volume"] for b in r]}
],
"marks": [{"x": top["Time"], "text": "最高", "color": "up"}]
})
rust
fn join<T: ToString>(v: impl Iterator<Item = T>) -> String {
v.map(|x| x.to_string()).collect::<Vec<_>>().join(",")
}
fn main() {
let Ok(r) = exchange.GetRecords(None, PERIOD_H1, None) else { return };
if r.len() < 48 { return; }
let r = &r[r.len() - 48..];
let top = r.iter().fold(&r[0], |a, b| if b.Close > a.Close { b } else { a });
LogStatus!(format!(
r#"{{"type": "chart", "title": "最近48小时", "x": [{}], "series": [
{{"name": "收盘价", "data": [{}]}},
{{"name": "成交量", "kind": "bar", "axis": "right", "color": "muted", "data": [{}]}}],
"marks": [{{"x": {}, "text": "最高", "color": "up"}}]}}"#,
join(r.iter().map(|b| b.Time)),
join(r.iter().map(|b| b.Close)),
join(r.iter().map(|b| b.Volume)),
top.Time
));
}属性
| 名称 | 类型 | 描述 |
type | string | 必填,固定为 |
series | object数组 | 必填。数据序列。 |
series[].data | 数值数组 | 必填。与 |
series[].name | string | 图例名称。 |
series[].kind | string | 该序列的类型,覆盖 |
series[].color | string | 序列颜色,默认按顺序分配。取值见 |
series[].axis | string | 写 |
kind | string |
|
x | string数组 / 数值数组 | 横轴刻度。全是毫秒时间戳时按时间轴显示;不给时按序号。 |
marks | object数组 | 标记点,如买卖点、调仓点。 |
marks[].x | string / number | 必填。 |
marks[].y | number | 纵坐标。默认取第一条序列在该处的值。 |
marks[].text | string | 标记文字。 |
marks[].color | string |
|
stacked | bool | 堆叠显示。默认 |
height | number | 高度(像素), |
format | object | 左轴数值格式,默认 |
rightFormat | object | 右轴数值格式。默认同 |
title | string | 标题,显示在组件左上角。 |
id | string | 稳定标识。组件的个数或顺序会变化时设置,状态栏刷新时组件不重建。 |
span | number | 在所在 |
参考
备注
每条序列最多 5000 个点,超出时显示错误卡片。多条序列时显示图例;在图上拖动可以放大横轴区间。