| Hướng Dẫn Backtest Chiến Lược Trên Chứng Khoán VN Với Python (SSI/DNSE)

1. Đặc Thù Của Chứng Khoán Việt Nam (T+2.5)

Khác với Crypto hay Forex giao dịch T+0, chứng khoán Việt Nam bị giới hạn bởi chu kỳ thanh toán T+2.5. Điều này có nghĩa là khi bạn mua một cổ phiếu, bạn phải chờ hơn 2 ngày sau mới có thể bán nó. Do đó, nếu bạn mang thẳng các con Bot đánh Scalping từ Forex sang chứng khoán VN, bạn sẽ chết chắc!

Đó là lý do bạn bắt buộc phải Backtest (thử nghiệm trên dữ liệu quá khứ) xem chiến lược của mình có chịu nổi nhịp độ T+2.5 hay không.

2. Lấy Dữ Liệu Lịch Sử Từ SSI / DNSE

Để backtest, bạn cần dữ liệu giá OHLCV (Open, High, Low, Close, Volume) trong quá khứ. May mắn là hiện nay các công ty chứng khoán như SSI hay DNSE đều cung cấp API dữ liệu khá tốt. Bạn có thể tự gọi API hoặc sử dụng thư viện mã nguồn mở vnstock.

from vnstock import *
import pandas as pd

# Lấy dữ liệu lịch sử mã HPG trong 1 năm
df = stock_historical_data("HPG", "2023-01-01", "2024-01-01", "1D", "stock")
print(df.head())

3. Viết Chiến Lược Cắt Dây MA Đơn Giản Bằng Pandas

Khi đã có DataFrame chứa dữ liệu giá, chúng ta dùng Pandas để tạo ra tín hiệu mua/bán. Ví dụ đơn giản nhất là Moving Average Crossover (Đường trung bình động cắt nhau).

# Tính toán SMA 20 và SMA 50
df['SMA20'] = df['close'].rolling(window=20).mean()
df['SMA50'] = df['close'].rolling(window=50).mean()

# Tạo tín hiệu Mua khi SMA20 cắt lên SMA50
df['Signal'] = 0
df.loc[df['SMA20'] > df['SMA50'], 'Signal'] = 1
df.loc[df['SMA20'] < df['SMA50'], 'Signal'] = -1

# Tính toán lợi nhuận giả định
df['Returns'] = df['close'].pct_change()
df['Strategy_Returns'] = df['Signal'].shift(1) * df['Returns']
print("Tổng lợi nhuận:", df['Strategy_Returns'].sum())

Đoạn code trên chỉ là minh họa cơ bản. Trong thực tế, bạn cần xử lý phí giao dịch, trượt giá và độ trễ T+2.5.

🔥 KHÓA HỌC AUTO TRADING THỰC CHIẾN: Tham gia ngay khóa Lập Trình Bot Python Trading MT5 & SSI để được hướng dẫn xây dựng hệ thống Backtest toàn diện và triển khai Bot chạy tự động thật 100%!
admin

admin

Biên tập viên, Hướng Nghiệp Dữ Liệu
738 Bài viết
15.4k Người theo dõi
120k+ Lượt đọc

Biên tập viên nội dung tại Hướng Nghiệp Dữ Liệu, phụ trách tổng hợp và biên soạn các bài viết về lập trình Python, dữ liệu và công nghệ.