Mục lục bài viết
- Bằng chứng và phạm vi
- Hình minh họa
- Quy trình
- Tên fair value không phải ước lượng giá trị hợp lý
- Công bố zone sau nến thứ ba
- Đo impulse và lần quay lại vùng
- Ví dụ số về midpoint, full fill và thua lệnh
- Limit midpoint và xác nhận close là hai chiến lược
- Tỷ lệ fill không bằng lợi nhuận
- Sai lầm thường gặp
- Checklist thực hành
- Câu hỏi thường gặp
- Nguồn nghiên cứu
Bằng chứng và phạm vi
Nguồn chính chủ công bố một detector FVG và thông số; bài dùng bản hình học tối giản cùng biến thể nghiên cứu, chưa chứng minh tỷ lệ fill hay lợi nhuận.
Quy trình thực hành
- Đủ ba nến đóngKiểm không chồng lấn A và C.
- Khóa zoneGhi created_at và biên ban đầu.
- Theo dõi fillPartial, midpoint, full là cờ riêng.
- Chọn entryLimit đã đặt hoặc close xác nhận.
- Vô hiệu/hết hạnGiữ mọi fill đã xảy ra.
Tên fair value không phải ước lượng giá trị hợp lý
Với nến A, B, C liên tiếp, bullish FVG tồn tại khi low C cao hơn high A. Đoạn giữa hai giá này là zone. B có thể là nến đi lên mạnh qua đoạn đó, nên nói “không có giao dịch tại đây” là suy luận sai từ OHLC. Muốn biết các mức không có prints cần trades theo giá.
LuxAlgo công bố detector có thêm điều kiện close nến giữa và threshold [1]. Bản tối giản ở đây chỉ lưu hình học trước; thêm middle-close, displacement hoặc BOS là version riêng. Điều này giúp biết một filter có giá trị hay chỉ làm chart ít ô hơn.
FVG cũng khác gap qua đêm: một bên là quan hệ ba nến, một bên là gián đoạn giữa phiên. Nếu chúng chồng nhau, lưu cả gap_session flag; không gộp tất cả fill statistics như cùng một cơ chế.
Công bố zone sau nến thứ ba
Bullish: L[t]>H[t−2], zone=[H[t−2],L[t]]. Bearish: H[t]<L[t−2], zone=[H[t],L[t−2]]. Dùng nến đã đóng. Đề xuất width≥max(2tick,0,15ATR[t−1]) để lọc vùng quá nhỏ, nhưng giữ cả raw_fvg và eligible_size để audit.
Tạo zone_id, created_at và eligible_from=t+1. Hai biên giữ nguyên dù giá đi vào vùng; nếu muốn vẽ phần chưa fill thì lưu residual_zone riêng, không thay entry/stop ban đầu. Lưu độ rộng theo ATR, tuổi, direction và context trend đã biết.
Với bullish zone, partial khi low đi vào, midpoint_touch khi low≤mid, full_fill khi low≤zone_low. Đây là cờ mức độ tương tác. Invalidation đề xuất là close<zone_low−b; do đó full fill bằng wick không đồng nghĩa vô hiệu. Phiên bản wick-invalidation cần thống kê riêng.
Trong baseline minh họa, khóa b=max(2tick,0,05ATR trước creation) cho invalidation và stop; reclaim_margin=1tick cho close xác nhận trên zone_high. Hai buffer khác nhau và đều là lựa chọn nghiên cứu. Với tick 0,05 và ATR2 trong ví dụ, b=0,10 còn reclaim_margin=0,05. Mã giả xử lý fill của lệnh đang sống trước quyết định hủy ở close; mỗi lần lặp dùng đúng chỉ số bar hiện tại.
Chỉ zone ACTIVE được xét entry mới. EXPIRED và INVALIDATED là trạng thái kết thúc; một close hồi lên về sau không hồi sinh zone đã hỏng. Bộ đánh giá entry phải dùng đúng policy first-touch hoặc số attempt đã đăng ký trước, và tiêu thụ attempt khi phát signal; hủy theo close vẫn không xóa fill đã xảy ra.
on_completed_bar(t):
process_resting_order_events_up_to_close(t,respect_order_expiry=True)
for zone in active_zones_published_before_bar(t):
if t > zone.created_at+20:
zone.state = EXPIRED; cancel_future_orders(zone); continue
record_partial_mid_full_touches(zone.original_bounds,t)
if C[t] < zone.low-zone.b:
zone.state = INVALIDATED; cancel_future_orders(zone); continue
evaluate_registered_entry_version_after_received_close(zone,t)
# The registered attempt policy consumes or keeps an otherwise active zone.
A = ATR14[t-1]
if not finite_positive(A) or not valid_three_bar_history(t): return
if L[t] > H[t-2] and L[t]-H[t-2] >= max(2*tick,0.15*A):
create(zone=[H[t-2],L[t]],known_at=received_close_time(t),
eligible_from=t+1,b=max(2*tick,0.05*A),reclaim_margin=tick)
# Fills of existing orders precede close-based cancellation.
# The creation candle is never its own post-publication retest.
Đo impulse và lần quay lại vùng
FVG hình học không bắt buộc volume. Đề xuất so volume nến B với median cùng giờ, rồi so volume retest với impulse trên cùng độ dài. Một vùng tạo bởi nến volume cao có thể đi cùng tin mới; retest sau tin và retest trong thị trường bình thường không nên coi cùng regime.
Nếu dùng volume profile, cần tính profile chỉ tới lúc quyết định. Một FVG có volume lớn trong nến giữa không mâu thuẫn với định nghĩa; profile có thể cho thấy vùng từng được trao đổi dày. Vì vậy FVG, LVN và imbalance order book phải là ba feature khác nhau.
Đừng dùng fill percentage của toàn bộ tương lai làm feature chọn FVG ở thời điểm tạo. Nó chỉ là outcome; phân tách bảng feature và outcome giúp chặn leakage.
Ví dụ số về midpoint, full fill và thua lệnh
Giả lập high A=100, low C=101,2 nên zone=[100,101,2], midpoint=100,6. ATR=2, tick=0,05; width=1,2 vượt ngưỡng 0,3. Nến C đóng rồi mới có zone. Retest sau đó low=100,5, close=101,3: đã chạm midpoint nhưng chưa full fill.
Nếu chiến lược xác nhận yêu cầu close trở lại trên zone_high+0,05, entry sau close khớp 101,35, stop 99,90, target 104,25 thì risk=1,45 và reward=2,90. Đây là ví dụ thắng tiềm năng chỉ nếu đường giá đi tới target trước stop.
Một nến retest khác low=99,6, close=99,7 vừa full fill vừa vô hiệu; bản chờ close không được phát entry. Nhưng nếu đã đặt buy limit 100,6 từ trước, lệnh có thể khớp rồi lỗ khi giá xuyên 99,9. Không được nhìn close cuối nến để xóa fill đó. Trường hợp không quay lại vùng trước TTL phải tính no-fill, không thắng hay thua giả.
Limit midpoint và xác nhận close là hai chiến lược
Phiên bản limit đặt tại midpoint sau khi zone công bố; cần spread, queue và cách xử lý touch/no-fill. Phiên bản xác nhận đợi giá vào zone rồi close vượt biên trên với bullish FVG; entry thường cao hơn nhưng phản ứng đã quan sát. Không trộn entry đẹp của limit với độ chọn lọc của close confirmation.
Đề xuất TTL=20 nến và chỉ first eligible retest. Các số này chưa tối ưu. Nếu vùng đã được chạm trong chính nến tạo, không gọi đó là retest có thể giao dịch sau công bố. Với FVG khung lớn, phải đợi close khung lớn theo timing của feed [2].
Stop theo far edge là một lựa chọn; cấu trúc swing có thể đòi stop khác. Order type và giới hạn fill cần mô phỏng cụ thể [3]. Target 2R, đỉnh cũ hoặc time-exit nên thử riêng; không mặc định giá sẽ quay về một vùng FVG đối diện chưa tồn tại.
Tỷ lệ fill không bằng lợi nhuận
Để đo fill probability, quy định horizon: trong 10, 20 hoặc 50 nến, cùng cách xử lý dữ liệu hết mẫu. Vùng cuối dataset chưa đủ horizon không được coi chưa fill vĩnh viễn. Có thể báo thời gian tới partial/mid/full cùng nhóm censored.
So FVG với các zone giả lập có cùng độ rộng, khoảng cách tới giá và trend. Nếu mọi giá đều hay hồi một phần, tỷ lệ touch cao chưa riêng có ở FVG. Đo phản ứng sau lần chạm và return sau entry khả thi.
Kiểm sensitivity threshold, TTL và first/second touch, tính chi phí và no-fill. Một chiến lược có nhiều vùng không quay lại cần đánh giá return theo ngày và vốn nhàn rỗi, không chỉ các trade đã may mắn được khớp.
Sai lầm thường gặp
Vùng chưa từng giao dịch
Nến giữa có thể đi xuyên; dùng trades nếu cần xác minh prints.
Mọi FVG sẽ lấp
Không có bảo đảm; phải đo theo horizon.
Xóa limit thua bằng close
Một lệnh đã khớp intrabar vẫn là trade dù close vô hiệu zone.
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.
Câu hỏi thường gặp
FVG 50% có phải fair value?
Midpoint chỉ là trung điểm hình học trong đặc tả, không phải ước lượng giá trị nội tại.
FVG đầy rồi còn dùng được không?
Tùy luật: wick full-fill và close-invalidation là hai sự kiện khác. Chọn một version trước 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.
- Fair Value GapLuxAlgo trên TradingView. Đọc điều kiện detector công bố; không chạy kiểm định fill rate. Đối chiếu: .
- RepaintingTradingView. Tài liệu về dữ liệu chưa xác nhận. Đối chiếu: .
- Futures Order TypesCME Group. Đọc để đối chiếu thực thi lệnh. Đố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