Mục lục bài viết

Bằng chứng và phạm vi

Fidelity trình bày kịch bản retest/co volume; SMB có review giao dịch cụ thể. Hai nguồn là hướng dẫn và case study, không phải backtest của thuật toán bài này.

Dữ liệu và thị trườngOHLCV có lịch phiên; volume cổ phiếu, futures và crypto phải được kiểm định riêng theo feed.
Khung thời gian nghiên cứuM5 là ví dụ intraday; bản daily cần exit và chi phí giữ qua đêm riêng.
Giá vượt 50 với volume tăng, quay lại 50,05 với volume nhỏ rồi xác nhận tiếp diễn.Mở hình kích thước đầy đủ
Giá sự kiện và volume giả lập cho breakout–retest; không phải backtest hoặc OHLC đầy đủ.

Quy trình thực hành

Sơ đồ quy trình Breakout–retest với volume: phá mức, hồi nhẹ và xác nhận tiếp diễn
Các bước được mô tả đầy đủ bên dưới. Tại mỗi bước, dữ liệu thiếu hoặc điều kiện sai phải có lý do loại bỏ.
  1. Break mức đã biếtKhóa Q, ATR và RVOL break.
  2. Chờ retest đầuTrong 8 nến hoặc hết hạn.
  3. Đo co volumeSo mean RVOL cùng giờ.
  4. Xác nhận tiếp diễnClose vượt high retest+b.
  5. Vào và đánh giáFill thật, stop và opportunity cost.

Retest đổi thời điểm vào và tập cơ hội

Fidelity bàn về retest breakout với volume giảm khi tích lũy [1]. SMB review nhấn mạnh vị trí entry sau cú phá [2]. Hai ý tưởng dẫn tới câu hỏi kiểm định: đợi retest có cải thiện reward/risk đủ bù cho những lần giá chạy luôn không?

Một breakout không bắt buộc retest. Nếu chỉ thống kê các chart đã quay lại rồi bật, ta bỏ mất breakout mạnh không cho entry và breakout thất bại xuyên sâu. Thiết kế cần ghi candidate ngay khi phá mức, sau đó để state machine quyết định retest, hết hạn hay thất bại.

Volume ở đây có ba nhiệm vụ khác nhau: xác nhận hoạt động bất thường lúc break, đo mức tham gia khi pullback, và kiểm tra nhịp tái tăng. Không mặc định cả ba điều kiện đồng thời tốt nhất. Khối lượng thấp cũng có thể do thiếu cầu khiến giá đi xuống dễ hơn.

Khóa mức và lần retest đầu tiên

Đề xuất long trên M5: Q=max(high của 20 nến trước t), A=ATR14[t−1], b=max(2tick,0,1A), eps=max(2tick,0,15A). Break khi C[t]>Q+b, C[t−1]≤Q, close-location=(C−L)/(H−L)≥0,70 và RVOL[t]≥1,5. Nếu H≤L, loại nến vì close-location không xác định; không bỏ qua bộ lọc để nhận một gap zero-range. Q, A, b và eps được giữ nguyên.

Trong t+1..t+8, khóa nến đầu r có low nằm [Q−eps,Q+eps] và close≥Q. Nếu bất kỳ close trước đó<Q−eps, hủy. Mean RVOL từ t+1 đến r phải≤0,7RVOL[t]; nếu không đạt, bản có filter bỏ candidate ngay, không chọn lại lần retest sau đẹp hơn.

Trong ba nến sau r, close đầu vượt H[r]+b tạo signal. Stop bằng min low từ t+1 tới signal trừ b; entry từ quote tiếp theo. Tất cả 20,8,3,0,70,1,5 và 0,7 là tham số nghiên cứu. Nhánh short đảo hình học, còn tác dụng volume phải đánh giá riêng.

