Giao diện
Ngôn ngữ
backtestcrypto backtestbacktest trading strategyno codingfree backtestbacktesting toolwin rateprofit factorsandboxfomoed

Backtest Bất Kỳ Chiến Lược Giao Dịch Nào Trong 60 Giây (Không Cần Code, 2026)

Backtest Bất Kỳ Chiến Lược Giao Dịch Nào Trong 60 Giây (Không Cần Code, 2026)
Tác giả fomoed17 tháng 5, 202614 phút đọc

Cập nhật lần cuối: Tháng 5/2026. Mọi chỉ số được mô tả ở đây đều là các trường thực tế trong engine sandbox của fomoed. Kết quả backtest mang tính giáo dục — hiệu suất quá khứ không dự báo được lợi nhuận tương lai.

Khác biệt giữa cảm giác chiến lược của bạn hoạt động và biết chắc nó hoạt động chỉ nằm ở một con số: nó sẽ vận hành ra sao xuyên suốt vài năm nến thật vừa qua, bao gồm cả những giai đoạn thị trường mà bạn không hề giao dịch trong đó. Đó là backtest. Làm trung thực, đây là bài tập hữu ích nhất một trader discretionary có thể chạy trước khi tự động hóa. Làm cẩu thả, nó chỉ là một bản chào hàng bạn tự viết cho chính mình — mọi tham số được tinh chỉnh đến khi đường cong đẹp như mơ, rồi tiền thật mới phát hiện ra những thứ bạn quên mô hình hóa.

Con đường truyền thống để backtest từng trông thế này: viết Python, kéo OHLCV lịch sử từ API sàn, tự tính indicator, mô phỏng slippage, tính phí, xử lý partial fill, viết phần phân tích, vẽ đường cong vốn. Đa số trader bỏ cuộc ngay ở bước một. Số ít đến được bước bảy thì lại có một engine backtest hơi khác so với nền tảng giao dịch thật mà họ sẽ deploy lên — và khoảng cách đó ăn mòn họ khi vào production.

Sandbox của fomoed bỏ luôn cả ngăn xếp đó. Chọn cặp, chọn template chiến lược, chọn khoảng thời gian, nhấn Run. Ba năm nến lịch sử trên mọi cặp được hỗ trợ, giả định phí thật theo từng sàn, cùng đường code engine chạy bot live, kết quả trong chưa đến một phút. Không Python, không API key, không Jupyter, không bảng tính. Bài viết này đi qua workflow từ đầu đến cuối và — quan trọng hơn — phân tích năm cạm bẫy biến một backtest đẹp đẽ thành khoản lỗ tiền thật.

60s
Kết Quả Đầu Tiên
6
Khung Thời Gian
3y
Lịch Sử
$0
Chi Phí

Bỏ qua phần giải thích — chạy backtest ngay

Tài khoản miễn phí, không thẻ, không Python. Chọn cặp, chọn chiến lược, nhấn Run. Kết quả đầu tiên trong khoảng một phút.

Mở Sandbox →

Bạn có thể backtest những gì trong sandbox

Engine sandbox hiện hỗ trợ bốn nhóm chiến lược, mỗi nhóm có không gian cấu hình riêng:

Chiến lược tùy biến dựa trên indicator

RSI mean-reversion, EMA crossover, MACD confluence, Bollinger Band squeeze, VWAP fade, các setup đa indicator. Mười hai indicator được mở (RSI, EMA, SMA, MACD, ATR, ROC, Bollinger, VWAP, Williams %R, Stochastic, OBV, ADX) và bất kỳ kết hợp nào cũng có thể đóng vai trò trigger vào lệnh hoặc bộ lọc. Engine xử lý các tham số động — so sánh độ rộng band, cửa sổ lookback, điều kiện "cross từ trên/dưới" — nên bạn không phải tự viết phần toán.

Bot DCA & grid

