互联网中如何实现自适应动态双均线策略
这篇文章主要为大家展示了“互联网中如何实现自适应动态双均线策略”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“互联网中如何实现自适应动态双均线策略”这篇文章吧。
建网站原本是网站策划师、网络程序员、网页设计师等,应用各种网络程序开发技术和网页设计技术配合操作的协同工作。创新互联专业提供成都网站制作、成都网站建设,网页设计,网站制作(企业站、响应式网站开发、电商门户网站)等服务,从网站深度策划、搜索引擎友好度优化到用户体验的提升,我们力求做到极致!
考夫曼均线
在《精明交易者》中,作者考夫曼(Kaufman)提出了“自适应移动平均线”,简称AMA。该均线考虑到了市场价格变化速率,在普通均线的基础上增加了平滑系数,并自适应动态调整均线的灵敏度,可以在慢速趋势和快速趋势之间自我调整。当市场出现盘整、趋势不明显时期,AMA倾向于慢速移动平均线。当市场波动较大,趋势明显,价格沿一个方向快速移动时,AMA倾向于快速移动平均线。
考夫曼均线本质上是根据一段时间内的价格波动率进行调整,计算出了合适的入场阈值提供了最佳的买卖点位。也就是说,它分为两部分主逻辑,第二部分逻辑在波动率层面做了又一次自适应。从而反应市场真实的趋势,便于快速抓住趋势性上涨和下跌的时机,同时规避市场来回震荡的影响。
考夫曼均线计算
有经验的交易者都习惯于在趋势展开的行情中使用快速均线,在震荡较多的行情中使用慢速均线。但如何把这个方法数量化,让程序来区分这两种行情?这里就需要引入“效率”的概念。
如果价格一致朝一个方向运行,每天收盘价的变化贡献于总的运行幅度,那么就被称为高效率;如果价格涨涨跌跌,很多次收盘价的变化相互抵消,那么就被称为低效率。这类似于物理学中的位移,如果价格在10天内上涨了100个点,我们可称为高效率,如果价格在10天内上涨了10个点,我们可以称为低效率。
第一步:计算价格效率
价格效率是建立在市场移动的速度和方向以及市场中噪声量的基础之上的,假设价格效率是在0~1之间,0表示市场没有移动,只有噪声;1表示市场只有移动,没有噪声。如果价格在10天内上涨了100个点,每天移动10个点,其价格效率就是:100 / (10 * 10) = 1;如果价格在10天内上涨了10个点,但每天震荡10个点,其价格效率就是:10 / (10 * 10) = 0.1
其计算公式是:首先计算价格变动值,即当根K线价格与前N根K线的价格差的绝对值;然后计算价格波动值,即N根K线内,所有价格变动绝对值的总和;最后计算效率系数,即价格变动值除以价格波动值。
价格变动值 = abs(价格 - n 日前价格)
价格波动值 = sum(abs(价格 - 上一个交易日价格),n)
效率系数 = 价格变动值 / 价格波动值
由此可见,在价格变动值一定条件下,市场波动越大,效率系数越小,此时使用慢速移动平均线更能把握整体趋势走向,因为慢速平均线不易被市场短期波动改变方向;反之,价格变动值一定条件下,市场波动越小,效率系数越大,此时应该使用快速(短期)移动平均线。
第二步:计算平滑系数
考夫曼用一系列的移动平均速度来描述平滑系数,其计算方式与EMA类似,根据价格所占权重,重新定义快速和慢速趋势速度系数,比如可以将2天的平均称为快速,30天的平均称为慢速。其中快速趋势系数是:2 /(2 + 1)= 2 / 3 = 0.66667;慢速趋势系数是:2 /(30 + 1) = 2 / 31 = 0.06452。它们的差值是:0.60215。
快速趋势系数 = 2 / (n1 + 1)
慢速趋势系数 = 2 / (n2 + 1)
上面公式中的n1和n2是交易周期数,并且n1小于n2。默认n1为2,n2为30。最后利用效率比率计算平滑系数,也就是:效率系数 * 0.60215 + 0.06452。
平滑系数 = 效率系数 * (快速 - 慢速) + 慢速
可见,当市场波动越大,趋势明显时,平滑系数更加趋向于选择快速趋势系数快速趋势系数,反之,在市场震荡盘整,趋势不明显时期,平滑系数更趋向于选择慢速趋势系数慢速趋势系数。
第三步:计算AMA值
因为在效率系数太低时,可能会取消交易,所以卡夫曼建议在计算AMA值之前,对最后的平滑系数再次乘方。
系数 = 平滑系数 * 平滑系数
AMA = 上一个交易日的AMA + 系数 * (价格 - 上一个交易日的AMA)
假设昨天的AMA值是40,当前的价格是47,它们之间有7个点的差值。那么在一个高效市场,其AMA值提高将近3.1个点,这几乎是差值的一半。在一个低效市场,这个差值几乎不会对AMA值产生影响。
策略逻辑
根据考夫曼的观点,AMA相当于平滑指数,如果其方向改变就应该立刻交易。换句话说就是AMA上升时应该买进,AMA下降时应该卖出。不过如果贸然以此做交易信号,可能会造成大量的无效信号,因此就需要增加一个合适的滤网,即增加另一根AMA均线,以双均线交叉的形式发出买卖信号。
多头开仓:AMA1和AMA2均为向上,并且AMA1大于AMA2。
空头开仓:AMA1和AMA2均为向下,并且AMA1小于AMA2。
多头平仓:AMA1和AMA2均为向下,或者AMA1小于AMA2。
空头平仓:AMA1和AMA2均为向上,或者AMA1大于AMA2。
按照以上计算AMA的逻辑,先用代码把它实现出来,首先是计算价格效率:
DIRECTION:=CLOSE-REF(CLOSE,10); VOLATILITY:=SUM(ABS((CLOSE-REF(CLOSE,1))),10); ER:=ABS(DIRECTION/VOLATILITY);
然后计算平滑系数:
FASTSC:=2/(2+1); SLOWSC:=2/(30+1); SSC:=ER*(FASTSC-SLOWSC)+SLOWSC;
最后计算AMA1和AMA2的值:
AMA1:EMA(DMA(CLOSE,CONSTANT),2),COLORGREEN,LINETHICK3; AMA2:EMA(DMA(CLOSE,CONSTANT),10),COLORGREEN,LINETHICK3;
有了AMA1和AMA2和值,就可以轻松把策略逻辑实现出来了:
AMA1 > REF(AMA1, 1) && AMA2 > REF(AMA2, 1) && AMA1 > AMA2, BK; AMA1 < REF(AMA1, 1) && AMA2 < REF(AMA2, 1) && AMA1 < AMA2, SK; BKVOL > 1 && AMA1 < REF(AMA1, 1) || AMA2 < REF(AMA2, 1) || AMA1 < AMA2, SP; SKVOL > 1 &&AMA1 > REF(AMA1, 1) || AMA2 > REF(AMA2, 1) || AMA1 > AMA2, BP;
完整策略
DIRECTION:=CLOSE-REF(CLOSE,10); VOLATILITY:=SUM(ABS((CLOSE-REF(CLOSE,1))),10); ER:=ABS(DIRECTION/VOLATILITY); FASTSC:=2/(2+1); SLOWSC:=2/(30+1); SSC:=ER*(FASTSC-SLOWSC)+SLOWSC; CONSTANT:SSC*SSC; AMA1:EMA(DMA(CLOSE,CONSTANT),1),COLORGREEN,LINETHICK3; AMA2:EMA(DMA(CLOSE,CONSTANT),10),COLORGREEN,LINETHICK3; AMA1 > REF(AMA1, 1) && AMA2 > REF(AMA2, 1) && AMA1 > AMA2, BK; AMA1 < REF(AMA1, 1) && AMA2 < REF(AMA2, 1) && AMA1 < AMA2, SK; BKVOL > 1 && AMA1 < REF(AMA1, 1) || AMA2 < REF(AMA2, 1) || AMA1 < AMA2, SP; SKVOL > 1 &&AMA1 > REF(AMA1, 1) || AMA2 > REF(AMA2, 1) || AMA1 > AMA2, BP; AUTOFILTER;
以上是“互联网中如何实现自适应动态双均线策略”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注创新互联行业资讯频道!
分享标题:互联网中如何实现自适应动态双均线策略
文章源于:http://scyanting.com/article/jdohge.html