Bot auto trading Python chứng khoán Việt Nam đang thu hút ngày càng nhiều lập trình viên và nhà đầu tư. Thị trường HOSE và HNX với hàng trăm cổ phiếu tạo ra vô số cơ hội giao dịch có thể khai thác bằng thuật toán.
Đặc Thù Thị Trường Chứng Khoán Việt Nam
Trước khi viết bot, bạn cần hiểu rõ những đặc thù riêng:
- Giờ giao dịch: 9:00-11:30 và 13:00-14:45 (không giao dịch 24/7 như forex)
- Biên độ dao động: HOSE ±7%, HNX ±10%, UpCOM ±15% mỗi phiên
- T+2.5: Tiền/cổ phiếu về tài khoản sau 2.5 ngày làm việc — không thể daytrading như forex
- Lô giao dịch: Tối thiểu 100 cổ phiếu trên HOSE
- Phí giao dịch: 0.15-0.35% mỗi chiều — ảnh hưởng lớn đến chiến lược tần số cao
API Nào Dùng Được Cho Bot?
TCBS API (Techcombank Securities)
API không chính thức nhưng được cộng đồng dùng rộng rãi để lấy dữ liệu:
import requests
def get_stock_price(symbol):
url = f"https://apipubaws.tcbs.com.vn/stock-insight/v1/stock/quotes?symbol={symbol}"
return requests.get(url).json()
DNSE API
Cung cấp API chính thức cho khách hàng DNSE với WebSocket real-time data và khả năng đặt lệnh.
SSI FastConnect
API trading chính thức của SSI — yêu cầu đăng ký và phê duyệt, phù hợp cho trader thuật toán nghiêm túc.
Kiến Trúc Bot Chứng Khoán Python
Data Layer → Strategy Layer → Execution Layer → Monitoring
↓ ↓ ↓ ↓
TCBS/DNSE MA/RSI/ML API Order Telegram Alert
Data Layer: Thu thập và lưu trữ dữ liệu giá (pandas, SQLite)
Strategy Layer: Xử lý tín hiệu — rule-based hoặc Machine Learning
Execution Layer: Gửi lệnh qua API của công ty chứng khoán
Monitoring Layer: Log, cảnh báo khi có drawdown bất thường
Ví Dụ: Tín Hiệu MA Crossover
import pandas as pd
def generate_signal(df, fast=9, slow=21):
df['ema_fast'] = df['close'].ewm(span=fast).mean()
df['ema_slow'] = df['close'].ewm(span=slow).mean()
df['signal'] = 0
df.loc[df['ema_fast'] > df['ema_slow'], 'signal'] = 1 # Buy
df.loc[df['ema_fast'] < df['ema_slow'], 'signal'] = -1 # Sell
# Chỉ lấy tín hiệu khi có thay đổi (mới phát sinh)
df['entry'] = df['signal'].diff().fillna(0)
return df
Rủi Ro Đặc Thù Cần Lưu Ý
- Thanh khoản thấp — Mid/small-cap khó mua bán số lượng lớn mà không làm dịch giá
- T+2.5 constraint — Không thể cắt lỗ ngay trong phiên nếu chưa có tiền về
- API rate limit — Cần giới hạn tốc độ gọi API để tránh bị block
- Halt lệnh — Sàn có thể tạm dừng giao dịch cổ phiếu bất kỳ lúc nào
Lộ Trình Học Đề Xuất
- Python cơ bản + pandas, numpy (2-4 tuần)
- Thu thập và phân tích dữ liệu chứng khoán (2 tuần)
- Backtest với
backtesting.pyhoặcvectorbt(2-4 tuần) - Paper trading — kết nối API giả lập (1 tháng)
- Live trading với số lượng nhỏ và theo dõi chặt
Muốn học bài bản từ đầu? Tham khảo chương trình đào tạo tại Hướng Nghiệp Dữ Liệu.