Pyti rsi产生负数

2024-04-26 10:51:27 发布

您现在位置:Python中文网/ 问答频道 /正文

Pyti相对强度指数在0到100之间时会产生负数。你知道吗

from pyti.relative_strength_index import relative_strength_index as rsi
import numpy as np

y=[1,3,5,2,6,2,8,5,5,6,7,1,78,3,7,3,67,3,563,4545,563,2,65,3,56,34,56,43,56,56,56,562343243,43,43,45,56,2,2356,4345,2,67,34,6,3,56,2343,56,45,56,67,56,67,23,4556,23,45,3,56,56,45,6767,1]
s= np.array(y)
rsssi = rsi(s,3)
print(rsssi)


Tags: fromimportindexasnp指数strength时会
1条回答
网友
1楼 · 发布于 2024-04-26 10:51:27

pyti中有一个bug:

gains =  [0 if filtered_gain[idx] is True else changes[idx] for idx in range(0, len(filtered_gain))]
                                      ^
                     Here       -
                                      V
losses = [0 if filtered_loss[idx] is True else abs(changes[idx]) for idx in range(0, len(filtered_loss))]

这会导致gainslosses忽略实际收益/损失。另外,如果您考虑到这个库中的最后一次提交是一年前,您就会明白这个bug被修复的可能性非常小。你知道吗

我建议您将粘贴this代码复制到项目中并更改以下行:

gains =  [0 if filtered_gain[idx] is True else changes[idx] for idx in range(0, len(filtered_gain))]

losses = [0 if filtered_loss[idx] is True else abs(changes[idx]) for idx in range(0, len(filtered_loss))]

致:

gains =  [0 if filtered_gain[idx] else changes[idx] for idx in range(0, len(filtered_gain))]

losses = [0 if filtered_loss[idx] else abs(changes[idx]) for idx in range(0, len(filtered_loss))]

相关问题 更多 >