商品期货量化交易-TradingviewPine语言基础课程(十二):画图(2)

Author: ianzeng123, Created: 2023-02-22 14:11:40, Updated: 2023-02-22 14:11:58

大家好,今天我们继续来学习画图函数。在本节课的最后,我将利用画图函数打造一个简易的指标参考系统,帮助交易者在实盘交易中,及时检阅出市场信号,进而迅速进行交易操作,这对于半程序化交易者十分友好。

plotshape

首先我们学习plotshape函数,plotshape函数在图表上绘制可视形状。它的基本语法结构为:

plotshape(series, title, style, location, color, offset, text, textcolor, editable, size, show_last, display) 

其重要的内置参数如下所示,基本上伴随策略周期变化的参数,都可以使用三元表达式,根据你的交易逻辑,在图中进行不同的展示:

  • series (series bool) 作为形状绘制的一系列数据 。 除了交易指标外,这里也可以添加交易指标布尔值的形式(只显示布尔值判断为真的指标)。
data = close >= open
plotshape(data, style=shape.xcross)

img

这里我们看到只显示收盘价大于开盘价时的乘号标志。

  • title (const string) 绘图标题。
  • style (input string) 绘图类型。可能的值有:shape.xcross(乘号),shape.cross(加号),shape.triangleup(上三角),shape.triangledown(下三角),shape.flag(旗帜),shape.circle(圆圈),shape.arrowup(上箭头),shape.arrowdown(下箭头),shape.labelup(上升标签),shape.labeldown(下降标签),shape.square(方块),shape.diamond(菱形)。 默认值为shape.xcross。同样,这里也可以使用三元表达式的形式,对不同条件选择不同的图案。
plotshape(close, style=close > open ? shape.arrowup: shape.arrowdown)

img

这里我们看到如果收盘价大于开盘价,使用上升箭头,否则使用下降箭头。

  • location (input string) 形状在图表上的位置。 可能的值有:location.abovebar(k线上),location.belowbar(k线上),location.top(图表最上方),location.bottom(图表最下方),location.absolute(贴合k线)。 默认值为location.abovebar。同样的,可以使用三元表达式。
  • color (series color) 形状的颜色。 可以使用如’color = color.red’或’color =#ff001a’的常量以及三元表达式复杂表达式。 可选参数。
  • offset (series int) 在k线特定数量上向左或向右移动形状。 默认值为0。
  • text (const string) 文字以形状显示。 您可以使用多行文本,分隔行使用’\n’转义序列。示例:‘line one\nline two’。同样可以使用三元表达式。
plotshape(close, style=close > open ? shape.arrowup: shape.arrowdown, text = close > open ? '涨': '跌', textcolor = close > open ? color.red: color.green)

img

  • textcolor (series color) 文字的颜色。 和上方的颜色设置一样。
  • size (const string) 图表上字符的大小。 可能的值有: size.auto, size.tiny, size.small, size.normal, size.large, size.huge。默认值为size.auto。同样可以使用三元表达式。

plotchar

该函数在图表上使用任何给定的Unicode字符绘制可视形状。

plotchar(series, title, char, location, color, offset, text, textcolor, editable, size, show_last, display) 



重要的参数和上述讲解的基本一致:

  • series (series bool) 作为形状绘制的一系列数据。 除了location.absolute之外,系列被视为所有位置值的一系列布尔值。 必要参数。
  • title (const string) 绘图标题。
  • char (input string) 作为视觉形状使用的字符
  • location (input string) 形状在图表上的位置。 可能的值有:location.abovebar,location.belowbar,location.top,location.bottom,location.absolute。 默认值为location.abovebar。
  • color (series color) 形状的颜色。 您可以使用如’color = red’或’color =#ff001a’的常量以及如 'color = close >= open ? green : red’的复杂表达式。 可选参数。
  • offset (series int) 在k线特定数量上向左或向右移动形状。 默认值为0。
  • text (const string) 文字以形状显示。 您可以使用多行文本,分隔行使用’\n’转义序列。示例:‘line one\nline two’。
  • textcolor (series color) 文字的颜色。 您可以使用如 ‘textcolor=red’ 或’textcolor=#ff001a’ 的常量,以及如’textcolor = close >= open ? green : red’的复杂表达式。 可选参数。
  • size (const string) 图表上字符的大小。 可能值有:size.auto,size.tiny,size.small,size.normal,size.large,size.huge。 默认值为size.auto