Dollar-cost averaging với tùy chọn thang safety-order, take-profit trên tổng vị thế, và điều kiện trigger có thể tùy biến. Bot grid xếp lệnh mua/bán dọc theo một khoảng giá xác định với TP từng ô. Cả hai chạy trong cùng engine với phiên bản live — sandbox không phải đường code khác, nó là cùng vòng lặp trader.execute() được nạp nến lịch sử thay vì feed live.

Smart Money Concepts (SMC)

CHoCH (change of character), BoS (break of structure), order block, fair value gap, Fibonacci retracement (gồm cả vùng OTE 0.618–0.79), và liquidity sweep. Bảy primitive, đều được phát hiện bằng thuật toán — sandbox cho bạn thấy chính xác những pivot mà engine live đã đánh dấu trong thời gian thực. Xem hướng dẫn pillar về SMC để biết phần toán.

Chiến lược AI Trading Agent

Nếu bạn có thể mô tả chiến lược trong hai đến bốn câu tiếng Anh đơn giản, AI trading agent của fomoed sẽ sinh ra một script Python chạy bên trong chính sandbox. Script có thể kết hợp các primitive indicator và SMC nhưng không tự bịa ra cái mới. Hữu ích cho kiểu "mua khi RSI<30 VÀ price>200EMA, thoát ở +3% hoặc RSI>70" — gõ một lần, AI lo phần đấu dây. Xem bài pillar về AI Trading Agent để biết kiến trúc.

Cách chạy một backtest trong 60 giây

Luồng đầu-cuối có sáu cú click, trong đó hai cú là tùy chọn. Con số trong ngoặc là thời gian thực tế của người dùng lần đầu.

  1. Mở sandbox (5s). Đăng ký miễn phí nếu chưa có — email hoặc ví, không KYC, không thẻ. Click Sandbox ở sidebar dashboard.
  2. Chọn thị trường (10s). Sàn (Hyperliquid / Binance / Bybit / OKX / Decibel / AsterDex / GRVT / Extended / StandX), symbol (ví dụ BTC/USDC:USDC), timeframe (1m / 5m / 15m / 30m / 1h / 4h).
  3. Chọn khoảng thời gian (5s). Mặc định là 30 ngày gần nhất. Click vào ô chọn ngày để mở rộng; sandbox hỗ trợ đến ba năm lịch sử cho mỗi cặp.
  4. Cấu hình chiến lược (20s). Chọn preset (RSI / Custom / DCA / Grid / SMC / AI Trading Agent) hoặc đặt tham số indicator thủ công. Giao diện sandbox phản chiếu wizard bot live y hệt — nếu bạn cấu hình được bot live, bạn cấu hình được backtest.
  5. Click Run (15–90s). Hầu hết backtest hoàn thành trong 10–30 giây; các lần chạy dài 5 phút có thể mất tới 90s lần đầu (được cache cho các lần sau).
  6. Đọc kết quả (10 phút tiếp theo — xem bên dưới).

Cách đọc kết quả một cách trung thực

Sáu chỉ số quan trọng. Ba cái đầu là phù phiếm; ba cái sau là thực tế. Hãy xem cả sáu — đừng bao giờ quyết định chỉ dựa trên một con số.

Win rate

Là gì
Phần trăm các lệnh đã đóng có lãi (sau phí).
Tốt khi
Ổn định ở mức 50%+ qua nhiều giai đoạn — đó là sàn nơi kỳ vọng dương xuất hiện nếu tỷ lệ risk-to-reward của bạn ổn.
Cẩn thận
Win rate cao (70%+) gần như luôn đồng nghĩa với take-profit bé tí và stop khổng lồ — lệnh thắng trung bình thì nhỏ, lệnh thua trung bình lại thảm họa. Hãy ghép cặp với profit factor bên dưới.

Profit factor

