【转】python获取计算股票技术指标DIF/DEA/MACD
python获取计算股票技术指标DIF/DEA/MACD
·
http://t.csdn.cn/8hd5j
http://t.csdn.cn/8hd5jpython有几个股票数据获取接口,如tushare,但其只能获取到一般指标,且是积分制,即如果要获取更多的指标和接口,则需要做任务提高积分;pytdx可以获取到基本指标,且速度较快,性能比较稳定;talib可以获取到股票高级技术量化指标,但经过测试,其获取到的数据与各大第三方股票软件数据不一致,如通达信、同花顺、东方财富.
先了解一下DIF、DEA、MACD指标的计算方式:

dif/dea/macd计算公式
经过调查,之所以有差距,是因为talib的DIF/DEA/MACD指标计算中用到的初始EMA指标,是将我们调用时间段的起始日EMA赋值为0,而各大交易软件商则将其股票上市日的EMA赋值为0.
那是不是我们将调用数据的起始时间定为股票上市时间就可以了呢,当然可以,利用tushare接口可以获取到股票的上市时间,但这样不能一次性获取所有,比较麻烦,需要单个调用。故知道了计算公式的我们可以自己计算。
代码如下:
#导入相关模块from __future__ import print_function, absolute_importfrom gm.api import *import pandas as pdimport numpy as npimport tushare as tsfrom datetime import date,timedelta,datetimeimport time#单只股票计算函数def MACD(ts_code,start_time, end_time):# 取历史数据,取到上市首日ts.set_token('###########################')pro=ts.pro_api()data=pro.daily(ts_code=ts_code)data.sort_values(by='trade_date',inplace=True)# 将数据转化为dataframe格式#data['bob'] = data['bob'].apply(lambda x: x.strftime('%Y-%m-%d')).tolist()# 计算EMA(12)和EMA(16)data['EMA12'] = data['close'].ewm(alpha=2 / 13, adjust=False).mean()data['EMA26'] = data['close'].ewm(alpha=2 / 27, adjust=False).mean()# 计算DIFF、DEA、MACDdata['DIFF'] = data['EMA12'] - data['EMA26']data['DEA'] = data['DIFF'].ewm(alpha=2 / 10, adjust=False).mean()data['MACD'] = 2 * (data['DIFF'] - data['DEA'])# 上市首日,DIFF、DEA、MACD均为0data['DIFF'].iloc[0] = 0data['DEA'].iloc[0] = 0data['MACD'].iloc[0] = 0# 按照起止时间筛选MACD = data[(data['trade_date'] >= start_time)]return MACD# 测试一下ts.set_token('############################')pro=ts.pro_api()#获取主板上市股票stocks = pro.stock_basic(exchange='', list_status='L', market='',fields='ts_code,symbol,name,industry,list_date')df=pd.DataFrame()x=0n=len(stocks['ts_code'])for i in list(stocks['ts_code']):try:a= MACD(ts_code = i,start_time = '2021-01-01',end_time = '20210308')df=pd.concat([df,a],axis=0)print(i)time.sleep(0.301)except:passdf= MACD(ts_code='',start_time = '2021-01-01',end_time = '20210308')df.to_excel('cast.xlsx')
这里用了tushare获取股票的基本数据,然后进行计算。下面是UP主获取到的数据,经与交易软件对比,四舍五入后完全一致,感兴趣的小伙伴可以自己尝试一下。

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐

所有评论(0)