楼主: 邢不行
5826 107

[源码分享] 【量化小讲堂-Python、Pandas系列18】平均趋向指标(ADX)策略在A股的实证   [推广有奖]

学科带头人

33%

还不是VIP/贵宾

-

威望
1
论坛币
43260 个
学术水平
405 点
热心指数
418 点
信用等级
380 点
经验
31652 点
帖子
333
精华
23
在线时间
599 小时
注册时间
2010-4-30
最后登录
2017-5-23

邢不行 在职认证  发表于 2017-1-6 11:06:22 |显示全部楼层
引言:
本系列帖子“量化小讲堂”,通过实际的案例让大家知道如何使用Python、pandas进行金融数据处理。帖子主要面向来自金融领域的入门学习者,大神请轻拍。希望能对大家有帮助。
之前的系列文章目录以及未来内容安排请见:http://bbs.pinggu.org/thread-3950124-1-1.html
可在帖子后面回复问题、后续希望讲的内容,或者加入量化交流Q群438143420,在群中直接提问。本文代码由群成员nuit étoilée编写。
注:文章中用到的A股数据可在yucezhe.com下载。这里可以下载到所有股票、从上市日起的交易数据、财务数据、分钟数据、分笔数据、逐笔数据等。



【量化小讲堂-Python、Pandas系列18】平均趋向指标(ADX)策略在A股的实证

