python-MACD指标编写

来源:互联网 发布:.net framework mac版 编辑:程序博客网 时间:2024/05/16 11:51

以后指标系列文章所用的示范数据都是来源于网易财经-000001上证指数,2010年到2017年5月数据

###经热心朋友casinozyz指正,该macd算法修改为如下,稍后会做一个更有效率的版本

import pandas as pdimport numpy as npimport datetimeimport time#获取数据df=pd.read_csv('C:/Users/HXWD/Desktop/000001.csv',encoding='gbk')df.columns=['date','code','name','close','high','low','open','preclose','change','change_per','volume','amt']df=df[['date','open','high','low','close','volume','amt']]df.head()def get_EMA(df,N):    for i in range(len(df)):        if i==0:            df.ix[i,'ema']=df.ix[i,'close']        if i>0:            df.ix[i,'ema']=(2*df.ix[i,'close']+(N-1)*df.ix[i-1,'ema'])/(N+1)    ema=list(df['ema'])    return emadef get_MACD(df,short=12,long=26,M=9):    a=get_EMA(df,short)    b=get_EMA(df,long)    df['diff']=pd.Series(a)-pd.Series(b)    #print(df['diff'])    for i in range(len(df)):        if i==0:            df.ix[i,'dea']=df.ix[i,'diff']        if i>0:            df.ix[i,'dea']=(2*df.ix[i,'diff']+(M-1)*df.ix[i-1,'dea'])/(M+1)    df['macd']=2*(df['diff']-df['dea'])    return dfget_MACD(df,12,26,9)df