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
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()dariAdj_Closedan gunakannsebagai 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)