| Thực Hành Buổi 10: Backtest Đầy Đủ Chiến Lược MA

Được viết bởi Đặng Trí Thanh vào ngày 27/06/2026 lúc 20:30 | 21 lượt xem

Bài thực hành buổi 10 backtest đầy đủ chiến lược MA đã code ở buổi 5, với báo cáo chuẩn để so sánh khách quan. So sánh với chiến lược Buy & Hold loi_nhuan_ma = backtest_chien_luoc_ma(df) loi_nhuan_buy_hold = (df[‘close’].iloc[-1] / df[‘close’].iloc[0] – 1) * 100 print(f”MA Strategy: {loi_nhuan_ma:.1f}% | Buy & Hold: {loi_nhuan_buy_hold:.1f}%”) Một bài […]

| Đánh Giá Hiệu Suất Backtest: Sharpe Ratio, Drawdown, Win Rate

Được viết bởi Đặng Trí Thanh vào ngày 27/06/2026 lúc 20:30 | 33 lượt xem

Một backtest có lợi nhuận dương vẫn chưa đủ — buổi 10 dạy cách đánh giá đầy đủ qua nhiều chỉ số, không chỉ nhìn vào lợi nhuận tổng. Code tính các chỉ số đánh giá sharpe = loi_suat.mean() / loi_suat.std() * (252 ** 0.5) von_tich_luy = (1 + loi_suat).cumprod() drawdown = (von_tich_luy – von_tich_luy.cummax()) […]

| Sử Dụng Backtrader: Framework Backtest Chuyên Nghiệp

Được viết bởi Đặng Trí Thanh vào ngày 27/06/2026 lúc 20:30 | 37 lượt xem

Thay vì tự viết backtest từ đầu, buổi 10 giới thiệu backtrader — framework chuyên dụng giúp backtest chuẩn xác và nhanh hơn. Code backtest với backtrader import backtrader as bt class MAStrategy(bt.Strategy): def __init__(self): self.ma20 = bt.indicators.SMA(period=20) self.ma50 = bt.indicators.SMA(period=50) def next(self): if self.ma20 > self.ma50 and not self.position: self.buy() cerebro = bt.Cerebro() cerebro.addstrategy(MAStrategy) […]

| Lý Thuyết Backtesting: Vì Sao Không Thể Bỏ Qua Bước Này?

Được viết bởi Đặng Trí Thanh vào ngày 27/06/2026 lúc 20:30 | 23 lượt xem

Buổi 10 nhấn mạnh: backtesting không phải bước “nên làm”, mà là bước bắt buộc trước khi đưa bot ra chạy thật. Backtest đơn giản nhất bằng vòng lặp von = 100_000_000 for i in range(len(df)): if df[‘signal’].iloc[i] == 1: von = mo_lenh_mua(von, df[‘close’].iloc[i]) elif df[‘signal’].iloc[i] == -1: von = dong_lenh_ban(von, df[‘close’].iloc[i]) print(f”Vốn cuối: {von:,.0f}”) […]

| Thực Hành Buổi 9: Framework Bot Hoàn Chỉnh Đầu Tiên

Được viết bởi Đặng Trí Thanh vào ngày 27/06/2026 lúc 20:30 | 20 lượt xem

Bài thực hành buổi 9 ghép Kiến trúc Module + State Management + Error Handling thành Framework Bot đầu tiên của khóa Bot Auto Trading Python. Khung Framework tổng hợp class TradingBot: def __init__(self): self.state = TrangThaiBot.WAITING def run(self): while True: try: du_lieu = self.lay_du_lieu() self.xu_ly_tin_hieu(du_lieu) except Exception as e: self.logger.error(e) time.sleep(60) Framework này là […]

| Error Handling Cho Bot Trading: Không Để Bot Crash Giữa Đêm

Được viết bởi Đặng Trí Thanh vào ngày 27/06/2026 lúc 20:30 | 22 lượt xem

Bot chạy 24/7 chắc chắn sẽ gặp lỗi mạng, lỗi API tạm thời — buổi 9 dạy cách xử lý để bot không “chết” giữa đêm không ai biết. Code retry an toàn import time def goi_api_an_toan(ham, *args, max_retry=3): for lan in range(max_retry): try: return ham(*args) except Exception as e: print(f”Lỗi lần {lan+1}: {e}”) time.sleep(5) […]

| State Management Cho Bot: Quản Lý Trạng Thái Bằng Enum

Được viết bởi Đặng Trí Thanh vào ngày 27/06/2026 lúc 20:30 | 30 lượt xem

State Management là chủ đề quan trọng buổi 9 — bot cần biết chính xác mình đang ở trạng thái nào để tránh xung đột logic. Code quản lý trạng thái bằng Enum from enum import Enum class TrangThaiBot(Enum): WAITING = “waiting” TRADING = “trading” LOCKED = “locked” trang_thai_hien_tai = TrangThaiBot.WAITING if trang_thai_hien_tai == TrangThaiBot.WAITING […]

| Kiến Trúc Bot Trading: Tách Module Đúng Chuẩn Production

Được viết bởi Đặng Trí Thanh vào ngày 27/06/2026 lúc 20:30 | 26 lượt xem

Buổi 9 mở Phần 3 với chủ đề kiến trúc — cách tổ chức code bot thành các module rõ ràng, dễ bảo trì và mở rộng. 5 module cốt lõi của một bot chuyên nghiệp bot/ data_handler.py # Lấy và xử lý dữ liệu strategy.py # Logic chỉ báo, sinh tín hiệu risk_manager.py # […]

| Thực Hành Buổi 8: Module Quản Lý Vốn Hoàn Chỉnh Cho Bot

Được viết bởi Đặng Trí Thanh vào ngày 27/06/2026 lúc 20:30 | 18 lượt xem

Bài thực hành cuối Phần 2 ghép Position Sizing, SL/TP theo ATR, và Risk/Reward vào một module Risk Management dùng chung cho mọi chiến lược. Khung module Risk Management class RiskManager: def __init__(self, von, rui_ro_toi_da=0.01): self.von = von self.rui_ro_toi_da = rui_ro_toi_da def tinh_khoi_luong(self, gia_vao, gia_sl): return (self.von * self.rui_ro_toi_da) / abs(gia_vao – gia_sl) Đóng gói […]

| Risk/Reward Ratio: Vì Sao Tỷ Lệ Thắng Không Quan Trọng Nhất?

Được viết bởi Đặng Trí Thanh vào ngày 27/06/2026 lúc 20:30 | 19 lượt xem

Một insight quan trọng buổi 8 nhấn mạnh: chiến lược có tỷ lệ thắng (win rate) thấp vẫn có thể lời lớn nếu Risk/Reward Ratio đủ tốt. Công thức kỳ vọng (Expectancy) def tinh_expectancy(win_rate, avg_win, avg_loss): return (win_rate * avg_win) – ((1 – win_rate) * abs(avg_loss)) print(tinh_expectancy(0.4, 300, 100)) # Win rate 40% vẫn có […]