我正在通过Numpy用Python编写技术指标。假设,为了方便起见,我们有一个名为Price的np.array,其中填充了Stock-Price,并希望计算一些示例指标,如:
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
谢谢
发布于 2014-07-26 23:01:36
你可以用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。
https://stackoverflow.com/questions/24972111
复制相似问题