Là gì
Tổng lãi ÷ tổng lỗ. Cho biết bạn kiếm được bao nhiêu đô cho mỗi đô bị mất.
Tốt khi
Trên 1.3 — thấp hơn nữa thì chiến lược thực chất chỉ hòa vốn khi tính cả slippage và phí trong giao dịch thật.
Cẩn thận
Profit factor > 3 trong giai đoạn ngắn gần như luôn là dấu hiệu của curve-fitting. Test trên nhiều khoảng không chồng lấn; nếu rơi mạnh, bạn đã over-fit.

Max drawdown

Là gì
Mức giảm peak-to-trough lớn nhất trên đường cong vốn, tính theo phần trăm. Độ sâu cú sụt mà bạn phải chịu trước khi hồi phục.
Tốt khi
Dưới ngưỡng chịu đau cá nhân của bạn — thường 15–25% với trader cá nhân, thấp hơn nhiều với nhà phân bổ vốn.
Cẩn thận
Một backtest với max drawdown 8% trong 6 tháng gần như chắc chắn che giấu một giai đoạn mà drawdown lên tới 40%+. Luôn nhìn đáy sâu nhất trên đồ thị đường cong vốn, chứ đừng chỉ nhìn con số.

Sharpe ratio

Là gì
Lợi nhuận đã điều chỉnh theo rủi ro — bao nhiêu excess return trên mỗi đơn vị biến động. Cao hơn là tốt hơn.
Tốt khi
Trên 1.0 là ổn; trên 2.0 là xuất sắc; trên 3.0 là đáng nghi (hoặc khung thời gian quá ngắn).
Cẩn thận
Sharpe không phạt riêng biến động phía giảm — một chiến lược thắng nhỏ liên tục và thua lớn hiếm khi vẫn có thể cho Sharpe > 1.5 cho đến đúng khoảnh khắc nó nổ tài khoản.

Đường cong vốn (equity curve)

Là gì
Biểu đồ đường số dư tài khoản xuyên suốt backtest. Hình ảnh trực quan giàu thông tin nhất trong bất kỳ kết quả backtest nào.
Tốt khi
Tương đối mượt, nhìn chung hướng lên và sang phải, có drawdown nhưng có thể hồi phục. Điểm cộng nếu vẫn dương xuyên qua các giai đoạn bear market đã biết trong khoảng thời gian đó.
Cẩn thận
Một đường bậc thang chỉ có một cú nhảy lớn rồi nằm bẹp đồng nghĩa chiến lược chỉ hoạt động một lần trên một giai đoạn và không bao giờ nữa. Vứt đi.

Trade log

Là gì
Mọi lệnh đơn lẻ kèm timestamp vào/ra, P&L, và lý do thoát (TP / SL / trailing / time / tín hiệu ngược).
Tốt khi
Tần suất giao dịch phù hợp với mức chịu đựng của bạn — chiến lược bắn 8 lệnh một ngày đòi hỏi chú ý hoặc tự động hóa toàn phần; cái bắn hai lần một tuần thuộc dạng set-and-forget.
Cẩn thận
Nếu 80% lợi nhuận đến từ 5% lệnh lớn nhất, bạn đang dựa vào may mắn bắt được các nhịp di chuyển cụ thể. Hãy nhìn median của các lệnh, đừng nhìn trung bình.

5 cạm bẫy backtest (và cách sandbox xử lý chúng)

1. Overfit vào một giai đoạn duy nhất

Bạn tinh chỉnh cận dưới RSI từ 35 xuống 32 xuống 28 cho đến khi đường cong vốn trông tuyệt đẹp. Chúc mừng — bạn vừa tìm ra giá trị tham số phù hợp với đúng đoạn lịch sử giá đó. Chạy lại trên khoảng khác, lợi nhuận biến mất. Cách tránh: luôn test cùng bộ tham số trên ít nhất hai khoảng không chồng lấn (ví dụ 2023–2024 VÀ 2024–2025). Sandbox khiến việc này trở nên dễ dàng — nhân bản config, đổi khoảng ngày, so sánh kết quả. Nếu chỉ số rớt đài, bạn đã over-fit.

