Bài viết gần đây
-
Học Auto Trade Ở Đâu Uy Tín Và Thực Chiến Nhất 2026?
Tháng 6 28, 2026 -
Tự Động Hóa Giao Dịch T+0 Trên Chứng Khoán Việt Nam Bằng Python
Tháng 6 28, 2026 -
Lập Trình Bot MT5 Bằng Python Với aiomql (Tài Liệu Tiếng Việt)
Tháng 6 28, 2026
| 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.
Weekly Digest — Nhận Bản Tin Hàng Tuần
Nhận các bài viết phân tích kỹ thuật chuyên sâu, thuật toán giao dịch tự động (Trading Bot) và các giải pháp công nghệ mới nhất từ Hướng Nghiệp Dữ Liệu.
admin
Biên tập viên, Hướng Nghiệp Dữ LiệuBiê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ệ.