
“DMI”指标,我们常常称它为”动向指标”或趋向指标。因为,在这个指标算法内,不仅仅考虑到了价格波动的大小,还考虑到了价格波动的方向。
如下图所示:

具体的指标算法原理,作者就不再分享了,毕竟网络上的资料已经说的很透彻了。因此,作者只关注算法中的ADX值,并且利用其作为区分震荡或趋势的标志。
如下图所示:

上图中,可以很明显的看出,当价格波动大时,指标中的ADX值就越大。反之,则越小!很明显当数值ADX小于某个阀值时,我们可以假设其进入了震荡行情。
因此,我们只要大概识别了趋势和震荡,那么我们就可以结合其他一些规则在震荡市场中进行交易。

基于动向ADX震荡策略的开平仓逻辑
在上述中,作者已经分享了策略开仓的其中一部分,即ADX小于某个阀值时,市场处于震荡势。
震荡策略,最主要的就是识别出震荡,然后再进行择时。就像做趋势,需要识别出趋势行情一个道理。

因此,我们作者将利用k线组合在上述所判断的震荡区域,进行震荡交易。
通常情况下,在震荡区域交易,我们常常会选择超卖超买区域开仓。而作者,不采用此法,将以三根k线的收盘价连续下跌或上涨为开空或开多点位。
如下图所示:

策略的开平仓逻辑: 多头为例。
1.策略的开仓条件。
- ADX值小于25,处于震荡行情中。
- 且当前ADX值小于前n周期内的ADX值
- 连续出现三根close小于close[1],
满足上述3条件,策略开仓!

注:k线的阴阳,只需要满足close小于或大于close[1],说白了就是连续下跌或上涨。
2.策略的平仓条件: 由两大部分构成,分别是固定时间出场和保护止损。
- 价格跌破保护止损(开仓bar的最低价-N倍ATR),平仓。
- 开仓N根bar后,主动平仓。
- 满足上述其中一个条件,都将触发平仓。

小结。
上述就是关于ADX震荡交易系统的开平仓逻辑。主要是以ADX值大小,识别震荡。再以k线的连续上涨或下跌作为开空或开多仓信号。
Python 实现ADX震荡交易系统
作者借助天勤量化交易平台的tqsdk包中的回测框架进行回测。交易品种为螺纹钢期货指数1小时,以做空为例。仅需6步即可完成!
1.导入必要的包和参数变量设置。

Run: 打印获取到的k线数据。

2.计算DMI、ATR指标并设置成副图,并完成k线三连跌及三连涨的统计。每次k线更新都会获取前N根k线进行统计!并在下一根k线刚生成时重置为0。

Run: 打印统计出的三连阳和三连阳的数据情况。

3.策略的开仓。ADX值小于25,处于震荡行情中。且当前ADX值小于前n周期内的ADX值,连续出现三根close大于close[1]。

代码中,在开仓bar用最高价或最低价,加或减掉N倍ATR作为保护止损。
Run: 策略开仓信号。

4.策略平仓。价格跌破保护止损,平仓。开仓N根bar后,平仓。
满足上述其中一个条件,都将触发平仓。

如下图所示:

5.防止策略同时在一根k线开平,所以需要等待k线更新后把开仓的开关打开。

否则,就会导致圈内的两个信号同时发生在一根k线上。

6.策略启动回测。直接调用main方法。

Run:

策略回测曲线:


小结。
整个策略的实现,作者认为相对于前几期的python策略中算简单的。在阅读过程中注意理解字典var中的”flag”变量控制开仓顺序。
在on_dmi()函数内部用了for循环所以导致策略回测有点慢,读者可以对这部分代码进行改进。
最后
震荡策略,在量化交易策略中比较少见,大部分策略属于趋势跟踪策略。但是,在实际交易中尽量保持策略的差异性,确保策略不同质化!
除趋势策略外,套利策略等,都可以进行研究。
文章及策略代码仅供学习交流,切勿直接实盘!
发布者:股市刺客,转载请注明出处:https://www.95sca.cn/archives/491285
站内所有文章皆来自网络转载或读者投稿,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!