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

  1. Protocol Card và Sample Index đã khóa?
  2. Provider:symbol, chart type, M15 và UTC đúng?
  3. Replay status đang active?
  4. Replay interval là M15/Same as chart?
  5. Starting point nằm trước bar đầu?
  6. Drawing cũ đã xóa và future còn hidden?
  7. External State Log đã mở?
  8. Live quote/alert/trading panels đã được bỏ qua?

Mỗi lần Forward

  1. Replay status và header còn đúng?
  2. Chỉ một completed update mới xuất hiện?
  3. Timestamp/close đã ghi trước khi phân loại?
  4. Event order đã áp đúng?
  5. 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.

  1. Tạo một sheet có năm ô Replay Control Card.
  2. Chọn standard time-based chart và một vùng lịch sử dùng cho thực hành.
  3. Ghi header, timezone, chart/replay interval và start point.
  4. Dùng manual Forward ba lần.
  5. 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.
  6. 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

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.