该函数用于使用类似Pine
语言的画图方式进行策略运行时的自定义画图。
图表对象。 KLineChart()
函数返回的图表对象有多个方法,其中需要注意begin()
和close()
, 在K线数据上遍历执行画图操作,画图操作中必须以begin()
函数调用作为起始,以close()
函数调用作为结束。
object
KLineChart(options)
options
参数为图表配置。
options
true
object、object数组
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()
})
}
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}
Chart LogReset