Python量化交易——股票择时到底能否赚钱?技术指标大比拼——DMA指标
技术指标大比拼——DMA指标的有效性回测
Python量化交易——DMA
技术指标的有效性研究
背景介绍
技术指标是股票交易中最常用的技术手段之一,abc几乎所有的技术文章或股票分析文章都离不开通过MACD等各种指标来判断一支股票的买点和卖点,做量化的也会经常接触TA-Lib
中提供的各种技术指标。从股评人的文章里看,似乎这些指标都有指哪打哪的能力,但是,我们既然做量化交易,就必须用数据说话,一个技术指标到底好不好,有没有用,不是靠嘴说的,是靠数据来验证的。因此,我这个系列文章的目标,就是把TA-Lib
中的技术指标全都拿出来溜一溜,做一个横向大评比。俗话说,是骡子是马拉出来溜溜,通过大数据分析,我们就应该对指标的有效性有一个大致的了解。
为此,我通过一个系列文章,来综合评测33种TA-Lib中的技术指标的有效性,详情请点击这里
DMA技术指标介绍
DMA指标又叫平行线差指标,是目前股市分析技术指标中的一种中短期指标,它常用于大盘指数和个股的研判。
DMA属于趋向类指标,也是一种趋势分析指标,它是根据快慢两条移动平均线的差值情况分析价格趋势的一种技术分析指标。主要通过计算两条基准周期不同的移动平均线的差值,来判断当前买入卖出的能量的大小和未来价格走势的趋势。
指标用法建议
买卖原则
- DMA线向上交叉AMA线,做买。
- DMA线向下交叉AMA线,做卖。
- DMA指标也可观察与股价的背离。
qteasy
中内置了DMA交易策略
这里使用qteasy
作为回测评测的工具。
qteasy
是本人正在开发的一个快速量化交易工具包,使用这个工具包,可以快速灵活地生成各种量化交易策略,生成历史数据并回测策略的表现,有针对性地优化策略的性能;还能模拟实盘自动化交易。qteasy目前最新版本为v1.0.14,可以通过pip安装,Github项目地址在这里,安装方法如下:
python -m pip install qteasy
qteasy
中有一个内置策略是基于DMA指标创建的,其创建规则如下:
在下面情况下产生买入信号:
1, DMA在AMA上方时,多头区间,即DMA线自下而上穿越AMA线后,输出为1
2, DMA在AMA下方时,空头区间,即DMA线自上而下穿越AMA线后,输出为0
3, DMA与股价发生背离时的交叉信号,可信度较高
上述规则是qteasy内置策略的定义,用户完全可以根据自己的理解重新定义交易规则,或者选用其他策略参数。详细用法参见qteasy文档
433支股票五年回测结果
下面使用qteasy
进行技术指标的回测
使用qteasy
回测所有433支股票的回测结果,每次回测的时间跨度都是5年,从2015年1月1日开始投资于一个股票,在技术指标发出买入信号时全仓买入,在发出卖出信号后全仓卖出,一直到2019年21月31日为止,最后综合计算每个技术指标的指标强度和适应性,通过两个数字来反映技术指标的有效性。关于计算方法的详细介绍,请参见这里
首先放出结果:CCI策略的强度为
2.3% ——该指标平均产生2.3%的超额收益
result_df.describe()
return 策略收益率 | benchmark 基准收益率 | mdd 最大回撤 | sharp 夏普率 | alpha 超额收益 | diff | |
---|---|---|---|---|---|---|
count | 296 | 296 | 296 | 296 | 296 | 296 |
mean | 101.73% | 99.40% | 46.35% | 28.06% | 1.05% | 2.33% |
std | 172.91% | 160.75% | 11.91% | 36.29% | 14.31% | 146.24% |
min | -60.66% | -64.66% | 19.09% | -68.89% | -35.80% | -438.05% |
25% | -1.29% | -14.25% | 37.80% | 3.03% | -8.39% | -57.97% |
50% | 59.35% | 37.21% | 45.70% | 25.52% | 1.24% | 2.81% |
75% | 144.57% | 154.64% | 53.97% | 52.98% | 9.10% | 54.71% |
max | 1488.10% | 678.90% | 83.15% | 153.64% | 90.56% | 1002.40% |
296支股票的平均收益率是99.4%,而策略平均收益为101.73%,平均跑赢了原始股票2个百分点。
再看策略适应性:
131.32%——该指标平均适应度131.32%,较广泛地适用于各种股票
在所有有回测结果的296支股票中,六种典型结果的数量分别如下:
序号 | 组别 | 股票数量 | 该组平均基准收益 | 该组平均择时收益 | 该组平均超额收益 |
---|---|---|---|---|---|
1 | 力挽狂澜 | 48 | -29.38% | 57.46% | 86.84% |
2 | 锦上添花 | 77 | 108.46% | 226.57% | 118.11% |
3 | 差强人意 | 94 | 236.58% | 124.18% | -112.40% |
4 | 无力回天 | 29 | -37.19% | -15.70% | 21.49% |
5 | 屋漏逢雨 | 17 | -18.08% | -34.30% | -16.22% |
6 | 乐极生悲 | 31 | 52.52% | -23.48% | -76.00% |
综上,结论如下:
- 该指标在大部分情况下会产生正收益,产生正收益的比例有约74%
- 不足之处在于有大约1/3股票产生差强人意的收益,而且平均跑输原始股票112个百分点,这是导致指标失分的主要原因。
总体来说,该指标的择时效果较好,只是平均超额收益不够理想。如果要看其他所有指标的结果,请点击这里
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库