商品期货量化交易-TradingviewPine语言基础课程(十八):量化交易指标:反趋势指标

Author: ianzeng123, Created: 2023-03-20 10:21:49, Updated:

大家好,今天我们继续量化指标的学习。在金融技术分析指标中,反趋向类指标,也就是震荡指标,是一个重要的分类。其中KDJ(随机指标)、RSI(相对强弱指标)、CCI(顺势指标)等指标都是各类证券分析软件中的常用指标。其实反趋向类指标和趋向类指标一样,都是判断价格走势趋向的指标,但是使用了逆向思维。反趋势提供一种与趋势跟踪同样有效的系统性的、保守的交易框架,但使用完全相反的方法。与趋势跟踪系统相比,反趋势系统通常交易区间更短,成功率更高一些,成功/失败比率更小一些。经过统计发现,一个典型的反趋势策略将会比趋势跟踪策略交易更频繁一些,成功率在55%-60%之间,成功交易与失败交易的比率小于1.5。因此,在一定程度上可以认为,在长期趋势较为明显的情况下,趋势指标是比较适合的;而长期趋势不明显,日内波动比较大的情况下,反趋势策略比较适合。

img

BIAS

概念

BIAS乖离率是用价格指数与移动平均线的比值关系,来描述价格与移动平均线之间的偏离程度。乖离率功能主要是通过测算价格在波动过程中与移动平均线出现偏离程度,从而得出价格在剧烈波动时因偏离移动平均趋势而造成可能的回挡或反弹,以及价格在正常波动范围内移动而形成继续原有势的可信度。

img

计算方法

BIAS(N) = (收盘价 - N周期移动平均价) / N周期移动平均价 * 100

应用规则

(1)若价格在移动平均线之上,乖离率为正,反之为负;当价格与平均线相同,乖离率为零; (2)正乖离率值越大,说明价格向上偏离移动平均线的程度越大,有可能回档下调; (3)负乖离值越小,表明价格向下偏离移动平均线的程度越大,随时可能反弹; (4)多头市场的狂涨与空头市场的狂跌会使乖高率达到意想不到的百分比,但是出现次数极少,时间亦短。

Pine代码

我们这FMZ平台进行一下乖离率指标的复现,由于Pine语言没有现成的内置函数,我们可以自己计算。首先设置研究周期n,接着计算今日收盘价和N个周期收盘价的移动平均值之差,然后除以周期移动平均值就可以获得,然后利用画图函数在图表中呈现出来。

bias5 = (close - ta.sma(close,5))/ta.sma(close,5)*100
bias10 = (close - ta.sma(close,10))/ta.sma(close,10)*100
bias20 = (close - ta.sma(close,20))/ta.sma(close,20)*100

plot(bias5, title = 'bias5')
plot(bias10, title = 'bias10')
plot(bias20, title = 'bias20')

相似指标:B3612

36乖离指标考虑不同周期的移动平均线之间的差距,衡量短期和中期投资者获利的相互状态,进而评估短、中期投资者对后市的看法。不同周期移动平均线之间的差距称为乖离,3日平均数值与6日平均数值之间的差值为B36,6日平均数值与12日平均数值之间的差值为B612。

img

【计算方法】 B36 = 最近3日的收盘价之和 / 3 - 最近6日的收盘价值和 / 6 B612 = 最近3日的收盘价之和 / 6 - 最近6日的收盘价值和 / 12

相似指标ROC

ROC(RATE OF CHANGE),中文名称:变动率指标。该指标测量价格动量,可以用来监视常态性和极端性两种行情,对买卖信号提供强有力的参考。

img

计算方法

ROC = (今收盘 - 前N周期收盘) / 前N周期收盘 * 100

相似指标OSC

OSC摆动量,反映的是价格与移动平均价的偏离的绝对距离,OSC的构造思想同Bias是相同的。

img

计算方法

OSC = 当周期收盘价 - N周期的平均价

CCI

概念

CCI(Commodity Channel Index),中文名称:顺势指标。CCI指标主要是用来对付极端行情的,适合于快进快出的短线。

img

计算方法

计算方法是商品的典型价格与其简单移动平均线之间的差值除以典型价格的平均绝对偏差。该指数按0.015的倒数进行缩放,以提供更多可读的数字。

