Mục lục
Trả lời ngắn: Backtest bằng TradingView trong bài này là dùng Bar Replay để phát từng bar lịch sử, còn rule và bản ghi vẫn lấy từ Packet đã khóa. Trước mỗi bước Forward, người làm phải kiểm chart identity, replay status, interval, phần tương lai và external log để tránh trộn dữ liệu realtime.
Đọc xong, bạn sẽ hiểu:
- Cách chuẩn bị chart và Bar Replay mà không thay đổi protocol của setup.
- Cách dùng Forward để replay C02 từng completed M15 bar.
- Khi nào phải dừng vì chart nhảy live, sai interval hoặc không còn dữ liệu lịch sử.
Lưu ý giáo dục: Header, timestamp và giá trong demo đều hư cấu. Workflow không dùng Replay Trading, Paper Trading, broker, lệnh hoặc tiền thật.
1. TradingView là máy phát bar, không phải protocol
Hãy hình dung một máy chiếu phát lại trận đấu. Máy chiếu cho ta từng khung hình, nhưng luật chấm điểm nằm trên tờ rubric bên ngoài. Bấm Play nhanh hơn không làm luật tốt hơn; đổi đoạn phim sau khi biết tỷ số cũng không còn là phép kiểm ban đầu.
Bar Replay là chế độ phát lại bar lịch sử. TradingView cho phép chọn điểm bắt đầu, chạy tự động hoặc tiến thủ công bằng nút Forward. TradingView — How do I turn Bar Replay on?
Trong workflow này:
- TradingView cung cấp bar được reveal;
- Protocol Card quyết định cách đánh giá;
- Sample Index quyết định mẫu nào phải chạy;
- External State Log giữ bản ghi canonical.
Nút Replay không tự ngăn look-ahead. Nếu người làm đã nhìn phần tương lai, giữ drawing từ lần xem trước hoặc đổi start point theo outcome, sample vẫn bị nhiễm.
Bar Replay cũng khác forward test. Replay dùng dữ liệu đã xảy ra; forward test quan sát dữ liệu mới hình thành sau khi rule được khóa. Nó còn khác Strategy Tester hoặc Replay Trading vì bài này không chạy script, không mô phỏng giao dịch và không sử dụng report tài chính.
Câu chắc chắn sai là: “TradingView Replay cho kết quả giống hệt live.” Câu có điều kiện đúng hơn: “Với header, interval và trạng thái replay đã khóa, chart đang reveal historical bars phù hợp cho phép phân loại setup-state này.” Suy luận sai nếu một phần UI realtime được dùng làm evidence lịch sử.
2. Replay Control Card năm đèn
Hình 1 — Năm đèn phải xanh trước mỗi lần Forward; historical chart không đồng nghĩa toàn UI đang phát lại.
Replay Control Card có năm ô kiểm.
a. Chart ID
Ghi đúng provider:symbol, chart type, interval và timezone. Demo dùng DEMO:INV, standard time-based candles, M15 và UTC. Standard time-based chart tạo bar theo khoảng thời gian; nó khác Renko, Kagi hoặc spread chart có quy tắc xây dựng riêng.
Không nhìn mỗi tên ngắn của symbol. Cùng tên nhưng khác provider có thể mang lịch sử khác. Không đổi M15 sang H1 chỉ vì H1 có nhiều dữ liệu hơn, vì owner bar của setup sẽ thay đổi.
b. Replay active
Replay status là dấu hiệu chart đang ở chế độ phát lại. TradingView hiển thị trạng thái này khi Bar Replay hoạt động. Nếu badge biến mất hoặc người dùng bấm Jump to real-time chart, phải dừng; đừng tiếp tục ghi như thể vẫn ở lịch sử.
c. Interval locked
Replay interval là lượng thời gian được thêm vào mỗi update. Nó không nhất thiết là chart interval nếu setting bị đổi. TradingView cho biết Auto select có thể lấy current chart interval ở single-chart layout; vẫn phải đọc lại giá trị hiển thị. TradingView — How to select replay interval
Demo khóa chart M15 và replay M15, hoặc option Same as chart tương đương.
d. Future hidden
Chọn starting point, tức mốc trước bar đầu cần quan sát. Xóa drawing/annotation cũ có thể lộ vùng giá về sau. Không scroll sang phải để “kiểm xem dữ liệu có đủ không” sau khi bắt đầu.
e. External log ready
External State Log là bảng bên ngoài platform gồm timestamp, close, state và reason. Hãy mở giấy, Google Sheets hoặc LibreOffice Calc trước lần Forward đầu. Screenshot chỉ hỗ trợ; log này mới là record dùng để audit.
Điểm dễ nhầm nhất là live-data boundary. TradingView lưu ý server-side alerts vẫn chạy theo realtime; quote trên trading panel/watchlist cũng là realtime, và Paper Trading hoặc broker orders dựa trên realtime khi chart ở Replay. Vì vậy, workflow này không dùng những surface đó làm evidence hay tương tác. TradingView — How do I turn Bar Replay on?
3. Demo TV-REPLAY-C02-v1
Demo dùng single-chart mode và Packet INV-DEMO-M15-v1:
- header
DEMO:INV; - chart/replay interval
M15 / M15; - timezone
UTC; - start
2026-01-05 09:15 UTC; - manual Forward, không autoplay;
- invalid khi completed M15 close
<100; - valid khi close
>102; - expiry bar 4;
- event order data → invalid → valid → expiry.
a. Forward 1
Chart reveal completed bar 2026-01-05 09:30 UTC, close 101,4.
Data đủ, không <100, không >102, chưa expiry. Log:
C02 | bar 1 | 09:30 | 101,4 | WAITING
Trước khi Forward tiếp, kiểm lại năm ô. Việc lặp preflight ngắn này giúp phát hiện chart vô tình trở về live hoặc interval bị đổi.
b. Forward 2
Bar 09:45, close 100,8. Output vẫn WAITING.
C02 | bar 2 | 09:45 | 100,8 | WAITING
Không thêm nhận xét kiểu “trông yếu”. State chỉ theo rule đã viết.
c. Forward 3
Bar 10:00, close 99,7. Điều kiện 99,7 <100 đúng, nên INVALID; đây là terminal event đầu tiên.
Hình 2 — Replay dừng ở bar 3; không cần phát bar 4 để sửa terminal state.
Evidence record:
| Field | Value |
|---|---|
| Demo / setup | TV-REPLAY-C02-v1 / INV-DEMO-M15-v1 |
| Header | DEMO:INV / M15 / UTC |
| Replay | active / M15 / manual Forward |
| Start | 2026-01-05 09:15 UTC |
| Terminal | bar 3 / 10:00 / 99,7 / INVALID |
| Reason | completed M15 close <100 |
Sau bar 3, dừng sample. Screenshot có thể chứng minh header/replay status tại thời điểm đó nhưng không thay raw log. Không dùng quote trên watchlist để “xác nhận” close vì nó có thể là realtime.
4. Sai lầm, giới hạn và rủi ro
a. Nhầm chart interval với replay interval
Chart ghi M15 nhưng Replay update theo 1 phút sẽ lộ nhiều trạng thái intrabar hơn contract. Ngược lại, update lớn hơn có thể bỏ qua observation point. Hai field phải khớp protocol.
b. Dùng autoplay và bỏ lỡ điểm ghi
Autoplay không sai về bản chất, nhưng dễ phát qua terminal event trước khi log. Với bài tập beginner, manual Forward làm boundary rõ hơn.
c. Đổi start point sau khi thấy outcome
Chọn lại starting point hoặc random bar sau khi C02 invalid làm Sample Index thay đổi theo kết quả. Đó là selection bias, không phải sửa UI.
d. Để drawing lộ tương lai
Đường ngang, label hoặc rectangle từ lần xem full chart có thể báo trước outcome. Sample đã thấy tương lai là contaminated sample. Ghi FUTURE_EXPOSED, loại với reason và chỉ chuyển sang một sample unseen đã predeclare.
e. Trộn historical chart với live surfaces
Hình 3 — Chỉ bar trong Replay đi vào State Log; live panels nằm ngoài đường evidence.
Không dùng alert vừa bắn, quote list hoặc trading panel để quyết định state. Hai “đồng hồ” này đang chạy ở hai thời điểm khác nhau.
f. Đổi timeframe khi thiếu history
Depth dữ liệu Replay thay đổi theo symbol, interval và plan. TradingView có thể báo Data point unavailable khi requested lower-interval history không có. TradingView — How much data is available
Output đúng là DATA_UNAVAILABLE; giữ sample và reason. Không chuyển sang D1 để cứu một setup M15.
g. Dùng chart không hỗ trợ
TradingView hiện liệt kê spread formulas, non-traditional charts và converted non-default-currency charts trong nhóm có thể làm Replay toolbar không xuất hiện. TradingView — Bar Replay toolbar unavailable
Nếu protocol cho phép standard candle, sửa môi trường trước khi reveal. Nếu không, ghi UNSUPPORTED và dừng.
h. Nghĩ platform lưu thay cho audit
UI, session behavior và entitlement có thể đổi. External log, rule version và Sample Index vẫn phải nằm ngoài platform. Bar Replay cũng không mô hình đầy đủ data quality, execution, phí, slippage hoặc tương lai.
5. Checklist trước, trong và sau Replay
Preflight
- Protocol Card và Sample Index đã khóa?
- Provider:symbol, chart type, M15 và UTC đúng?
- Replay status đang active?
- Replay interval là M15/Same as chart?
- Starting point nằm trước bar đầu?
- Drawing cũ đã xóa và future còn hidden?
- External State Log đã mở?
- Live quote/alert/trading panels đã được bỏ qua?
Mỗi lần Forward
- Replay status và header còn đúng?
- Chỉ một completed update mới xuất hiện?
- Timestamp/close đã ghi trước khi phân loại?
- Event order đã áp đúng?
- Nếu terminal, đã stop ngay?
Fail-closed
REPLAY_OFF: badge mất hoặc chart về live;HEADER_MISMATCH: provider:symbol/timezone sai;INTERVAL_MISMATCH: chart/replay interval sai;DATA_UNAVAILABLE: historical bar không có;FUTURE_EXPOSED: tương lai đã lộ;UNSUPPORTED: chart/symbol environment không hỗ trợ.
Gặp code nào cũng dừng sample và ghi reason. Không đổi setting theo outcome rồi tiếp tục cùng record.
Kết thúc
Đối chiếu số Forward với số row, terminal reason với rule và screenshot với header. Lưu log ngoài platform. Screenshot không có raw timestamps hoặc thiếu replay badge thì không đủ thay thế record.
6. Bài tập 15 phút
Dùng TradingView Bar Replay nếu symbol/interval của bạn có sẵn dữ liệu, cùng giấy, Google Sheets hoặc LibreOffice Calc. Không mở broker và không gửi lệnh.
- Tạo một sheet có năm ô Replay Control Card.
- Chọn standard time-based chart và một vùng lịch sử dùng cho thực hành.
- Ghi header, timezone, chart/replay interval và start point.
- Dùng manual Forward ba lần.
- Với demo, nhập đúng C02; với chart riêng, chỉ luyện cách ghi, không so kết quả với demo.
- Dừng tại terminal hoặc fail code đầu tiên.
Mẫu đối chiếu đã điền
| Field | Expected |
|---|---|
| Demo | TV-REPLAY-C02-v1 |
| Header / intervals | DEMO:INV / M15 / M15 |
| Start | 2026-01-05 09:15 UTC |
| Forward 1 / 2 / 3 | 101,4 WAITING / 100,8 WAITING / 99,7 INVALID |
| Terminal | bar 3 / INVALID / close <100 |
| Live panels used | No |
Kết quả đạt là log tái lập được ba bước và dừng đúng bar 3. Không cần tài khoản trả phí nếu bạn chỉ luyện protocol trên dữ liệu Replay đang khả dụng; đừng suy rộng availability sang mọi symbol hoặc plan.
7. Tổng kết: Replay chart không phải toàn bộ UI
a. Năm ý chính
- Bar Replay phát historical bars; Packet bên ngoài mới sở hữu rule.
- Replay Control Card kiểm chart ID, status, interval, future và log.
- Manual Forward giúp ghi từng completed bar trước khi thấy bar kế.
- Quote, alerts và trading surfaces có thể nằm bên realtime, không phải replay evidence.
- Data thiếu, future lộ hoặc environment sai phải fail closed.
b. Câu hỏi tự kiểm tra
- Vì sao bật Bar Replay chưa đủ gọi là backtest đúng?
- C02 dừng ở Forward nào?
- Watchlist realtime có được dùng xác nhận close lịch sử không?
- M15 history unavailable thì nên làm gì?
c. Gợi ý đáp án
Xem gợi ý câu 1
Replay chỉ phát bar; vẫn cần frozen rule, Sample Index, future hidden và external log. → Xem mục 1–2.
Xem gợi ý câu 2
Forward 3, khi completed M15 close `99,7 <100` tạo `INVALID`. → Xem mục 3.
Xem gợi ý câu 3
Không. TradingView nêu quote list/trading panel có thể theo realtime khi chart Replay. → Xem mục 2 và 4.
Xem gợi ý câu 4
Ghi `DATA_UNAVAILABLE` và dừng; không đổi owner timeframe để cứu sample. → Xem mục 4–5.
d. Thuật ngữ cần nhớ
| Thuật ngữ | Giải thích ngắn |
|---|---|
| Bar Replay | Chế độ phát lại historical bars. |
| Replay status | Dấu hiệu chart đang replay, không phải live. |
| Starting point | Mốc trước bar đầu cần reveal. |
| Replay interval | Lượng thời gian thêm vào mỗi update. |
| Forward | Nút mở update kế tiếp thủ công. |
| Live-data boundary | Ranh giới giữa chart lịch sử và UI realtime. |
| External State Log | Bản ghi canonical nằm ngoài platform. |
| Data point unavailable | Requested historical data không có. |
| Contaminated sample | Sample đã lộ thông tin tương lai. |
| Fail-closed | Dừng khi bằng chứng hoặc environment không hợp lệ. |
e. Nguồn tham khảo
- TradingView — How do I turn Bar Replay on?
- TradingView — How to select replay interval
- TradingView — How much data is available
- TradingView — Bar Replay toolbar unavailable
f. Bài trước và bài tiếp theo
Quay lại Backtest thủ công một Setup #11 để ôn Packet và reconciliation. Tiếp tục với Forward Test một Setup #13 để chuyển rule đã khóa sang dữ liệu mới chưa xảy ra.
Nhắc lại: Nội dung chỉ phục vụ giáo dục. Historical replay không bảo đảm tương lai và không thay thế hiểu dữ liệu, sản phẩm hoặc rủi ro vốn.
Bài tiếp theo