1. Mô tả Swing Failure Signals Strategy
Chỉ báo phát hiện mẫu hình Swing Failure Pattern (SFP) — giá quét qua 1 đỉnh/đáy xoay chiều rồi thất bại quay đầu — bằng cách kết hợp sự kiện "quét thanh khoản" với xác nhận "Đổi Trạng Thái Giao Hàng" (CISD) trong 1 cửa sổ thời gian giới hạn.
1.1 Concept của chỉ báo
Lý thuyết Swing Failure Pattern (SFP): khi giá phá vỡ (quét/sweep) qua 1 đỉnh hoặc đáy xoay chiều (swing high/low) đã hình thành trước đó — thường kích hoạt lệnh dừng lỗ của trader đang giữ lệnh ngược chiều và lệnh vào theo breakout của trader khác — nhưng sau đó KHÔNG tiếp tục đi theo hướng phá vỡ mà quay đầu ngược lại, đây là dấu hiệu cú phá vỡ đó chỉ là hành vi "săn thanh khoản" (liquidity grab / stop hunt) của dòng tiền lớn chứ không phải 1 breakout thật sự.
Chỉ báo xác nhận mẫu hình này qua đúng 2 bước bắt buộc: (1) phát hiện sự kiện quét (sweep) 1 đỉnh/đáy xoay chiều trước đó, và (2) trong 1 khoảng thời gian giới hạn (Patience) sau sự kiện quét, xác nhận có sự Đổi Trạng Thái Giao Hàng (Change in State of Delivery - CISD) — tức 1 mức giá then chốt bị phá theo chiều ngược lại, kèm điều kiện lọc nhiễu về độ mạnh của cú hồi giá thất bại — thì mới coi là 1 tín hiệu Swing Failure hợp lệ.
1.2 Chức năng của chỉ báo
- Tô màu toàn bộ nến (barcolor): nhuộm màu TẤT CẢ các nến (không chỉ riêng nến tín hiệu) theo "chế độ" (regime) hiện tại — xanh ngọc (Bullish SFP đang hiệu lực) hoặc đỏ (Bearish SFP đang hiệu lực) — cho tới khi có 1 CISD ngược chiều mới xuất hiện thì màu tắt hẳn.
- Mũi tên tín hiệu: ▲ dưới đáy nến khi có Bullish SFP, ▼ trên đỉnh nến khi có Bearish SFP.
- Đường quét thanh khoản (nét đứt) + nhãn "$": đánh dấu chính xác đỉnh/đáy xoay chiều vừa bị quét, kèm nhãn "$" ở giữa đường để nhận biết đây là vùng thanh khoản vừa bị "ăn".
- Đường CISD (nét liền): đánh dấu mức giá xác nhận đổi chiều giao hàng — mức này có thể dùng làm vùng hỗ trợ/kháng cự cho xu hướng mới vừa hình thành.
- Alert: có 2 alertcondition riêng — "Bullish SFP" và "Bearish SFP" — người dùng cần tự tạo alert trên giao diện TradingView dựa vào 2 điều kiện này (chỉ báo không tự bắn alert() runtime).
1.3 Cách dùng chỉ báo
- Chờ mũi tên ▲/▼ kèm màu nến chuyển hẳn sang xanh/đỏ xuất hiện → đây là tín hiệu Swing Failure đã được xác nhận đầy đủ (cả sweep lẫn CISD), có thể cân nhắc vào lệnh theo đúng hướng mũi tên.
- Dùng đường nét đứt (mức đỉnh/đáy vừa bị quét) làm tham chiếu đặt Stop Loss — vì đây chính là vùng thanh khoản vừa bị "ăn", giá thường không quay lại phá vỡ ngay lần thứ 2.
- Dùng đường nét liền (mức CISD) làm vùng hỗ trợ/kháng cự động cho xu hướng mới vừa hình thành — nếu giá đóng cửa phá ngược lại qua đường này, có thể coi là tín hiệu bị vô hiệu.
- Nến vẫn giữ nguyên màu xanh/đỏ ngay cả sau nến tín hiệu — dùng để theo dõi trực quan "chế độ" trend hiện tại đang nghiêng về phía nào, cho tới khi bị đổi màu bởi 1 CISD ngược chiều mới.
- Tăng "Patience" nếu giá thường hồi phục chậm sau khi bị quét thanh khoản (cho chỉ báo nhiều thời gian hơn để xác nhận CISD); giảm nếu chỉ muốn công nhận tín hiệu khi phản ứng đủ nhanh ngay sau sweep.
- Tăng "Trend Noise Filter" (tolerence) nếu muốn lọc chặt hơn, chỉ giữ lại các CISD có cú hồi giá đủ mạnh (giảm tín hiệu giả); giảm nếu muốn chỉ báo nhạy hơn, chấp nhận cả cú hồi yếu.
- Điều chỉnh "Pivot Detection Length" theo phong cách giao dịch: tăng lên để chỉ bắt các đỉnh/đáy lớn, quan trọng; giảm xuống để bắt cả các đỉnh/đáy nhỏ, phù hợp giao dịch ngắn hạn hơn.
1.4 Cách hoạt động của chỉ báo
Đầu vào & vai trò
- len (Pivot Detection Length, mặc định 12): số nến mỗi bên cần để xác nhận 1 đỉnh/đáy xoay chiều (pivot). Tăng lên → chỉ bắt các pivot lớn, đáng tin, quan trọng hơn nhưng xác nhận trễ hơn; giảm xuống → bắt nhiều pivot nhỏ hơn, nhạy hơn nhưng dễ nhiễu.
- len_ (Max Pivot Point Edge, mặc định 50): tuổi tối đa (tính theo số nến) mà 1 pivot còn được coi là "còn hiệu lực" để có thể bị quét. VD pivot hình thành cách đây 60 nến (>50) → chỉ báo không còn tính nó vào diện có thể bị sweep nữa, coi như đã quá cũ, không còn ý nghĩa thanh khoản.
- patience (Patience, mặc định 7): số nến tối đa cho phép trôi qua GIỮA thời điểm 1 pivot bị quét và thời điểm CISD xác nhận đổi chiều. VD sweep xảy ra ở nến X, nếu CISD xác nhận ở nến X+10 (>7) → tín hiệu KHÔNG được công nhận là Swing Failure hợp lệ (dù CISD vẫn đổi trend, chỉ là không còn gắn được với đúng sự kiện sweep đó nữa).
- tolerence (Trend Noise Filter, mặc định 0.7): tỷ lệ tối thiểu giữa "độ vươn xa của cú hồi giá thất bại" so với "chiều dài nhịp giá trước đó dẫn tới điểm neo CISD" để công nhận CISD là hợp lệ. VD nhịp giảm trước đó dài 20 điểm (denom=20), cú hồi tăng sau đó vươn cao thêm 16 điểm so với mức neo (highest−p_val=16) → tỷ lệ 16/20=0.8 > 0.7 → hợp lệ; nếu cú hồi chỉ vươn 10 điểm → tỷ lệ 0.5 < 0.7 → bị loại, coi là nhiễu, chưa đủ mạnh để xác nhận đổi chiều thật.
- bullCol / bearCol (màu, mặc định ■ #00ffbb / ■ #ff1100): màu dùng cho TOÀN BỘ thành phần tăng/giảm — nến, đường kẻ, nhãn, mũi tên tín hiệu.
Các khối logic chính
- Từ hiển thị nhìn ngược vào trong: mũi tên tín hiệu + màu nến + 2 loại đường kẻ (sweep + CISD) đều xuất phát từ ĐÚNG 2 biến bullsfp/bearsfp, chỉ được bật true khi ĐỦ CẢ 2 điều kiện: vừa có sự kiện quét pivot (sweep) VÀ vừa có xác nhận CISD đổi chiều, xảy ra trong đúng cửa sổ patience nến cho phép.
- Tầng phát hiện pivot: mỗi nến, dùng hàm pivot chuẩn TradingView (độ trễ len nến mỗi bên) để tìm đỉnh/đáy xoay chiều mới; mỗi pivot tìm được lưu vào 1 trong 2 mảng riêng (đỉnh/đáy), giới hạn tối đa 50 pivot gần nhất mỗi mảng.
- Tầng phát hiện sweep: mỗi nến, quét qua TOÀN BỘ pivot còn lưu trong mảng (chưa quá tuổi len_), kiểm tra xem giá nến hiện tại (high cho pivot đỉnh, low cho pivot đáy) có vừa vượt qua mức giá pivot đó hay không; nếu có, pivot đó được đánh dấu "đã bị quét" và LOẠI KHỎI mảng (không thể bị quét lần 2), đồng thời ghi lại vị trí nến vừa xảy ra sweep làm mốc thời gian cho bước xác nhận CISD tiếp theo.
- Tầng phát hiện ứng viên CISD: mỗi khi xuất hiện 1 cây nến "đảo chiều" (nến trước đóng giảm, nến này đóng tăng — hoặc ngược lại), giá Open của cây nến đó được lưu làm 1 "mức neo ứng viên" chờ xác nhận.
- Tầng xác nhận CISD: với mỗi ứng viên (xét từ mới nhất), kiểm tra xem giá đóng cửa hiện tại có vừa phá NGƯỢC LẠI qua đúng mức neo đó hay chưa; nếu có, đo "độ vươn xa" của cú hồi giá thất bại (giá cao/thấp nhất đạt được kể từ mốc neo tới hiện tại) so với "chiều dài nhịp giá trước đó dẫn tới mốc neo" (tìm bằng cách quét ngược lịch sử xa hơn tới hết chuỗi nến cùng chiều liên tiếp ngay trước mốc neo); nếu tỷ lệ này vượt ngưỡng tolerence, CISD được xác nhận — lưu lại mức giá + vị trí neo, đổi biến "trend" sang chiều tương ứng, và huỷ toàn bộ các ứng viên còn chờ khác (chỉ chốt 1 CISD/lần).
- Tầng ghép sweep + CISD thành tín hiệu: theo dõi thời điểm biến "trend" vừa đổi dấu (từ ≤0 sang dương = CISD tăng, từ ≥0 sang âm = CISD giảm); nếu đúng lúc đổi dấu này còn nằm trong cửa sổ patience nến kể từ lần sweep gần nhất cùng phía, bật cờ bullsfp/bearsfp = true cho đúng nến đó.
- Tầng vẽ: khi bullsfp/bearsfp bật, vẽ đường nét đứt tại đúng mức pivot vừa bị quét (kèm nhãn "$") và đường nét liền tại đúng mức CISD vừa xác nhận (nếu có); đồng thời cập nhật trạng thái tô màu nến (giữ nguyên màu cho tới khi có CISD ngược chiều mới xuất hiện, không cần đợi đủ điều kiện sweep+patience lần nữa) và vẽ mũi tên tín hiệu tại đúng nến đó.
Đầu ra & vai trò trong sử dụng
- Mũi tên ▲/▼ + màu nến: tín hiệu vào lệnh trực tiếp theo hướng Swing Failure đã xác nhận, kèm theo dõi trực quan "chế độ" trend hiện tại đang nghiêng về phía nào.
- Đường nét đứt (mức sweep): tham chiếu đặt Stop Loss ngay dưới/trên vùng thanh khoản vừa bị "ăn" — vùng này thường không bị phá lại ngay.
- Đường nét liền (mức CISD): vùng hỗ trợ/kháng cự động cho xu hướng mới, đồng thời là điểm tham chiếu để nhận biết tín hiệu bị vô hiệu (nếu giá đóng cửa phá ngược qua đường này).
- 2 alertcondition: cho phép tạo cảnh báo tự động trên TradingView khi có tín hiệu Bullish/Bearish SFP mới, không cần theo dõi chart thủ công.