after_breakout_close(t):
  if H[t]<=L[t] or not complete_prior_features: reject(); return
  candidate = freeze(Q,A,b,eps,break_rvol,session_id,
                     cutoff=session_end-5_minutes,known_at=received_close_time(t))
  if received_close_time(t)>=candidate.cutoff: expire(); return
  r = None
  for u in t+1..t+8:
    if session_id(u)!=candidate.session_id or received_close_time(u)>=candidate.cutoff:
      expire(); return
    if C[u]<Q-eps: cancel(); return
    if first_valid_retest(u):
      r=u; break
  if r is None: expire_no_retest(); return
  if missing_rvol(t+1,r) or mean_rvol(t+1,r)>0.7*break_rvol:
    reject_volume(); return
  for u in r+1..r+3:
    if session_id(u)!=candidate.session_id or received_close_time(u)>=candidate.cutoff:
      expire(); return
    if C[u]<Q-eps: cancel(); return
    if C[u]>H[r]+b:
      stop=min(L[t+1:u+1])-b
      consume_candidate_then_order_on_next_quote_if_before_cutoff()
      return
  expire_no_confirmation()
# A session-close timer also expires waiting candidates when no new bar arrives.

So cùng giờ thay vì chỉ cùng số nến

Định nghĩa đề xuất RVOL_bar=volume hiện tại/median volume cùng ô giờ của 20 phiên trước. TradingView dùng trung bình cho Relative Volume at Time [3]; median ở đây là biến thể có chủ ý. Không áp kết quả dùng mean sang median mà giữ nguyên tên phiên bản.

So tổng volume của một breakout một nến với pullback sáu nến dễ sai vì thời lượng khác nhau. Mean RVOL giúp kiểm soát cả số nến và nhịp sinh hoạt trong ngày. Với phiên nghỉ ngắn, halt hoặc thiếu volume nền, trả về insufficient_data thay vì kéo giá trị gần nhất vào.

Có thể thêm expansion tại signal bằng RVOL≥1,2, nhưng đó là nhánh riêng. Nếu thêm cả relative strength với benchmark, phải lưu trạng thái đã biết trước break. Không dùng tổng volume cuối ngày hoặc người thắng cuối phiên để lọc một entry buổi sáng.

Một retest đạt và một cú phá hỏng

Ví dụ giả lập: Q=50, A=1, tick 0,01 nên b=0,1 và eps=0,15. Nến break H50,8 L49,9 C50,7, location 0,8/0,9≈0,889; RVOL2. Nhịp hồi có RVOL1,0;0,8;0,6, mean 0,8≤1,4. Nến retest r low 50,05, high 50,35, close 50,15.

Nến sau close 50,50 vượt 50,45. Quote mua 50,55, low nhịp hồi 50,05, stop 49,95; risk 0,60. Target 51,75 là 2R trước phí. Giá đã chạm Q trước khi xác nhận, nhưng bản confirmation không được lấy entry 50,00. Bản limit tại Q có thể nghiên cứu riêng với đường đi và fill khác.

Thất bại trước entry: sau breakout, close 49,8<Q−eps=49,85 làm hủy dù volume rất thấp. Thất bại sau entry: giá đảo xuống, stop 49,95 khớp 49,90, lỗ 0,65 từ 50,55. Còn nếu price tăng thẳng 52 mà không retest trong 8 nến, ghi no-retest; không gọi đó là thắng của chiến lược đã không có vị thế.

Chọn cấu trúc stop trước khi thấy P&L

Stop dưới cả nhịp hồi và stop chỉ dưới r có thể khác nhau. Bài dùng low toàn nhịp từ t+1 tới signal đã biết. Sau fill không được nới stop xuống nền xa hơn để giữ trade. Nếu entry gap làm risk vượt giới hạn hoặc target quá gần, policy quan sát quote rồi mới gửi lệnh có thể bỏ; lệnh đã nằm sẵn thì phải ghi mọi fill.

Baseline nghiên cứu thoát 2R, time-stop 20 nến hoặc trước đóng phiên, tùy cái xảy ra trước. Target tính từ fill thật. Một nhánh trailing theo swing cần detector causal riêng; không gom kết quả fixed-R và trailing thành một thống kê thắng.

Với nhiều mã cùng breakout do cùng tin thị trường, phân bổ risk theo danh mục. Tăng số filter có thể giảm số giao dịch nhưng làm cùng thời điểm tập trung hơn. Ghi spread/stop-distance để thấy cost theo R, đặc biệt với stop retest rất hẹp.

