Mulai sekarangMulai gratis

Buat fitur moving average dan RSI

Kita ingin menambahkan data historis ke model Machine Learning agar prediksi lebih baik, tetapi menambahkan banyak langkah waktu historis itu rumit. Sebagai gantinya, kita dapat merangkum informasi dari titik-titik sebelumnya ke dalam satu langkah waktu menggunakan indikator.

Moving average adalah salah satu indikator paling sederhana—rata-rata dari titik data sebelumnya. Ini menggunakan fungsi talib.SMA() dari pustaka TAlib.

Indikator teknikal umum lainnya adalah relative strength index (RSI). Didefinisikan sebagai:

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

\(RS = \frac{\text{rata-rata kenaikan selama } n \text{ periode}} {\text{rata-rata penurunan selama } n \text{ periode}}\)

Jumlah periode n ditetapkan di talib.RSI() sebagai argumen timeperiod.

Periode yang umum untuk RSI adalah 14, jadi kita akan menggunakannya sebagai salah satu pengaturan dalam perhitungan kita.

Latihan ini merupakan bagian dari kursus

Machine Learning untuk Keuangan dengan Python

Lihat Kursus

Instruksi latihan

  • Buat daftar nama fitur (mulailah dengan daftar yang hanya berisi '5d_close_pct').
  • Gunakan timeperiod 14, 30, 50, dan 200 untuk menghitung moving average dengan talib.SMA() dari harga penutupan tersesuaikan (lng_df['Adj_Close']).
  • Normalkan moving average dengan harga penutupan tersesuaikan dengan membaginya dengan Adj_Close.
  • Di dalam loop, hitung RSI dengan talib.RSI() dari Adj_Close dan gunakan n sebagai timeperiod.

Latihan interaktif langsung praktik

Cobalah latihan ini dengan melengkapi kode contoh ini.

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)
Edit dan Jalankan Kode