这是我基于
http://stockcharts.com/school/doku.php?id=chart_school:technical_indicators:moving_averages制作的一个简单示例。
请注意,与它们的电子表格不同,我不计算SMA,并且不等待在生成10个样本后再生成EMA。这意味着我的值略有不同,但如果你绘制图表,它会在10个样本之后完全跟随。在前10个样本期间,我计算的EMA适当地平滑。
def emaWeight(numSamples):
return 2 / float(numSamples + 1)
def ema(close, prevEma, numSamples):
return ((close-prevEma) * emaWeight(numSamples) ) + prevEma
samples = [
22.27, 22.19, 22.08, 22.17, 22.18, 22.13, 22.23, 22.43, 22.24, 22.29,
22.15, 22.39, 22.38, 22.61, 23.36, 24.05, 23.75, 23.83, 23.95, 23.63,
23.82, 23.87, 23.65, 23.19, 23.10, 23.33, 22.68, 23.10, 22.40, 22.17,
]
emaCap = 10
e=samples[0]
for s in range(len(samples)):
numSamples = emaCap if s > emaCap else s
e = ema(samples[s], e, numSamples)
print e
a[:window] = a[window -1]
因为越界了。 - PaSe