TP = (最高价 + 最低价 +收盘价) / 3 MA = 最近N周期TP的累计和 / N MD = (最近N周期(MA - TP)累计和) / N CCI(N) = (TP - MA) / 0.015*MD 说明:N值为14

应用规则

(1)CCI的常态区为 -100至+100; (2)当CCI从0~+100的正常范围内,由下往上突破+100时,价格有可能出现强势上涨,是买入的时机;当CCI从+100之上,由上往下跌破+100,价格短线有可能出现回调,是卖出的时机; (3)当CCI从0~-100的正常范围内,由上往下跌破-100时,价格有可能出现弱势下跌,是抛出的时机。当CCI从-100的下方,由下往上突破-100时,有可能出现反弹,可逢低买入; (4)当价格创出新高,而CCI没有同步创出新高时,顶背离出现,短线价格有可能出现回挡,可逢高卖出; (5)当价格创出新低,而CCI没有同步创出新低时,底背离出现,短线价格有可能出现反弹,可逢低买入。

代码

cci = ta.cci(close, 14)

plot(cci, title = 'cci')
hline(-100, title = 'bottom_line')
hline(0, title = 'horizon_line')
hline(100, title = 'up_line')

KDJ

KDJ指标是目前中国金融市场最普及的指标之一,全称为随机指标(Stochastics),它综合了动量观念、强弱指标及移动平均线的优点,是波段操作的有力武器。

img

计算方法

以计算日KDJ为例,计算方法如下:

对每一交易日求RSV(未成熟随机值)

RSV = (收盘价-最近N日最低价) / (最近N日最高价-最近N日最低价) × 100

K线 : K值 = (M1-1)/M1 * 前一日K值 + 1/M1 * 当日RSV ;

D线 :K值 = (M2-1)/M2 * 前一日D值 + 1/M2 * 当日K值 ;

J线 : 3 × 当日K值 - 2 × 当日D值

参数:N、M1、M2 天数,一般取9、3、3

应用规则

(1)D > 80,超买;D < 20,超卖;J > 100%超买;J < 10%超卖;

(2)线K向上突破线D,买进信号;线K向下跌破线D,卖出信号;

(3)线K与线D的交叉发生在70以上,30以下,才有效;

(4)KD指标不适于发行量小,交易不活跃的品种;

(5)KD指标对大盘和热门大盘品种有极高准确性。

Pine代码

hgst = ta.highest(high,9) 
lwst =ta.lowest(low,9)
rsv=(close-lwst)*100/(hgst-lwst)
k = 0.0 
d = 0.0
j = 0.0
k := (rsv+2*nz(k[1]))/3 
d := (k+2*nz(d[1]))/3 
j := 3*k - 2*d

//Step Three: plotting
plot(k,title = 'k', color=color.blue) 
plot(d,title = 'd',color = color.orange) 
plot(j,title = 'j',color =color.black)
hline(80,color=color.red,linestyle = hline.style_dashed, linewidth =1) 
hline(20,color=color.green, linestyle = hline.style_dashed,linewidth = 1)


if (k <20 and d <20 and k>d and k[1] <d[1])
    strategy.entry('long', strategy.long)   
if (k >80 and d >80 and k<d and k[1] > d[1])
    strategy.close('long')

相似指标:SLOWKD(K线)

指标介绍

Slowed KD是在KD的基础上,对D再进行一次平滑,选择的平滑工具是移动平均,而不是指数平滑。Slowed KD中的K就是KD中的D,Slowed KD中的D是KD中的D的值的移动平均;经过平滑的比未经过平滑的慢,所以Slowed KD同KD的本质没有什么不同。

总结

依据前人经验,大部分反趋势模型寻找卖掉短期内超买的和买入短期内超卖的机会。这些目标有点象在等待橡皮筋拉伸到它的极限的时机,然后打赌他们会回弹到一个相对松弛的状态。这些行为使得反趋势交易模型在市场缺乏方向性或者波动性很大时斩获颇丰,并能够在市场拐点出现的时候迅速反应。反趋势模型的缺点是在稳定的、趋势性较强的市场环境中他们经常交易不顺,也就是常说的‘赢小钱亏大钱’。

一个短期的反趋势系统想要成功,价格必须要在指数的长期趋势或者某些其他的显著的价格点附近不断的前前后后摇摆。这种市场反应意味着市场价格移动包含足够的噪音以及波动性,从而带来反趋势交易的盈利机会。


更多内容