该函数用于使用类似Pine
语言的画图方式进行策略运行时的自定义画图。
图表对象。 KLineChart()
函数返回的图表对象有多个方法,其中需要注意begin()
和close()
, 在K线数据上遍历执行画图操作,画图操作中必须以begin()
函数调用作为起始,以close()
函数调用作为结束。
object
KLineChart(options)
options
true
object、object数组
```javascript
function main() {
// 调用KLineChart函数创建图表控制对象c
let c = KLineChart({
overlay: true
})
// 使用现货交易所对象测试,获取K线数据。如果使用期货交易所对象测试,需要先设置合约
let bars = exchange.GetRecords()
if (!bars) {
return
}
// 在K线数据上遍历执行画图操作,画图操作中必须以```c.begin(bar)```函数调用作为起始,以```c.close()```函数调用作为结束。
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
})
# 使用现货交易所对象测试,获取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(color, offset, editable, show_last, title, display)
> display参数可选:"none", "all"
```javascript
c.bgcolor('rgba(0, 255, 0, 0.5)')
c.bgcolor('rgba(0, 255, 0, 0.5)')
// 暂不支持
> bgcolor(color, offset, editable, show_last, title, display, overlay)
> display参数可选:"none", "all"
```javascript
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(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"
```javascript
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(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'```方式设置。
```javascript
c.hline(bar.High)
c.hline(bar.High)
// 暂不支持
> hline(price, title, color, linestyle, linewidth, editable, display)
> linestyle参数可选:"dashed", "dotted", "solid"
> display参数可选:"none", "all"
```javascript
c.plotarrow(bar.Close - bar.Open)
c.plotarrow(bar.Close - bar.Open)
// 暂不支持
> plotarrow(series, title, colorup, colordown, offset, minheight, maxheight, editable, show_last, display)
> display参数可选:"none", "all"
```javascript
c.plotshape(bar.Low, {style: 'diamond'})
c.plotshape(bar.Low, style = 'diamond')
// 暂不支持
> 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"
```javascript
c.plotchar(bar.Close, {char: 'X'})
c.plotchar(bar.Close, char = 'X')
// 暂不支持
> 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"
```javascript
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(open, high, low, close, title, color, wickcolor, editable, show_last, bordercolor, display)
> display参数可选:"none", "all"
```javascript
c.signal("long", bar.High, 1.5)
c.signal("long", bar.High, 1.5)
// 暂不支持
> signal(direction, price, qty, id)
传入的参数"long"表示交易方向,可选"long"、"closelong"、"short"、"closeshort"。传入的参数```bar.High```为标记信号的Y轴位置。
传入的参数1.5表示信号的交易数量。可以传入第四个参数用来替换默认画出的文本内容,画出的信号标记默认文本为交易方向,例如:"closelong"。
```javascript
c.reset()
c.reset()
// 暂不支持
reset
,Pine语言上没有的函数,用于清空图表数据。
reset(remain)
reset()
方法可以带一个参数remain
用于指定保留数据的条数。不传参数remain
表示清除全部数据。
策略自定义画图只能使用KLineChart()
函数的方式或者Chart()
函数的方式中的一种。 KLineChart()
函数调用时用到的一些颜色、样式等设置,参看使用KLineChart函数画图的专题文章
{@fun/Log/Chart Chart}
Chart LogReset