ema指标,通过测试输出的结果和软件一致
import pandas as pd
df=pd.read_csv(r'E:\程序开发测试_阙辉\PYTHON\股票研究\红米电脑备份\MACD分析\000002.csv',encoding='gbk')
# 默认按照列排序,即纵向排序;如果axis 为1,则是横向排序。
# by:str or list of str;如果axis=0,那么by="列名";如果axis=1,那么by="行名"。
# ascending:布尔型,True则升序,如果by=['列名1','列名2'],则该参数可以是[True, False],即第一字段升序,第二个降序。
# inplace:布尔型,是否用排序后的数据框替换现有的数据框。
# kind:排序方法,{‘quicksort’, ‘mergesort’, ‘heapsort’}, default ‘quicksort’。似乎不用太关心。
# na_position:{‘first’, ‘last’}, default ‘last’,默认缺失值排在最后面
df = df.sort_values(by=["日期"], axis=0, ascending=True, inplace=False, kind='quicksort', na_position='last')
def QH_Get_EMA(qh_df,qh_days=5,qh_close = "收盘价"):
qh_df = qh_df
qh_days = qh_days
qh_close = qh_close
for qh_i in range(len(qh_df)):
qh_close_jia = qh_df.loc[qh_df.index[qh_i],qh_close] #当天收盘价
if qh_i == 0:
qh_ema = qh_close_jia
elif qh_i > 0:
qh_close_ema = qh_df.loc[qh_df.index[qh_i - 1], "QH_EMA_{}".format(qh_days)] #前一日的ema
qh_ema = ((qh_days - 1) * qh_close_ema + 2 * qh_close_jia) / (qh_days + 1)
qh_df.loc[qh_df.index[qh_i], "QH_EMA_{}".format(qh_days)] = qh_ema
return qh_df
aa = QH_Get_EMA(df,qh_days=50)
print(aa)
aa=aa.to_csv(r'E:\程序开发测试_阙辉\PYTHON\股票研究\红米电脑备份\MACD分析\000002_ema.csv',encoding='gbk')