| Timeframe Alignment: Đồng Bộ Dữ Liệu Giữa Các Khung

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

Một lỗi kỹ thuật phổ biến khi làm đa khung thời gian là dữ liệu các khung không đồng bộ đúng mốc — buổi 13 dạy cách xử lý chuẩn. Resample dữ liệu bằng Pandas df_h1_to_h4 = df_h1.resample(‘4H’, on=’time’).agg({ ‘open’: ‘first’, ‘high’: ‘max’, ‘low’: ‘min’, ‘close’: ‘last’ }) Dùng resample() để tự tính khung lớn […]

| Multi-timeframe Analysis: Vì Sao 1 Khung Thời Gian Là Chưa Đủ?

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

Buổi 13 mở Phần 4 với kỹ thuật phân tích đa khung thời gian — xem nhiều khung (timeframe) cùng lúc để tránh tín hiệu nhiễu. Code lấy dữ liệu đa khung df_h4 = lay_du_lieu(symbol, “4h”, 200) df_h1 = lay_du_lieu(symbol, “1h”, 200) xu_huong_h4 = “TANG” if df_h4[‘close’].iloc[-1] > df_h4[‘MA50’].iloc[-1] else “GIAM” tin_hieu_h1 = kiem_tra_tin_hieu_rsi(df_h1) Nguyên […]

| Thực Hành Buổi 12: Tối Ưu Toàn Diện Bot Đã Xây Dựng

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

Bài thực hành cuối Phần 3 yêu cầu học viên tối ưu toàn diện bot đã xây dựng từ buổi 9 — khép lại giai đoạn “Xây dựng Bot hoàn chỉnh”. Checklist tối ưu cuối Phần 3 Code đã tách module rõ ràng (Data/Strategy/Risk/Execution)? Đã giới hạn kích thước dữ liệu lưu trữ trong RAM? […]

| Code Refactoring: Dọn Dẹp Bot Sau Khi Đã Chạy Được

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

Buổi 12 nhấn mạnh: code “chạy được” và code “tốt” là hai chuyện khác nhau — refactoring giúp bot dễ bảo trì lâu dài. Ví dụ refactor code lặp lại # Trước refactor – lặp lại logic tính MA nhiều nơi # Sau refactor: def tinh_chi_bao_chuan(df, loai, period): if loai == “MA”: return df[‘close’].rolling(period).mean() elif […]

| Memory Management Cho Bot Chạy Dài Hạn 24/7

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

Một bot chạy 24/7 trong nhiều tháng có thể bị “phình” bộ nhớ dần nếu không quản lý đúng — chủ đề quan trọng của buổi 12. Giới hạn kích thước dữ liệu lưu trữ MAX_ROWS = 1000 if len(df) > MAX_ROWS: df = df.iloc[-MAX_ROWS:].reset_index(drop=True) Nếu bot liên tục append dữ liệu mới vào DataFrame […]

| Performance Optimization: Bot Chạy Chậm Vì Đâu?

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

Buổi 12 giải quyết vấn đề thực tế: bot chạy ổn nhưng ngày càng chậm khi mở rộng theo dõi nhiều tài sản hơn. Profile code để tìm điểm nghẽn import cProfile cProfile.run(‘chay_bot_mot_vong()’) cProfile cho biết chính xác hàm nào tốn nhiều thời gian nhất — thường là việc tính lại toàn bộ chỉ báo […]

| Thực Hành Buổi 11: Chạy Paper Trading 1 Tuần Liên Tục

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

Bài thực hành buổi 11 yêu cầu học viên thực sự chạy bot Paper Trading liên tục 1 tuần — không chỉ code mà còn vận hành thực tế. Báo cáo so sánh sau 1 tuần print(f”Backtest dự kiến: {loi_nhuan_backtest:.1f}%”) print(f”Paper Trading thực tế: {loi_nhuan_paper:.1f}%”) print(f”Chênh lệch: {abs(loi_nhuan_backtest – loi_nhuan_paper):.1f}%”) Nếu chênh lệch giữa backtest […]

| Monitoring Và Logging Cho Bot Đang Chạy Paper Trading

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

Giám sát chặt trong giai đoạn Paper Trading là chủ đề buổi 11 — đây là lúc phát hiện lỗi logic trước khi ảnh hưởng tiền thật. Code logging chuẩn với module logging import logging logging.basicConfig(filename=”bot.log”, level=logging.INFO, format=”%(asctime)s – %(levelname)s – %(message)s”) logging.info(f”Tín hiệu MUA tại giá {gia}, khối lượng {khoi_luong}”) Khác với print() đơn […]

| Paper Trading Setup: Code Mô Phỏng Lệnh Không Mất Tiền

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

Buổi 11 hướng dẫn code một lớp Paper Trading đơn giản — giả lập toàn bộ hành vi bot nhưng không gửi lệnh thật ra sàn. Code Paper Trading cơ bản class PaperBroker: def __init__(self, von_ban_dau): self.von = von_ban_dau self.lenh_dang_mo = [] def dat_lenh(self, loai, gia, khoi_luong): self.lenh_dang_mo.append({“loai”: loai, “gia”: gia, “khoi_luong”: khoi_luong}) print(f”[PAPER] {loai} […]

| Chuyển Từ Backtest Sang Live: Những Khác Biệt Cần Lưu Ý

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

Buổi 11 cảnh báo một sai lầm chết người: kết quả backtest tốt không đảm bảo bot sẽ lời khi chạy live — cần bước đệm Paper Trading. Những khác biệt chính Slippage: giá khớp thực tế lệch so với giá tín hiệu, đặc biệt với lệnh lớn hoặc thị trường biến động Độ trễ […]