Phân Tích và Giao Dịch Định Lượng - Bài 2
Trong bài viết này, chúng ta sẽ tìm hiểu cách xây dựng một chiến lược giao dịch định lượng sử dụng Python. Cụ thể, chúng ta sẽ triển khai một chiến lược giao dịch dựa trên chỉ báo RSI (Relative Strength Index).
1. Giới thiệu về RSI
RSI là một chỉ báo dao động được sử dụng để đo lường động lượng của giá. Nó thường dao động giữa 0 và 100. Các mức phổ biến để xác định tín hiệu giao dịch:
- RSI > 70: Quá mua (có thể bán)
- RSI < 30: Quá bán (có thể mua)
2. Cài đặt thư viện cần thiết
Trước tiên, bạn cần cài đặt các thư viện cần thiết:
pip install pandas numpy yfinance matplotlib
Sau đó, chúng ta sẽ import các thư viện:
import pandas as pd
import numpy as np
import yfinance as yf
import matplotlib.pyplot as plt
3. Tải dữ liệu cổ phiếu
Chúng ta sẽ tải dữ liệu giá của cổ phiếu từ Yahoo Finance:
symbol = "AAPL" # Mã cổ phiếu Apple
start_date = "2022-01-01"
end_date = "2023-01-01"
# Tải dữ liệu
stock_data = yf.download(symbol, start=start_date, end=end_date)
stock_data.head()
4. Tính toán RSI
def compute_rsi(data, window=14):
delta = data["Close"].diff()
gain = (delta.where(delta > 0, 0)).rolling(window=window).mean()
loss = (-delta.where(delta < 0, 0)).rolling(window=window).mean()
rs = gain / loss
rsi = 100 - (100 / (1 + rs))
return rsi
stock_data["RSI"] = compute_rsi(stock_data)
5. Xây dựng tín hiệu giao dịch
def generate_signals(data):
data["Buy"] = (data["RSI"] < 30)
data["Sell"] = (data["RSI"] > 70)
return data
stock_data = generate_signals(stock_data)
6. Mô phỏng kết quả giao dịch
plt.figure(figsize=(12,6))
plt.plot(stock_data["Close"], label="Close Price", color="blue")
plt.scatter(stock_data.index, stock_data["Close"].where(stock_data["Buy"] == True), color="green", label="Buy Signal", marker="^")
plt.scatter(stock_data.index, stock_data["Close"].where(stock_data["Sell"] == True), color="red", label="Sell Signal", marker="v")
plt.title(f"RSI Trading Strategy for {symbol}")
plt.legend()
plt.show()
7. Kết luận
Trong bài viết này, chúng ta đã xây dựng một chiến lược giao dịch định lượng đơn giản dựa trên chỉ báo RSI. Trong các bài tiếp theo, chúng ta sẽ tìm hiểu cách tối ưu hóa chiến lược này và triển khai nó vào hệ thống giao dịch tự động. 🚀