此函数用于在策略运行时使用类似Pine
语言的绘图方式进行自定义图表绘制。
图表对象。
KLineChart()
函数返回的图表对象包含多个方法,其中需要特别注意begin()
和close()
方法。在K线数据上遍历执行绘图操作时,必须以begin()
函数调用作为起始,以close()
函数调用作为结束。
object
KLineChart(options)
options
参数为图表配置对象。
options
true
object / object数组
”`javascript function main() { // 调用KLineChart函数创建图表控制对象c let c = KLineChart({ overlay: true })
while(true) {
if (exchange.IO("status")) {
break
}
Sleep(1000)
}
exchange.SetContractType("rb888")
// 获取K线
let bars = exchange.GetRecords()
if (!bars) {
return
}
bars.forEach(function(bar, index) {
c.begin(bar)
c.barcolor(bar.Close > bar.Open ? 'rgba(255, 0, 0, 0.2)' : 'rgba(0, 0, 0, 0.2)')
if (bar.Close > bar.Open) {
c.bgcolor('rgba(0, 255, 0, 0.5)')
}
let h = c.plot(bar.High, 'high')
let l = c.plot(bar.Low, 'low')
c.fill(h, l, {
color: bar.Close > bar.Open ? 'rgba(255, 0, 0, 0.2)' : 'rgba(255, 0, 0, 0.2)'
})
c.hline(bar.High)
c.plotarrow(bar.Close - bar.Open)
c.plotshape(bar.Low, {
style: 'diamond'
})
c.plotchar(bar.Close, {
char: 'X'
})
c.plotcandle(bar.Open*0.9, bar.High*0.9, bar.Low*0.9, bar.Close*0.9)
if (bar.Close > bar.Open) {
// long/short/closelong/closeshort
c.signal("long", bar.High, 1.5)
} else if (bar.Close < bar.Open) {
c.signal("closelong", bar.Low, 1.5)
}
c.close()
})
}
python
def main():
# 调用KLineChart函数创建图表控制对象c
c = KLineChart({
“overlay”: True
})
while True:
if exchange.IO("status"):
break
Sleep(1000)
exchange.SetContractType("rb888")
# 获取K线
bars = exchange.GetRecords()
if not bars:
return
for bar in bars:
c.begin(bar)
c.barcolor('rgba(255, 0, 0, 0.2)' if bar.Close > bar.Open else 'rgba(0, 0, 0, 0.2)')
if bar.Close > bar.Open:
c.bgcolor('rgba(0, 255, 0, 0.5)')
h = c.plot(bar.High, 'high')
l = c.plot(bar.Low, 'low')
c.fill(h, l, 'rgba(255, 0, 0, 0.2)' if bar.Close > bar.Open else 'rgba(255, 0, 0, 0.2)')
c.hline(bar.High)
c.plotarrow(bar.Close - bar.Open)
c.plotshape(bar.Low, style = 'diamond')
c.plotchar(bar.Close, char = 'X')
c.plotcandle(bar.Open*0.9, bar.High*0.9, bar.Low*0.9, bar.Close*0.9)
if bar.Close > bar.Open:
# long/short/closelong/closeshort
c.signal("long", bar.High, 1.5)
elif bar.Close < bar.Open:
c.signal("closelong", bar.Low, 1.5)
c.close()```
// 暂不支持
如果需要在策略自定义画图区域绘图,必须先创建图表控制对象,使用KLineChart()
函数创建该对象。KLineChart()
函数的参数为图表配置结构,参考代码中使用的图表结构非常简单:{overlay: true}
。
该图表配置结构仅设置了将绘图内容输出在图表主图上。如果将overlay
设置为假值(例如:false
),则图表上的内容将输出在副图上。如果需要指定某个绘图函数在主图上绘制,也可以在具体函数调用中指定参数overlay
为真值(例如:true
)。
c.barcolor(bar.Close > bar.Open ? 'rgba(255, 0, 0, 0.2)' : 'rgba(0, 0, 0, 0.2)') // 使用本例中参考代码中的示例说明,不再赘述
c.barcolor('rgba(255, 0, 0, 0.2)' if bar.Close > bar.Open else 'rgba(0, 0, 0, 0.2)')
// 暂不支持
绘图操作中支持的Pine
语言的绘图接口函数有:
barcolor
,设置K线颜色。
barcolor(color, offset, editable, show_last, title, display)
display参数可选:”none”, “all”
c.bgcolor('rgba(0, 255, 0, 0.5)')
c.bgcolor('rgba(0, 255, 0, 0.5)')
// 暂不支持
bgcolor
,使用指定颜色填充K线的背景。bgcolor(color, offset, editable, show_last, title, display, overlay)
display参数可选:”none”, “all”
c.plot(bar.High, 'high') c.plot(bar.Open < bar.Close ? NaN : bar.Close, "Close", {style: "linebr"}) // 支持绘制不连续的数据线
h = c.plot(bar.High, 'high') h = c.plot(None if bar.Open < bar.Close else bar.Close, "Close", style = "linebr") # 支持绘制不连续的数据线
// 暂不支持
plot
,在图表上绘制一系列数据。plot(series, title, color, linewidth, style, trackprice, histbase, offset, join, editable, show_last, display)
style参数可选:”stepline_diamond”, “stepline”, “cross”, “areabr”, “area”, “circles”, “columns”, “histogram”, “linebr”, “line”
display参数可选:”none”, “all”
let h = c.plot(bar.High, 'high') let l = c.plot(bar.Low, 'low') c.fill(h, l, {color: bar.Close > bar.Open ? 'rgba(255, 0, 0, 0.2)' : 'rgba(255, 0, 0, 0.2)'})
h = c.plot(bar.High, 'high') l = c.plot(bar.Low, 'low') c.fill(h, l, color = 'rgba(255, 0, 0, 0.2)' if bar.Close > bar.Open else 'rgba(255, 0, 0, 0.2)')
// 暂不支持
fill
,用于在两个绘图对象或hline
之间填充指定颜色的背景区域。fill(hline1, hline2, color, title, editable, fillgaps, display)
display参数可选值:”none”, “all”
由于JavaScript
语言无法通过形参名称指定传入参数,可以使用{key: value}
结构来指定特定形参的值。例如,参考代码中使用{color: bar.Close > bar.Open ? 'rgba(255, 0, 0, 0.2)' : 'rgba(255, 0, 0, 0.2)'}
来指定fill
函数的color
参数。
如需同时指定多个形参的值,可以使用{key1: value1, key2: value2, key3: value3}
格式。例如,在本例中同时指定title
参数:{color: bar.Close > bar.Open ? 'rgba(255, 0, 0, 0.2)' : 'rgba(255, 0, 0, 0.2)', title: 'fill'}
。颜色值既可以使用'rgba(255, 0, 0, 0.2)'
格式设置,也可以使用'#FF0000'
格式设置。
c.hline(bar.High)
c.hline(bar.High)
// 暂不支持
hline
,用于在指定的固定价格水平上绘制水平线。
hline(price, title, color, linestyle, linewidth, editable, display)
linestyle参数可选值:”dashed”, “dotted”, “solid”
display参数可选值:”none”, “all”
c.plotarrow(bar.Close - bar.Open)
c.plotarrow(bar.Close - bar.Open)
// 暂不支持
plotarrow
,用于在图表上绘制向上和向下的箭头标记。plotarrow(series, title, colorup, colordown, offset, minheight, maxheight, editable, show_last, display)
display参数可选值:”none”, “all”
c.plotshape(bar.Low, {style: 'diamond'})
c.plotshape(bar.Low, style = 'diamond')
// 暂不支持
plotshape
,在图表上绘制可视化形状。plotshape(series, title, style, location, color, offset, text, textcolor, editable, size, show_last, display)
style参数可选值:”diamond”, “square”, “label_down”, “label_up”, “arrow_down”, “arrow_up”, “circle”, “flag”, “triangle_down”, “triangle_up”, “cross”, “xcross”
location参数可选值:”abovebar”, “belowbar”, “top”, “bottom”, “absolute”
size参数可选值:”10px”, “14px”, “20px”, “40px”, “80px”,对应Pine语言中的size.tiny、size.small、size.normal、size.large、size.huge
size.auto等同于size.small。
display参数可选值:”none”, “all”
c.plotchar(bar.Close, {char: 'X'})
c.plotchar(bar.Close, char = 'X')
// 暂不支持
plotchar
,在图表上使用任意Unicode字符绘制可视化形状。plotchar(series, title, char, location, color, offset, text, textcolor, editable, size, show_last, display)
location参数可选值:”abovebar”, “belowbar”, “top”, “bottom”, “absolute”
size参数可选值:”10px”, “14px”, “20px”, “40px”, “80px”,对应Pine语言中的size.tiny、size.small、size.normal、size.large、size.huge
size.auto等同于size.small。
display参数可选值:”none”, “all”
c.plotcandle(bar.Open*0.9, bar.High*0.9, bar.Low*0.9, bar.Close*0.9)
c.plotcandle(bar.Open*0.9, bar.High*0.9, bar.Low*0.9, bar.Close*0.9)
// 暂不支持
plotcandle
,在图表上绘制K线图。plotcandle(open, high, low, close, title, color, wickcolor, editable, show_last, bordercolor, display)
display参数可选值:”none”, “all”
c.signal("long", bar.High, 1.5)
c.signal("long", bar.High, 1.5)
// 暂不支持
signal
,Pine语言中没有的函数,用于绘制买卖信号。signal(direction, price, qty, id)
传入的参数”long”表示交易方向,可选值为”long”、”closelong”、”short”、”closeshort”。传入的参数bar.High
为信号标记的Y轴位置。
传入的参数1.5表示信号的交易数量。可以传入第四个参数来替换默认显示的文本内容,信号标记的默认文本为交易方向,例如:”closelong”。
c.reset()
c.reset()
// 暂不支持
reset
,Pine语言中没有的函数,用于清空图表数据。
reset(remain)
reset()
方法可以接受一个参数remain
,用于指定保留的数据条数。不传入参数remain
表示清除所有数据。
策略自定义绘图只能选择KLineChart()
函数或Chart()
函数两种方式之一。KLineChart()
函数调用时涉及的颜色、样式等设置,请参考使用KLineChart函数绘图的专题文章
{@fun/Log/Chart Chart}