#RSI中使用的移动平均线。 它是指数加权移动平均线,alpha加权值 = 1 /长度
def RMA(r, days, name=0):
cps = [ v[name] for v in r ] if name else r
rmas = [0 for i in range(len(cps))] # 创造一个和cps一样大小的集合
alpha = 1 / days
for i in range(len(cps)):
if i > days-1:
if rmas[i-1] and not np.isnan(rmas[i-1]):
rmas[i] = alpha * cps[i] + (1 - alpha) * rmas[i-1]
else:
ma = 0
for i2 in range(i-days,i): #求平均值
ma += cps[i2+1]
rmas[i] = ma / days
return rmas
#其他MA类型看上一篇文章
def ATR(r, days, ma='sma'):
tr = [0]
for i in range(len(r)):
if i:
tr.append(max(r[i]['High']-r[i]['Low'], abs(r[i]['High'] - r[i-1]['Clos