#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. Если мой ответ вам помог, я буду признателен, если вы его примете.