Pyti rsi выдает отрицательные числа

#python

#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)

 

Комментарии:

1. Пожалуйста, добавьте некоторый контекст к вашему вопросу, например, объясните, каков ваш ожидаемый результат, и, возможно, какой-нибудь пример вывода вашего текущего кода.

2. Индикатор относительной силы должен выдавать число от 0 до 100

Ответ №1:

Внутри есть ошибка pyti :

 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))]
 

это приводит gains losses к игнорированию реальных прибылей / убытков. Кроме того, если вы примете во внимание, что последний коммит в этой библиотеке был год назад, вы поймете, что вероятность исправления этой ошибки очень мала.

Я рекомендую вам скопировать и вставить этот код в свой проект и изменить эти строки:

 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))]
 

Комментарии:

1. Если мой ответ вам помог, я буду признателен, если вы его примете.