问题遇到的现象和发生背景
本来计算了MACD指标,但是忽然意识到取了500个不同的股票,这样的话i是累次增长的?所以我想是不是应该分别提取出来不同代码的股票,再去计算想算的指标,但是没有什么实现的办法。
问题相关代码(这个就是算MACD的代码)
import pandas as pd
import numpy as np
import datetime
import time
new_total=new_total.rename(columns={'月收盘价':'close'}) #改变列名,方便后续操作
def get_EMA(close,N):
ema = []
for i in range(len(close)):
if i==0:
ema.append(0)
if i>0:
ema.append(round((2*close[i]+(N-1)*ema[i-1])/(N+1),3))
return ema
def get_MACD(new_total, short=12, long=26, M=9):
a=get_EMA(new_total.close,short)
b=get_EMA(new_total.close,long)
new_total['dif']=pd.Series(a)-pd.Series(b)
dea = []
for i in range(len(new_total)): #len用close或者new_total都可以
if i==0:
dea.append(0)
if i>0:
dea.append(round((2*new_total['dif'][i]+(M-1)*dea[i-1])/(M+1),3))
new_total['dea'] = dea
new_total['macd']=2*(new_total['dif']-new_total['dea'])
return new_total
get_MACD(new_total,12,26,9)
new_total
运行结果及报错内容
其实就是发现了之前说的问题,但是没有解决的办法,于是想问一下大家,谢谢大家♥♥