2. Giả vờ phí không tồn tại

Một chiến lược scalping bắn 30 lệnh/ngày với 0.1% mỗi fill đốt 6%/ngày chỉ riêng tiền phí. Sandbox áp đúng taker rate của từng sàn (Hyperliquid 0.045%, Binance 0.05%, Bybit 0.055%, v.v.) trên mỗi fill. Nếu bạn đang test một chiến lược tần suất cao mà kết quả không tính phí, con số bạn đang nhìn là hư cấu. Profit factor và PnL ròng của sandbox đều là sau phí. Kiểm tra: check trade log; phí trên mỗi lệnh nên xuất hiện như một khoản giảm nhỏ ở mỗi lần vào/ra.

3. Cho rằng fill tức thì

Trong giao dịch thật, lệnh của bạn không fill đúng giá bạn muốn — có slippage, đặc biệt với size lớn hoặc cặp thanh khoản mỏng. Một backtest ngây thơ fill ở open của bar kế tiếp, điều này quá lạc quan. Sandbox dùng mô hình fill thận trọng: lệnh market fill ở giá open của bar cộng với dung sai slippage có thể tùy chỉnh (mặc định 0.05%); take-profit fill khi high của bar chạm mức TP (hoặc tại close, tùy theo toggle "touch vs close"); stop loss fill ở giá SL khi bị trigger trong nến. Kiểm tra: siết dung sai slippage và chạy lại; nếu kết quả sụp đổ, chiến lược của bạn đang phụ thuộc vào fill hoàn hảo.

4. Look-ahead bias

Cái này lén lút. Nếu chiến lược dùng giá close của cây nến hiện tại để quyết định vào lệnh ngay trong cây đó, bạn đang gian lận — trong thời gian thực, nến chưa đóng tại thời điểm ra quyết định. Sandbox cưỡng chế tính nhân quả: tại bar N engine chỉ thấy OHLCV từ bar 0 đến N-1. Giá trị indicator dùng tại open của bar N được tính từ N-1 bar trước. Nếu bạn mô tả một chiến lược muốn đọc "close của nến hiện tại", sandbox dùng close của bar trước làm thay thế. Kiểm tra: một chiến lược kiểu "giá đoạt lại EMA tại bar này" nên được viết lại thành "bar trước đoạt lại EMA."

5. Mù trước thay đổi regime

Xu hướng crypto trông rất khác nhau ở từng regime — accumulation, markup, distribution, markdown. Một chiến lược in tiền trong pha markup thường chảy máu nặng trong distribution. Cửa sổ 3 năm mặc định của sandbox bao trùm ít nhất một chu kỳ đầy đủ kể cả một đợt drawdown đáng kể, nhưng bạn nên cắt khoảng thời gian thành các đoạn và kiểm tra từng giai đoạn con. Kiểm tra: chạy cùng config ba lần — 2023, 2024, 2025 — và xem chỉ số của từng năm độc lập. Nếu 2024 cõng cả kết quả, bạn đang đặt cược vào kịch bản 2024 lặp lại.

Sandbox của fomoed giữ tính trung thực thế nào

Engine sandbox chạy chính đoạn code Python như bot live — không phải một bản triển khai song song. Toán indicator, đánh giá tín hiệu, sizing vị thế, trừ phí, quy tắc fill TP/SL, theo dõi trailing stop: tất cả đều một-nguồn-sự-thật. Khi bạn chuyển một chiến lược đã backtest sang bot live, thứ duy nhất thay đổi là engine đọc luồng nến nào — parquet lịch sử hay WS sàn live — mọi byte logic khác đều y hệt.

Điều này quan trọng vì hầu hết công cụ backtest có sẵn lại là một đường code khác hẳn với nền tảng thực thi live mà cuối cùng bạn deploy. Chúng mô phỏng logic "đủ gần" với những giả định khác nhẹ — và khoảng cách đó âm thầm ăn mòn lợi thế của bạn khi fill thật vào cuộc. Sandbox loại bỏ khoảng cách đó bằng kiến trúc.