Baseline bổ sung giờ ngừng nhận entry là 5 phút trước giờ đóng phiên theo lịch sàn, kể cả phiên rút ngắn. Candidate giữ session_id, và nếu có VWAP thì giữ cả anchor_id; hết cutoff, sang phiên mới hoặc reset anchor đều hủy trạng thái chờ. Quote sau signal cũng phải tới trước cutoff. Timer cuối phiên vẫn hủy dù không có bar tiếp theo; không mang cửa sổ chờ sang sáng hôm sau. Đây là quy tắc nghiên cứu do bài lựa chọn.

Đối chứng phải bao gồm mua ngay breakout

Dùng cùng tập breakout candidates cho ba nhánh: mua sau break, chờ retest không volume filter, và chờ retest có volume filter. Giữ cùng risk budget và lịch giao dịch; báo cả expectancy mỗi fill lẫn lợi nhuận mỗi ngày.

Báo tỷ lệ có retest, thời gian chờ, rejection do volume, no-fill, MAE/MFE và net returns. Nếu win rate tăng nhưng cơ hội tốt bị mất nhiều, kết luận phải thể hiện đánh đổi. Ghép control theo giờ, trend và volatility để tránh volume chỉ chọn một regime thuận lợi.

Walk-forward với các lệnh/candidates chồng lấn được gom cùng fold. Kiểm lân cận số nến retest và ngưỡng RVOL; một điểm tối ưu sắc nhọn dễ là overfit. Prefix replay cần bảo đảm Q không cập nhật theo đỉnh breakout mới và retest đầu không bị đổi về sau.

Sai lầm thường gặp

Chỉ xem chart đã bật

Bỏ no-retest và failed-retest gây selection bias.

Volume thấp luôn bullish

Ít hoạt động không tự xác nhận có cầu giữ giá.

Entry tại Q sau khi biết bật

Đó là fill hồi tố nếu chưa có limit từ trước.

Checklist trước khi dùng phương pháp

Tự đánh dấu khi đã kiểm tra trên dữ liệu của bạn. Trạng thái lưu trong trình duyệt này; đây không phải chứng nhận chiến lược có lãi.

0/7 mục

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

Không retest thì có nên đuổi theo?

Bản này bỏ qua. Mua breakout trực tiếp là nhánh khác, nên đo riêng thay vì thay luật giữa chừng.

Retest phải chạm đúng một giá không?

Không. Dùng vùng tolerance theo tick/ATR đã cố định; độ rộng là tham số cần kiểm định.

Nguồn nghiên cứu

Các nguồn dưới đây hỗ trợ phần định nghĩa hoặc bằng chứng được ghi bên cạnh. Mã giả, ví dụ minh họa và tham số đề xuất trong bài cần được kiểm định riêng.

  1. Entry and Exit Strategy: What you need to considerFidelity / OCC. Đọc transcript đoạn retest, false breakout và volume; không phải backtest. Đối chiếu: .
  2. How to improve your trading entriesSMB Capital. Transcript chính chủ ngày 10/08/2020; review ADT, không kiểm toán P&L. Đối chiếu: .
  3. Relative Volume at TimeTradingView. Định nghĩa RVOL cùng thời điểm; median 20 là đề xuất khác. Đối chiếu: .

Đọc tiếp theo phương pháp

Lưu ý rủi ro

Nội dung phục vụ giáo dục và thiết kế nghiên cứu, không phải lời khuyên tài chính. Backtest là mô phỏng lịch sử, không bảo đảm hiệu quả tương lai và không đặt lệnh giao dịch thật. Các phương pháp trong thư viện không mặc nhiên là tính năng đã có trong ứng dụng. Xem phương pháp tính và trung tâm học.

Kiểm tra quy tắc trước khi dùng vốn thật

Đối chiếu khả năng hỗ trợ của ứng dụng, dữ liệu và từng giao dịch mô phỏng; các detector nâng cao có thể cần triển khai riêng.

Tải Backtest trên App Store