dif/dea/macd计算公式
先了解一下DIF、DEA、MACD指标的计算方式:
#导入相关模块from__future__importprint_function,absolute_importfromgm.apiimport*importpandasaspdimportnumpyasnpimporttushareastsfromdatetimeimportdate,timedelta,datetimeimporttime#单只股票计算函数defMACD:#取历史数据,取到上市首日ts.set_tokenpro=ts.pro_apidata=pro.dailydata.sort_values#将数据转化为dataframe格式#data["bob"]=data["bob"].apply).tolist#计算EMA和EMAdata["EMA12"]=data["close"].ewm.meandata["EMA26"]=data["close"].ewm.mean#计算DIFF、DEA、MACDdata["DIFF"]=data["EMA12"]-data["EMA26"]data["DEA"]=data["DIFF"].ewm.meandata["MACD"]=2*#上市首日,DIFF、DEA、MACD均为0data["DIFF"].iloc[0]=0data["DEA"].iloc[0]=0data["MACD"].iloc[0]=0#按照起止时间筛选MACD=data[]returnMACD#测试一下ts.set_tokenpro=ts.pro_api#获取主板上市股票stocks=pro.stock_basicdf=pd.DataFramex=0n=lenforiinlist:try:a=MACDdf=pd.concatprinttime.sleepexcept:passdf=MACDdf.to_excel
经过调查,之所以有差距,是因为talib的DIF/DEA/MACD指标计算中用到的初始EMA指标,是将我们调用时间段的起始日EMA赋值为0,而各大交易软件商则将其股票上市日的EMA赋值为0.
那是不是我们将调用数据的起始时间定为股票上市时间就可以了呢,当然可以,利用tushare接口可以获取到股票的上市时间,但这样不能一次性获取所有,比较麻烦,需要单个调用。故知道了计算公式的我们可以自己计算。
文章为作者独立观点,不代表股票交易接口观点