Engine cũng công bố schema kết quả công khai: các chỉ số (win rate, profit factor, max drawdown, Sharpe, gross/net PnL, avg win/loss, thời gian giữ lệnh trung bình), toàn bộ trade log kèm lý do, và đường cong vốn dưới dạng chuỗi thời gian. Không có trường "score" ẩn nào gộp mọi thứ thành một con số được tối ưu để trông đẹp — mỗi chỉ số đều có thể kiểm chứng độc lập từ trade log.

Câu hỏi thường gặp

Một backtest mất bao lâu?

Hầu hết backtest hoàn thành trong 10–30 giây với các khoảng dưới một năm. Backtest 5 phút dài qua nhiều năm có thể mất tới 90 giây ở lần đầu — sau đó, cache OHLCV được hit và các lần chạy lại nhanh hơn 5–10×.

Tôi có bao nhiêu dữ liệu lịch sử?

Ba năm OHLCV cho mỗi cặp được hỗ trợ trên sáu khung thời gian (1m, 5m, 15m, 30m, 1h, 4h). Cache được làm mới hàng đêm qua cron; nếu bạn backtest cặp mới list hay có lịch sử thưa, engine sẽ lấp khoảng từ CCXT live trong lần chạy đầu rồi cache cho các lần sau.

Kết quả có deterministic không?

Có — cùng config + cùng khoảng ngày = cùng kết quả. Engine không có yếu tố ngẫu nhiên ẩn; ngay cả slippage cũng được áp một cách xác định dựa trên open/high/low/close của nến. Điều này nghĩa là bạn có thể so sánh hai config một-một bằng cách chạy cả hai trên cùng khoảng thời gian.

Tôi có thể xuất trade log không?

Có — mỗi kết quả backtest đều kèm một file CSV tải về được với mọi lệnh đơn lẻ (timestamp và giá vào/ra, size vị thế, phí, P&L, lý do thoát). Hữu ích nếu bạn muốn tự phân tích trong bảng tính hoặc notebook pandas.

Backtest có mô hình funding rate không?

Với hợp đồng perpetual, có — engine áp funding rate 8 giờ thực tế tại mỗi cửa sổ funding trong khi đang giữ vị thế. Funding rate được lấy từ dữ liệu lịch sử của sàn khi có sẵn; cho những trường hợp hiếm không có, engine dùng giả định funding bằng không một cách thận trọng.

Khác biệt giữa "touch" và "close" cho take-profit là gì?

Touch nghĩa là TP fill ngay khoảnh khắc high của bar chạm giá TP trong nến. Close nghĩa là chỉ fill nếu bar đóng tại hoặc trên mức TP. Touch lạc quan hơn (khớp với hành vi lệnh market trong cú di chuyển nhanh); close thận trọng hơn (khớp với hành vi lệnh limit hoặc khi thanh khoản trong nến mỏng). Sandbox cho bạn chọn theo từng TP.

Có nên tin một backtest với win rate 90%?

Không. Win rate đơn thuần gần như không bao giờ là chỉ số cần tối đa hóa — hãy ghép cặp với profit factor, max drawdown, và đường cong vốn. Win rate 90% với profit factor 0.7 nghĩa là bạn thắng nhỏ và thua lớn; bạn sẽ phá sản từ từ. Win rate 45% với profit factor 2.5 nghĩa là bạn thắng to hơn lỗ; thường đây mới là chiến lược tốt hơn.

Đừng đoán mò nữa — hãy backtest ý tưởng của bạn

Bạn đọc đến đây vì một lý do. Sandbox miễn phí, không cần Python, ba năm dữ liệu lịch sử trên mọi cặp được hỗ trợ.

Bắt Đầu Miễn Phí →

Tài nguyên liên quan