plotchar有很多灵活的运用,比如在k线图中标注“十字星”。十字星是一种趋势信号判断的一个重要指标,十字星出现说明多空双方争夺激烈,互不相让。其基本定义为如果一日内开盘价和收盘价的差距很少,或者相等。因此,代码中使用数学绝对值(math.abs)的形式判断开盘价和收盘价的差距,如果差距小于等于5,则定义为十字星出现,判断为true。然后使用plotchar在图表中展示。

data = math.abs(close - open) <=5
plotchar(data, char='十字星')

img

plotcandle

在图表上绘制蜡烛。

plotcandle(open, high, low, close, title, color, wickcolor, editable, show_last, bordercolor, display)
例子

indicator("plotcandle example", overlay=true)
plotcandle(open, high, low, close, title='Title', color = open < close ? color.green : color.red, wickcolor=color.black)

img

其重要的参数如下所示:

  • open (series int/float) 数据开放系列用作蜡烛开盘值。必要参数。
  • high (series int/float) 高系列数据用作蜡烛的高值。必要参数。
  • low (series int/float) 低系列数据被用作蜡烛的低值。 必要参数。
  • close (series int/float) 关闭系列数据作为关闭k线的值。 必要参数。
  • wickcolor (series color) 蜡烛灯芯的颜色。一个可选参数。

plotarrow

在图表上绘制向上和向下箭头:向上箭头绘制在每个正值指标上,而向下箭头绘制在每个负值上。 如果指标返回na,则不会绘制箭头。 箭头具有不同的高度,指标的绝对值越大,绘制箭头越长。

plotarrow(series, title, colorup, colordown, offset, minheight, maxheight, editable, show_last, display)

codiff = close - open
plotarrow(codiff, colorup=color.new(color.teal,40), colordown=color.new(color.orange, 40), overlay=true)

其重要参数如下所示,其他参数按照默认值即可:

  • series (series int/float) 要绘制成箭头的数据系列。 必要参数。
  • colorup (series color) 向上箭头的颜色。可选参数。
  • colordown (series color) 向下箭头的颜色。可选参数。
  • offset (series int) 在K线特定数量上向左或向右移动箭头。 默认值为0。
  • minheight (input int) 以像素为单位最小可能的箭头高度。默认值为5。
  • maxheight (input int) 以像素为单位的最大可能的箭头高度。默认值为100 img

顶/底背离指标观察系统

顶背离:K线图上的价格走势一峰比一峰高,价格一直在向上涨,而MACD指标图形上的由红柱构成的图形的走势是一峰比一峰低,即当价格的高点比前一次的高点高、而MACD指标的高点比指标的前一次高点低,这叫顶背离现象。这是一个有“多”转“空”的参考信号。 底背离:K线图上的价格走势一峰比一峰低,价格一直在向下跌,而MACD指标图形上的由绿构成的图形的走势是一峰比一峰高,即当价格的低点比前一次的低点低、而MACD指标的低点比指标的前一次低点高,这叫底背离现象。这是一个有“空”转“多”的参考信号。

MACD指标

12日EMA的计算:EMA12 = 前一日EMA12 * 11/13 + 今日收盘 * 2/13 26日EMA的计算:EMA26 = 前一日EMA26 * 25/27 + 今日收盘 * 2/27 差离值(DIF)的计算: DIF = EMA12 - EMA26 9日DEA = 前一日DEA * 8/10 + 今日DIF * 2/10BAR=(DIF-DEA)*2 MACD=(DIF-DEA)*2

fastline = ta.ema(close,12)  
slowline = ta.ema(close,26)
diff = fastline - slowline 

dea = ta.ema(diff,9) 
macd = 2*(diff - dea)

顶背离:

快线下穿慢线: MACD 从正转为负(下穿0线) 价格逐渐上涨:今日价格大于昨日

bot_diver = ta.crossunder(macd,0) and close[1] < close
plotchar(top_diver, char='顶背离', location = location.abovebar, size = size.normal, overlay=true)

底背离:

快线上穿慢线: MACD 从负转为正(上穿0线) 价格逐渐上跌:今日价格小于昨日

bot_diver = ta.crossover(macd,0) and close[1] > close
plotchar(bot_diver, char='底背离', location = location.belowbar, size = size.normal, overlay=true)

img


更多内容