在python3下使用pandas计算MACD的源代码
以前在excel里使用表格计算过MACD,上周,花了一天时间查看pandas的帮助和网上其他人的源码,在python3下,自己写了一个计算MACD的源代码。股票数据调用tushare的数据。源码里有详细的注释,可以帮助大家了解如何使用python下的pandas方便快捷计算MACD。
在python3下运行,输入股票代码,比如600642。可以计算所有的股票macd。
--------------------------------------------------------------------------------------------------------
"""
创建于2017年9月15日 15:11:32
作者:eyeglasses
网站:fx-margin.com
"""
import pandas as pd
import tushare as ts
#定义一个函数get_a_share
def get_a_share(code):
#使用tushare的get_k_data调用A股股票数据
data = ts.get_k_data(code)
#删除列code
data = data.drop('code',axis = 1)
#返回修改后的股票数据
return data
#定义函数,获取macd,导入数据,初始化三个参数
def get_macd_data(data,short=0,long=0,mid=0):
if short==0:
short=12
if long==0:
long=26
if mid==0:
mid=9
#计算短期的ema,使用pandas的ewm得到指数加权的方法,mean方法指定数据用于平均
data['sema']=pd.Series(data['close']).ewm(span=short).mean()
#计算长期的ema,方式同上
data['lema']=pd.Series(data['close']).ewm(span=long).mean()
#填充为na的数据
data.fillna(0,inplace=True)
#计算dif,加入新列data_dif
data['data_dif']=data['sema']-data['lema']
#计算dea
data['data_dea']=pd.Series(data['data_dif']).ewm(span=mid).mean()
#计算macd
data['data_macd']=2*(data['data_dif']-data['data_dea'])
#填充为na的数据
data.fillna(0,inplace=True)
#返回data的三个新列
return data[['date','data_dif','data_dea','data_macd']]
#请输入A股股票代码
code = str(input('输入A股股票代码:'))
data = get_a_share(code)
macd = get_macd_data(data)
macd
-----------------------------------------------------------------
注意:在粘贴代码运行的时候,自己把代码缩进调整好。