Я использую библиотеку yfinance
для ежедневного получения цен акций на момент закрытия и расчета различных технических индикаторов. Иногда мой RSI (индекс относительной силы, для тех, кому интересно) совпадает с тем, что я вижу на графике Yahoo Finance. Однако в других случаях это сильно отличается. Я предполагаю, что Yahoo Finance знает, что они делают, и это я совершаю ошибку, но я не вижу, где именно.
Ожидаемое поведение: рассчитанное мной значение RSI будет соответствовать тому, что видно на биржевых диаграммах Yahoo Finance.
Фактическое поведение: иногда мой RSI может отклоняться на 10 или 15 пунктов, но в других случаях он идеально совпадает.
Например, сегодня, 29 декабря 2020 года, RSI, который я рассчитал для FB со вчерашнего дня, составляет 38. Yahoo показывает его как 52. Однако для T (символ AT&T) мой RSI равен 41, а Yahoo показывает его как 42.
Я убедился, что мой код соответствует другим примерам, которые я видел, но в остальном я не знаю, что здесь попробовать. Я не математик.
Ниже мой точный код:
import pandas as pd
import yfinance as yf
# Calculate Relative Strength Indicator (RSI) #
gainz = []
losses = []
# Initialize variable for counting rows of prices
n = 1
# For each of the last 14 trading sessions...
while n <= 14:
# ... calculate difference between closing price of each day and of the day before it.
difference = ((df['Close'][-n]) - (df['Close'][-(n+1)]))
# If difference is positive, add it to the positive list, and add 0 to the losses list
if difference > 0:
gainz.append(difference)
losses.append(0)
# If negative, get the absolute value and add to the negative list, and add 0 to the gainz list
elif difference < 0:
losses.append(abs(difference))
gainz.append(0)
# Otherwise it must be zero, so add 0 to both lists
else:
gainz.append(0)
losses.append(0)
# Increment n to move to the next row
n += 1
avg_gainz = (sum(gainz))/14
avg_losses = (sum(losses))/14
RSvalue = (avg_gainz/avg_losses)
RSI = (100 - (100/(1+RSvalue)))
RSI = int(RSI)
talib
, так как кажется, что это очень легко сделать этот расчет. - person MBWD   schedule 29.12.2020