我正在通过Numpy用Python编写技术指标。说,为方便起见,有一个名为Price的np.array填充了股票价格,并希望计算一些示例指标,如:
for i in range (0,len(Price)):
Indicator[i]=2*Price[i]+3*Price[i-1]+ .... + 34*Price[i-10]
到目前为止,我将分别计算自Price[-9]=Price[len(Price)-9]
以来的指标的前10个条目,并在10处开始for循环。有没有办法简化这个,例如自动省略负价指数的价格,如价格[-5]?
谢谢
答案 0 :(得分:1)
您可以使用numpy.convolve
来编写转换。例如,如果
>>> price
array([-1, 4, 5, 0, -5, 2, -4, 4, 20, 1])
>>> coef
array([10, -2, 1])
(其中,为简单起见,我只使用3个元素而不是10个),然后
coef[0] * price[t] + coef[1] * price[t-1] + coef[2] * price[t-2]
是np.convolve
计算的内容,它还会处理我们没有3个元素的系列的初始部分:
>>> np.convolve(coef, price)
array([-10, 42, 41, -6, -45, 30, -49, 50, 188, -26, 18, 1])
如您所见,第一个元素-10 = 10 * -1
,第二个元素:42 = 10 * 4 + -2 * -1
,以及第七个元素:-49 = 10 * -4 + -2 * 2 + 1 * -5
。