上一期量化小讲堂向大家介绍了简易波动指标(EMV)策略在A股的实证效果(http://bbs.pinggu.org/thread-5023069-1-1.html)。本期将以平均趋向指标(ADX)策略为例,实证检验一下该策略在A股的实际效果。

---策略简介---

平均趋向指标(ADX)是由美国技术分析大师威尔斯•威尔德(Wells Wilder)所创造的,是一种中长期股市技术分析方法。ADX属于趋向指标DMI指标的一种,而DMI主要是通过分析股票价格在涨跌过程中买卖双方力量均衡点的变化情况,即多空双方的力量的变化受价格波动的影响而发生由均衡到失衡的循环过程,从而提供对趋势判断依据的一种技术指标。
在大多数指标中,绝大部分都是以每一日的收盘价的走势及涨跌幅的累计数来计算出不同的分析数据,其不足之处在于忽略了每一日的高低之间的波动幅度。而DMI指标则是把每日的高低波动的幅度因素计算在内,从而更加准确的反应行情的走势及更好的预测行情未来的发展变化,因此可以作为择时的判断依据。
2.PNG


本文采用的ADX策略的具体规则为:
第一步:若股票当日相对前日重心上移并且创新高,将最高点的价差记为hd;若重心下移并且创新低,将最低价的价差记为ld。即先计算当天最高价减去前一天最高价(记为a)和前一天的最低价减去当天最低价(记为b),如果a>0并且a>b,则hd=a,否则hd取0;同理,如果b>0且b>a,则ld=b,否则ld取0。
第二步:计算真实涨跌幅TR,先分别计算以下三项:
A、当日的最高价减去当日的最低价。
B、当日的最高价减去前一日的收盘价。
C、当日的最低价减去前一日的收盘价。
TR是A、B、C绝对值中的数值最大者
第三步:计算pdi和mdi,pdi(+DI)为一段时间内hd的和/真实涨跌的和;mdi(-DI)为一段时间内ld的和/真实涨跌的和
第四步:当pdi上穿mdi,买入,信号为1;当pdi下穿mdi,卖空,信号为-1

---实战---


为了检验ADX策略在A股的实际效果,本文将该策略在所有A股都运行一遍。由于策略用不同的参数回测结果也不一样,因此对每只股票回测时都遍历一遍参数,选择使超额收益率最大的参数作为该股票的最优参数。具体步骤如下:


一、遍历数据文件夹中所有股票文件的文件名,得到股票代码列表

用python提取股票历史数据文件夹下每个股票对应的文件名(即股票代码)并存放到一个列表里,这样就得到了所有A股的代码列表。

接着遍历股票代码的列表,读取每只股票的历史数据。


二、计算股票的后复权价格

在读取某只股票的历史数据后,为了回测结果的可靠性,本文重新计算了复权后的开盘价、收盘价、最高价和最低价,后面计算指标值和涨跌幅都以复权后的数据为基础。有些上市不久的股票由于时间太短可能不具有代表性,因此本文在运行策略之前会先判断该股票上市至今的交易天数,剔除掉上市不到1年半的股票。


三、遍历参数进行回测

接着就是计算ADX策略的各项指标并给出每天的信号了,在计算指标时本文用到参数范围是n取10到30,步长为2。即遍历该范围内的所有参数,每一参数都会输出对应的每天的信号,根据买卖信号,可以得到每天的仓位,进而可以得到资金曲线及相关的回测指标(相关内容可参考量化小讲堂http://bbs.pinggu.org/thread-4745852-1-1.html)。在得到所有参数的回测结果后,根据超额收益率大小进行排序,选择使超额收益最大的参数作为该股票的最优参数,并将相应数据存入csv文件。

最后,在遍历完所有A股后,我们可以得到每只股票在最优参数下使用ADX策略的回测结果,并和股票的年化收益及最大回撤做了一下对比。


本文希望通过对ADX策略的实际操作,向大家介绍pandas的以下几个功能的运用:

1. 滚动求和函数rolling_sum()函数的用法

2. 时间序列超前滞后函数shift()函数的用法

3. 空值填充函数fillna()函数的用法


下面上具体的程序。


---程序---


要运行策略,需要所有A股的历史交易数据,在www.yucezhe.com可以下载到所有股票历史至今的数据。如下图所示,每一行是每一天的数据:

3.png


数据有以下的字段:
【code】股票的代码,上证股票以sh开头,深证股票以sz开头
【date】交易日期
【open】开盘价
【high】最高价
【low】最低价
【close】收盘价
【change】涨跌幅,复权之后的真实涨跌幅,保证准确
【volume】成交量
【money】成交额
【traded_market_value】流通市值
【market_value】总市值
【turnover】换手率,成交量/流通股本
【adjust_price】后复权价,复权开始时间为股票上市日,精确到小数点后10位
【report_date】最近一期财务报告实际发布的日期
【report_type】最近一期财务报告的类型,3-31对应一季报,6-30对应半年报,9-30对应三季报,12-31对应年报
【PE_TTM】最近12个月市盈率,股价 / 最近12个月归属母公司的每股收益TTM
【PS_TTM】最近12个月市销率, 股价 / 最近12个月每股营业收入
【PC_TTM】最近12个月市现率, 股价 / 最近12个月每股经营现金流
【PB】市净率,股价 / 最近期财报每股净资产

下面是代码的截图,代码里面有详细的注释,有问题可以留言,附件中有程序的源码,回复即可下载
4.png

5.png

6.png

7.png

8.png

9.png


这是最后回测结果的部分截图:

10.png


运行该策略的一共有2607只股票,其中,策略年化收益大于股票本身年化收益的有2056只个股,占比大概为78.9%,而年化收益除以最大回撤绝对值能超过股票本身的有2346只个股,大概占90%。可以看出,ADX指标的效果还可以。大家有其他一些技术指标也可以尝试一下,看看效果如何,只需要将第一部分信号产生方式改成自己的策略逻辑就可以了。



本帖隐藏的内容

ADX.rar (2.79 KB)


~欢迎大家留言和我交流~


如果你想从Python、Pandas基础开始,系统学习相关量化投资和数据分析知识,进而编写较复杂的择时、选股策略,并且获取实时股票数据,进行自动化交易。你可以选择我在论坛开设的课程:量化投资之基础编程策略

量化投资Python课程.jpg



支持楼主:购买VIP购买贵宾 购买后,论坛将奖励 10 元论坛资金给楼主,以表示您对TA发好贴的支持
 
载入中......
已有 5 人评分经验 论坛币 学术水平 热心指数 信用等级 收起 理由
kongqingbao280 + 20 + 1 精彩帖子
solensolen + 5 + 1 精彩帖子
crystal8832 + 1 + 1 + 1 精彩帖子
Captain-CUI + 100 + 3 + 3 + 3 精彩帖子
fantuanxiaot + 88 + 88 精彩帖子

总评分: 经验 + 208  论坛币 + 93  学术水平 + 4  热心指数 + 5  信用等级 + 5   查看全部评分

本帖被以下文库推荐

不管去哪里 只要在路上
stata SPSS
lchuying 发表于 2017-1-9 15:26:47 |显示全部楼层
学习一个
回复

使用道具 举报

sl512911 发表于 2017-1-9 15:45:13 |显示全部楼层
进来学习
回复

使用道具 举报

39970083 发表于 2017-1-9 16:10:00 |显示全部楼层
学习学习
回复

使用道具 举报

Crsky7 发表于 2017-1-9 17:58:20 |显示全部楼层
ADX策略不错
回复

使用道具 举报

EAAnalyzer 发表于 2017-1-9 19:29:11 |显示全部楼层
回复

使用道具 举报

tbs20 发表于 2017-1-9 21:23:43 |显示全部楼层
回复

使用道具 举报

是旦++ 发表于 2017-1-9 22:19:43 |显示全部楼层
谢谢分享
回复

使用道具 举报

HZZH 发表于 2017-1-9 23:11:45 |显示全部楼层
谢楼主分享
回复

使用道具 举报

啸傲江弧 发表于 2017-1-10 05:24:01 来自手机 |显示全部楼层
谢谢,收下了!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 我要注册

论坛通告

加入经管之家俱乐部
无限扩大经管职场人脉圈!
每天抽选10位免费名额,现在就扫

  论坛VIP
  贵宾会员
  可免费加入



关闭 查看 »

GMT+8, 2017-5-24 06:30