Как Талиб рассчитывает RSI (индекс относительной силы)?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как Талиб рассчитывает RSI (индекс относительной силы)?

Сообщение Anonymous »

Кто-нибудь знает, как talib, библиотека для финансового технического анализа на Python, рассчитывает индекс относительной силы (RSI)?
Существуют разные способы расчета RSI, в зависимости от от того, используете ли вы простое усреднение или экспоненциальное сглаживание. Я поигрался со всеми из них, но так и не смог понять, как talib рассчитывает RSI.
Вот несколько разных подходов, которые я пытался вычислить RSI:Мои данные — pd["close"], которые представляют собой pandas.core.series.Series:
{Timestamp('2016-01-04 00:00:00'): 54.79999923706055,
Timestamp('2016-01-05 00:00:00'): 55.04999923706055,
Timestamp('2016-01-06 00:00:00'): 54.04999923706055,
Timestamp('2016-01-07 00:00:00'): 52.16999816894531,
Timestamp('2016-01-08 00:00:00'): 52.33000183105469,
Timestamp('2016-01-11 00:00:00'): 52.29999923706055,
Timestamp('2016-01-12 00:00:00'): 52.779998779296875,
Timestamp('2016-01-13 00:00:00'): 51.63999938964844,
Timestamp('2016-01-14 00:00:00'): 53.11000061035156,
Timestamp('2016-01-15 00:00:00'): 50.9900016784668,
Timestamp('2016-01-19 00:00:00'): 50.560001373291016,
Timestamp('2016-01-20 00:00:00'): 50.790000915527344,
Timestamp('2016-01-21 00:00:00'): 50.47999954223633,
Timestamp('2016-01-22 00:00:00'): 52.290000915527344,
Timestamp('2016-01-25 00:00:00'): 51.790000915527344,
Timestamp('2016-01-26 00:00:00'): 52.16999816894531,
Timestamp('2016-01-27 00:00:00'): 51.220001220703125,
Timestamp('2016-01-28 00:00:00'): 52.060001373291016,
Timestamp('2016-01-29 00:00:00'): 55.09000015258789,
Timestamp('2016-02-01 00:00:00'): 54.709999084472656,
Timestamp('2016-02-02 00:00:00'): 53.0,
Timestamp('2016-02-03 00:00:00'): 52.15999984741211,
Timestamp('2016-02-04 00:00:00'): 52.0,
Timestamp('2016-02-05 00:00:00'): 50.15999984741211,
Timestamp('2016-02-08 00:00:00'): 49.40999984741211,
Timestamp('2016-02-09 00:00:00'): 49.279998779296875,
Timestamp('2016-02-10 00:00:00'): 49.709999084472656,
Timestamp('2016-02-11 00:00:00'): 49.689998626708984,
Timestamp('2016-02-12 00:00:00'): 50.5,
Timestamp('2016-02-16 00:00:00'): 51.09000015258789}
  • При простом усреднении:
period = 14
close_delta = pd['close'].diff()
up = close_delta.clip(lower=0)
down = -1 * close_delta.clip(upper=0)

AvgU = up.rolling(window = period).mean()
AvgD = down.rolling(window = period).mean()

rs = AvgU / AvgD
rsi_simple = 100 - (100/(1 + rs))
rsi_simple_np = np.array(rsi_simple)
rsi_simple_np

Result from approach 1:
array([ nan, nan, nan, nan, nan,
nan, nan, nan, nan, nan,
nan, nan, nan, nan, 37.25657906,
37.93970034, 38.09925461, 49.49310243, 60.05830482, 58.56432322,
50.71895845, 51.7333353 , 45.94594218, 46.90528681, 45.81208345,
44.4607394 , 47.19999756, 39.13042092, 44.74327111, 45.67308471])

  • С экспоненциальным взвешиванием:
period = 14
close_delta = pd['close'].diff()
up = close_delta.clip(lower=0)
down = -1 * close_delta.clip(upper=0)
up_ewm = up.ewm(com = period-1, min_periods = period).mean()
down_ewm = down.ewm(com = period-1, min_periods = period).mean()

rs_ewm = up_ewm / down_ewm
rsi_ewm = 100 - (100/(1 + rs_ewm))
rsi_ewm_np

Result from approach 2:
array([ nan, nan, nan, nan, nan,
nan, nan, nan, nan, nan,
nan, nan, nan, nan, 41.95958341,
44.87716279, 39.52759183, 45.69209969, 61.09733337, 58.84295505,
49.9171034 , 46.20901506, 45.51545438, 38.38105197, 35.91021116,
35.4838002 , 38.10194654, 38.02465245, 43.06231841, 46.47516513])
  • С talib.RSI
talib_rsi = talib.RSI(pd["close"], timeperiod=14))

The result from approach 3

array([ nan, nan, nan, nan, nan,
nan, nan, nan, nan, nan,
nan, nan, nan, nan, 37.25657906,
39.35788483, 36.10262076, 40.76765901, 53.8548396 , 52.29432162,
45.85517725, 43.05088129, 42.51751177, 36.86159232, 34.82787565,
34.47284663, 36.76885993, 36.70443892, 41.1978013 , 44.29955905])


Подробнее здесь: https://stackoverflow.com/questions/687 ... ngth-index
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как рассчитать индекс относительной силы (RSI) с помощью итераций записи в кадре данных pandas
    Anonymous » » в форуме Python
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous
  • RSI против проблем расчета RSI Уайлдера
    Anonymous » » в форуме C#
    0 Ответы
    20 Просмотры
    Последнее сообщение Anonymous
  • Индекс относительной силы
    Anonymous » » в форуме C#
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous
  • Индекс относительной силы
    Anonymous » » в форуме C#
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous
  • Индекс относительной силы
    Anonymous » » в форуме C#
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»