ÎncepețiÎncepe gratuit

Creează caracteristici cu media mobilă și RSI

Vrem să adăugăm date istorice modelelor noastre de învățare automată pentru a face predicții mai bune, dar includerea unui număr mare de pași de timp istorici poate fi complicată. În schimb, putem condensa informațiile din punctele anterioare într-un singur pas de timp cu ajutorul indicatorilor.

Media mobilă este unul dintre cei mai simpli indicatori – reprezintă media punctelor de date anterioare. Aceasta este funcția talib.SMA() din biblioteca TAlib.

Un alt indicator tehnic des utilizat este indicele de forță relativă (RSI). Acesta este definit astfel:

\(RSI = 100 - \frac{100} {1 + RS}\)

\(RS = \frac{\text{average gain over } n \text{ periods}} {\text{average loss over } n \text{ periods}}\)

Numărul de perioade n se setează în talib.RSI() prin argumentul timeperiod.

O perioadă frecvent folosită pentru RSI este 14, așa că vom folosi această valoare ca una dintre setările din calculele noastre.

Acest exercițiu face parte din cursul

Machine Learning pentru finanțe în Python

Vezi cursul

Instrucțiuni pentru exercițiu

  • Creează o listă de nume de caracteristici (începe cu o listă care conține doar '5d_close_pct').
  • Folosește perioade de timp de 14, 30, 50 și 200 pentru a calcula medii mobile cu talib.SMA() pe baza prețurilor de închidere ajustate (lng_df['Adj_Close']).
  • Normalizează mediile mobile în raport cu prețul de închidere ajustat, împărțind la Adj_Close.
  • În interiorul buclei, calculează RSI cu talib.RSI() din Adj_Close, folosind n pentru perioada de timp.

Exercițiu interactiv practic

Încearcă acest exercițiu completând acest cod de exemplu.

feature_names = ____  # a list of the feature names for later

# Create moving averages and rsi for timeperiods of 14, 30, 50, and 200
for n in [____]:

    # Create the moving average indicator and divide by Adj_Close
    lng_df['ma' + str(n)] = talib.SMA(lng_df['Adj_Close'].values,
                              timeperiod=n) / lng_df[____]
    # Create the RSI indicator
    lng_df['rsi' + str(n)] = talib.____(lng_df['Adj_Close'].____, timeperiod=____)
    
    # Add rsi and moving average to the feature name list
    feature_names = feature_names + ['ma' + str(n), 'rsi' + str(n)]

print(feature_names)
Editează și rulează codul