首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pyti rsi产生负数

Pyti rsi产生负数
EN

Stack Overflow用户
提问于 2019-04-18 21:12:48
回答 1查看 333关注 0票数 0

Pyti相对强度指数在假定为0到100之间时产生负数。

代码语言:javascript
复制
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)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-22 15:51:16

pyti内部有一个bug

代码语言:javascript
复制
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忽略了实际的损益。此外,如果您考虑到这个库中的最后一次提交是一年前的话,您就会明白这个错误被修复的可能性很小。

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

代码语言:javascript
复制
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))]

对于这些人:

代码语言:javascript
复制
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))]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55753793

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档