KLineChart

此函数用于在策略运行时使用类似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}