Python量化交易之基于动向算法中的ADX开发震荡交易系统!

点及财经,股票期货专业投机者。

Python量化交易之基于动向算法中的ADX开发震荡交易系统!

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

如下图所示:

Python量化交易之基于动向算法中的ADX开发震荡交易系统!

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

如下图所示:

Python量化交易之基于动向算法中的ADX开发震荡交易系统!

上图中,可以很明显的看出,当价格波动大时,指标中的ADX值就越大。反之,则越小!很明显当数值ADX小于某个阀值时,我们可以假设其进入了震荡行情

因此,我们只要大概识别了趋势和震荡,那么我们就可以结合其他一些规则在震荡市场中进行交易

Python量化交易之基于动向算法中的ADX开发震荡交易系统!

基于动向ADX震荡策略的开平仓逻辑

在上述中,作者已经分享了策略开仓的其中一部分,即ADX小于某个阀值时,市场处于震荡势

震荡策略,最主要的就是识别出震荡,然后再进行择时。就像做趋势,需要识别出趋势行情一个道理。

Python量化交易之基于动向算法中的ADX开发震荡交易系统!

因此,我们作者将利用k线组合在上述所判断的震荡区域,进行震荡交易。

通常情况下,在震荡区域交易,我们常常会选择超卖超买区域开仓。而作者,不采用此法,将以三根k线的收盘价连续下跌或上涨为开空或开多点位

如下图所示:

Python量化交易之基于动向算法中的ADX开发震荡交易系统!

策略的开平仓逻辑: 多头为例。

1.策略的开仓条件

  • ADX值小于25,处于震荡行情中。
  • 且当前ADX值小于前n周期内的ADX值
  • 连续出现三根close小于close[1],

满足上述3条件,策略开仓!

Python量化交易之基于动向算法中的ADX开发震荡交易系统!

注:k线的阴阳,只需要满足close小于或大于close[1],说白了就是连续下跌或上涨。

2.策略的平仓条件: 由两大部分构成,分别是固定时间出场保护止损

  • 价格跌破保护止损(开仓bar的最低价-N倍ATR),平仓。
  • 开仓N根bar后,主动平仓。
  • 满足上述其中一个条件,都将触发平仓。
Python量化交易之基于动向算法中的ADX开发震荡交易系统!

小结。

上述就是关于ADX震荡交易系统的开平仓逻辑。主要是以ADX值大小,识别震荡。再以k线的连续上涨或下跌作为开空或开多仓信号。

Python 实现ADX震荡交易系统

作者借助天勤量化交易平台的tqsdk包中的回测框架进行回测。交易品种为螺纹钢期货指数1小时,以做空为例。仅需6步即可完成!

1.导入必要的包和参数变量设置

Python量化交易之基于动向算法中的ADX开发震荡交易系统!

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

Python量化交易之基于动向算法中的ADX开发震荡交易系统!

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

Python量化交易之基于动向算法中的ADX开发震荡交易系统!

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

Python量化交易之基于动向算法中的ADX开发震荡交易系统!

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

Python量化交易之基于动向算法中的ADX开发震荡交易系统!

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

Run: 策略开仓信号。

Python量化交易之基于动向算法中的ADX开发震荡交易系统!

4.策略平仓。价格跌破保护止损,平仓。开仓N根bar后,平仓。

满足上述其中一个条件,都将触发平仓。

Python量化交易之基于动向算法中的ADX开发震荡交易系统!

如下图所示:

Python量化交易之基于动向算法中的ADX开发震荡交易系统!

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

Python量化交易之基于动向算法中的ADX开发震荡交易系统!

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

Python量化交易之基于动向算法中的ADX开发震荡交易系统!

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

Python量化交易之基于动向算法中的ADX开发震荡交易系统!

Run:

Python量化交易之基于动向算法中的ADX开发震荡交易系统!

策略回测曲线:

Python量化交易之基于动向算法中的ADX开发震荡交易系统!
Python量化交易之基于动向算法中的ADX开发震荡交易系统!

小结。

整个策略的实现,作者认为相对于前几期的python策略中算简单的。在阅读过程中注意理解字典var中的”flag”变量控制开仓顺序。

在on_dmi()函数内部用了for循环所以导致策略回测有点慢,读者可以对这部分代码进行改进。

最后

震荡策略,在量化交易策略中比较少见,大部分策略属于趋势跟踪策略。但是,在实际交易中尽量保持策略的差异性,确保策略不同质化!

除趋势策略外,套利策略等,都可以进行研究。

文章及策略代码仅供学习交流,切勿直接实盘!

发布者:股市刺客,转载请注明出处:https://www.95sca.cn/archives/491285
站内所有文章皆来自网络转载或读者投稿,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!

(0)
股市刺客的头像股市刺客
上一篇 2024 年 12 月 25 日
下一篇 2024 年 12 月 25 日

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注