Bắt đầu ngayBắt đầu miễn phí

Tạo đặc trưng trung bình động và RSI

Chúng ta muốn thêm dữ liệu lịch sử vào các mô hình Machine Learning để dự đoán tốt hơn, nhưng thêm quá nhiều bước thời gian lịch sử thì phức tạp. Thay vào đó, bạn có thể cô đọng thông tin từ các điểm trước đó vào một bước thời gian duy nhất bằng các chỉ báo.

Trung bình động là một trong những chỉ báo đơn giản nhất — đó là trung bình của các điểm dữ liệu trước đây. Đây là hàm talib.SMA() từ thư viện TAlib.

Một chỉ báo kỹ thuật phổ biến khác là chỉ số sức mạnh tương đối (RSI). Chỉ số này được định nghĩa bởi:

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

\(RS = \frac{\text{mức tăng trung bình trong } n \text{ chu kỳ}} {\text{mức giảm trung bình trong } n \text{ chu kỳ}}\)

Số chu kỳ n được thiết lập trong talib.RSI() bằng tham số timeperiod.

Một khoảng thời gian thường dùng cho RSI là 14, nên chúng ta sẽ dùng giá trị đó như một thiết lập trong các phép tính.

Bài tập này là một phần của khóa học

Machine Learning cho Tài chính bằng Python

Xem khóa học

Hướng dẫn bài tập

  • Tạo một danh sách tên đặc trưng (bắt đầu với danh sách chỉ chứa '5d_close_pct').
  • Dùng các timeperiod 14, 30, 50 và 200 để tính trung bình động với talib.SMA() từ giá đóng cửa điều chỉnh (lng_df['Adj_Close']).
  • Chuẩn hóa các đường trung bình động bằng giá đóng cửa điều chỉnh bằng cách chia cho Adj_Close.
  • Trong vòng lặp, tính RSI với talib.RSI() từ Adj_Close và dùng n cho tham số timeperiod.

Bài tập tương tác thực hành trực tiếp

Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.

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)
Chỉnh sửa và Chạy Mã