Thứ Năm, 05/11/202605/11/2026

Hướng Dẫn Sử Dụng Bot CNPS42-EXTERNAL cho VN30F1M

Hướng dẫn Bot CNPS 42 External Liquidity Sweep: giao dịch quét thanh khoản BSL/SSL, xác nhận Swing High/Low, Rejection Strength, EMA50 và SL/TP.

CNPS 42_ External Liquidity Sweep
CNPS 42_ External Liquidity Sweep
Mục lục
Mục lục

Trong giao dịch chứng khoán phái sinh, những vùng đỉnh và đáy quan trọng thường được nhà đầu tư quan sát như các khu vực hỗ trợ, kháng cự hoặc vị trí đặt lệnh Stop Loss.

Khi giá tiếp cận những vùng này, thị trường có thể xuất hiện biến động mạnh do sự tương tác giữa các lệnh chờ, lệnh dừng và những nhà giao dịch đang tìm kiếm cơ hội phá vỡ cấu trúc.

Tuy nhiên, việc giá vượt qua một đỉnh hoặc đáy quan trọng không đồng nghĩa thị trường sẽ tiếp tục di chuyển theo hướng phá vỡ.

Trong một số tình huống, giá chỉ vượt qua mức đỉnh hoặc đáy trong thời gian ngắn, sau đó nhanh chóng quay trở lại vùng giao dịch trước đó.

Hiện tượng này thường được gọi là Liquidity Sweep – quét thanh khoản.

Ví dụ, khi VN30F1M vượt lên trên một Swing High quan trọng, một số nhà giao dịch có thể kỳ vọng thị trường tiếp tục tăng và mở vị thế Long.

Tuy nhiên, nếu giá không duy trì được phía trên Swing High mà đóng cửa trở lại bên dưới, sự kiện này có thể phản ánh một nhịp phá vỡ thất bại.

Ngược lại, khi giá xuyên xuống dưới một Swing Low rồi đóng cửa trở lại phía trên, thị trường có thể xuất hiện phản ứng hồi phục.

CNPS 42 EXTERNAL LIQUIDITY SWEEP là chiến lược giao dịch được xây dựng bằng Pine Script v6 trên TradingView, sử dụng các Swing High và Swing Low đã xác nhận để xác định những mức thanh khoản tham chiếu, sau đó tìm kiếm tín hiệu giao dịch khi giá vượt qua và quay trở lại những mức này.

Chiến lược được xây dựng trên hai nguyên tắc:

Buy-Side Liquidity Sweep (BSL) → Xem xét Sell.

Sell-Side Liquidity Sweep (SSL) → Xem xét Buy.

Với Sell, bot tìm kiếm những tình huống High của nến vượt lên trên một Swing High đã được ghi nhận. Nếu Close quay trở lại phía dưới mức này và vượt qua các bộ lọc chất lượng, chiến lược có thể phát sinh tín hiệu Short.

Với Buy, bot tìm kiếm những tình huống Low của nến xuyên xuống dưới một Swing Low đã xác nhận. Nếu Close trở lại phía trên mức này, đồng thời các điều kiện còn lại hợp lệ, bot có thể phát sinh tín hiệu Long.

Một điểm nổi bật của CNPS 42 là hệ thống ba Preset:

  • Selective: Ưu tiên những Swing lớn, yêu cầu Rejection mạnh hơn và khoảng nghỉ tín hiệu dài hơn.
  • Balanced: Cân bằng giữa độ nhạy và số lượng tín hiệu.
  • Aggressive: Sử dụng Swing ngắn hơn, giảm ngưỡng Rejection và tắt bộ lọc xu hướng mặc định.

Ngoài ra, chiến lược hỗ trợ Close-Back Confirmation, EMA Trend Bias, Minimum Sweep Depth theo ATR, Volume Confirmation và cơ chế hạn chế tín hiệu lặp theo hướng.

Theo cấu hình mặc định, CNPS 42 sử dụng Balanced Preset, Swing Strength 8, Rejection Strength 0,40, EMA50 và Source Cooldown 2 nến.

Về quản trị giao dịch, bot sử dụng Stop Loss cố định 5 điểm, Take Profit cố định 15 điểm và khối lượng 3 hợp đồng, tương ứng tỷ lệ Reward/Risk danh nghĩa 1:3.

Vậy CNPS 42 xác định vùng thanh khoản bên ngoài như thế nào, vì sao giá vượt Swing High có thể tạo tín hiệu Sell, Rejection Strength được tính ra sao và người dùng cần lưu ý gì khi sử dụng chiến lược?

1. CNPS 42 External Liquidity Sweep là gì?

CNPS 42 External Liquidity Sweep là chiến lược giao dịch dựa trên sự kiện giá quét qua những vùng đỉnh/đáy cấu trúc đã được xác nhận.

Thay vì sử dụng các đường trung bình động hoặc chỉ báo động lượng làm yếu tố kích hoạt chính, chiến lược tập trung vào hành vi giá tại những mức Swing High và Swing Low.

CNPS 42 có bốn thành phần chính.

1.1. External Liquidity Detection

Chiến lược sử dụng các hàm Pivot High và Pivot Low để xác định mức giá tham chiếu.

External Swing High: Một đỉnh đã được xác nhận bằng số nến bên trái và bên phải.

External Swing Low: Một đáy đã được xác nhận theo nguyên tắc tương ứng.

Những mức này được lưu trong các danh sách thanh khoản riêng biệt.

Theo mặc định:

Maximum External Levels Per Side = 8.

Bot có thể lưu tối đa 8 mức Swing High và 8 mức Swing Low đang được theo dõi.

Đây là các mức thanh khoản được suy luận từ cấu trúc giá, không phải dữ liệu sổ lệnh xác nhận khối lượng lệnh dừng thực sự tồn tại tại đó.

1.2. Liquidity Sweep Detection

Sau khi xác định Swing High/Low, bot theo dõi giá có vượt qua những mức này hay không.

Sell Setup: High vượt Swing High.

Buy Setup: Low xuyên Swing Low.

Nếu Close-Back Confirmation đang bật, Sell còn yêu cầu Close nằm dưới Swing High, còn Buy yêu cầu Close nằm trên Swing Low.

Đây là điều kiện phân biệt một sự kiện Sweep có xác nhận quay lại với việc giá đơn thuần vượt qua vùng cấu trúc.

1.3. Signal Quality Filters

Một sự kiện Sweep chưa đủ để tạo tín hiệu giao dịch.

CNPS 42 sử dụng các bộ lọc bổ sung:

  • Rejection Strength.
  • Minimum Sweep Depth.
  • EMA Trend Bias.
  • Volume Confirmation tùy chọn.
  • Source Signal Cooldown.
  • No Repeat Until Opposite tùy chọn.

Chỉ những Sweep đáp ứng toàn bộ điều kiện đang có hiệu lực mới tạo Source Buy hoặc Source Sell Signal.

1.4. Trade Execution và Risk Management

Sau khi có Source Signal, chiến lược kiểm tra các điều kiện giao dịch chung.

Nếu hợp lệ, bot tạo lệnh Long hoặc Short với 3 hợp đồng.

Mức quản trị mặc định:

Stop Loss = 5 điểm.

Take Profit = 15 điểm.

Chiến lược hỗ trợ Break Even, thoát vị thế khi xuất hiện Sweep Signal đối lập và Force Close cuối phiên.

1.5. Cấu hình mặc định

NhómThông sốGiá trị
SensitivityPresetBalanced
DetectionEffective Swing Strength8
DetectionRequire Close-BackBật
DetectionMaximum Levels Per Side8
QualityRejection Strength0,40
QualitySource Signal Cooldown2 nến
QualityTrend Bias FilterBật
QualityTrend EMA50
QualityTrend TimeframeChart hiện tại
QualityMinimum Sweep Depth0 ATR
QualityVolume ConfirmationTắt
QualityVolume Average Length20
QualityVolume Multiplier1,20
QualityNo Repeat Until OppositeTắt
TradeDirectionBoth
TradeMaximum Trades Per Day0 – Không giới hạn
TradeCooldown After Exit0
RiskStop Loss5 điểm
RiskTake Profit15 điểm
Break EvenSử dụngTắt
Break EvenTrigger7,5 điểm
Break EvenOffset0,5 điểm
ExitOpposite Sweep ExitTắt
SessionEntry Start09:00
SessionLast Entry14:30
SessionForce Close14:45
PositionKhối lượng3 hợp đồng

Source Code CNPS 42: [Chèn liên kết mã nguồn tại đây]

Trải nghiệm trên TradingView: [Chèn liên kết TradingView tại đây]

2. Những khái niệm kỹ thuật được sử dụng trong CNPS 42

2.1. Liquidity trong giao dịch là gì?

Liquidity – thanh khoản – phản ánh khả năng thực hiện giao dịch tại những mức giá với tác động lên giá phù hợp.

Trong phân tích cấu trúc thị trường, nhà giao dịch thường quan tâm đến những vùng có khả năng tập trung lệnh dừng hoặc lệnh chờ.

Các vùng thường được chú ý gồm:

  • Đỉnh và đáy trước đó.
  • Các vùng giá nhiều lần không vượt qua.
  • Những mức Swing High/Low đáng chú ý.
  • Đỉnh hoặc đáy của một khoảng giao dịch.

Khi giá tiếp cận các vùng này, hoạt động thực thi lệnh có thể gia tăng.

Tuy nhiên, chỉ quan sát biểu đồ giá không thể chứng minh chính xác có bao nhiêu lệnh Stop Loss hay Limit Order đang tồn tại tại một mức giá.

Vì vậy, External Liquidity của CNPS 42 nên được hiểu là những mức giá đại diện cho vùng thanh khoản tiềm năng được suy luận từ cấu trúc Swing.

2.2. Buy-Side Liquidity – BSL

Buy-Side Liquidity thường được liên hệ với những vùng phía trên đỉnh giá quan trọng.

Ví dụ, một Swing High hình thành tại 1.910.

Một số lệnh Buy Stop hoặc Stop Loss của vị thế Short có thể được đặt phía trên vùng này.

Khi giá tăng vượt 1.910, thị trường có thể kích hoạt các lệnh mua.

Tuy nhiên, nếu lực mua không đủ duy trì giá phía trên 1.910 và nến đóng cửa trở lại bên dưới, sự kiện này có thể được xem là một BSL Sweep có xác nhận quay lại.

Trong CNPS 42:

BSL Sweep → Tìm kiếm tín hiệu Sell.

2.3. Sell-Side Liquidity – SSL

Sell-Side Liquidity thường được liên hệ với vùng phía dưới các đáy giá quan trọng.

Ví dụ, một Swing Low được xác nhận tại 1.890.

Các lệnh Sell Stop hoặc Stop Loss của vị thế Long có thể nằm phía dưới vùng này.

Nếu giá giảm xuống 1.887 rồi hồi phục, đóng cửa trở lại trên 1.890, sự kiện này có thể được xem là một SSL Sweep có xác nhận quay lại.

Trong CNPS 42:

SSL Sweep → Tìm kiếm tín hiệu Buy.

Đây là cách chiến lược tìm kiếm khả năng phản ứng ngược sau khi giá quét qua một mức cấu trúc.

2.4. Confirmed Swing High và Swing Low

CNPS 42 sử dụng:

ta.pivothigh(high, strength, strength)

và

ta.pivotlow(low, strength, strength)

Trong đó, Strength quyết định số nến cần xét ở hai phía Pivot.

Theo Balanced Preset:

Swing Strength = 8.

Một Swing High chỉ được xác nhận sau khi có đủ 8 nến bên phải điểm Pivot.

Tương tự, Swing Low cũng cần 8 nến phía sau.

Ví dụ, một đỉnh được hình thành tại Bar 100.

Với Swing Strength 8, bot có thể xác nhận đỉnh tại Bar 108 khi đã có đủ dữ liệu.

Điều này có nghĩa vùng thanh khoản không được ghi nhận ngay khi đỉnh hoặc đáy vừa xuất hiện.

Đây là độ trễ xác nhận cấu trúc cần thiết của phương pháp Pivot.

2.5. Ba Sensitivity Preset

CNPS 42 hỗ trợ bốn lựa chọn, gồm ba Preset cố định và một chế độ Custom.

PresetSwing StrengthRejectionSource CooldownTrend Filter
Selective210,605 nếnBật
Balanced80,402 nếnBật
Aggressive50,301 nếnTắt
CustomNgười dùng đặtNgười dùng đặtNgười dùng đặtNgười dùng đặt

Selective

Sử dụng Swing Strength 21, yêu cầu cấu trúc Pivot lớn hơn và Rejection tối thiểu 60%.

Đồng thời, Source Cooldown là 5 nến.

Balanced

Sử dụng Swing Strength 8, Rejection 40% và Source Cooldown 2 nến.

Đây là Preset mặc định.

Aggressive

Sử dụng Swing Strength 5, Rejection 30% và Source Cooldown 1 nến.

Trend Bias Filter được tắt.

Custom

Cho phép người dùng tự thiết lập các tham số Swing Strength, Rejection Strength, Source Cooldown và Trend Filter.

Một điểm quan trọng là khi sử dụng Selective, Balanced hoặc Aggressive, các tham số Custom tương ứng không trực tiếp quyết định giá trị hiệu lực.

Bot sử dụng các giá trị do Preset đã chọn quy định.

2.6. External Liquidity Tracking

CNPS 42 sử dụng hai mảng để lưu giá của các mức thanh khoản:

High Liquidity Prices: Các Swing High đã xác nhận.

Low Liquidity Prices: Các Swing Low đã xác nhận.

Mỗi khi có Pivot mới, mức giá tương ứng được bổ sung vào danh sách.

Mặc định, bot lưu tối đa 8 mức mỗi phía.

Nếu danh sách vượt giới hạn, mức cũ nhất bị loại bỏ.

Điều này có nghĩa một Swing High hoặc Swing Low có thể bị ngừng theo dõi ngay cả khi nó chưa từng bị Sweep, nếu xuất hiện đủ nhiều Pivot mới hơn.

2.7. Close-Back Confirmation

CNPS 42 hỗ trợ:

Require Close-Back Confirmation = True.

Đây là điều kiện mặc định.

Với Sell:

High > Liquidity Level.

Close < Liquidity Level.

Với Buy:

Low < Liquidity Level.

Close > Liquidity Level.

Ví dụ, một Swing High nằm tại 1.910.

Nến hiện tại có:

  • High = 1.913.
  • Close = 1.907.

Giá đã vượt qua 1.910 nhưng đóng cửa trở lại bên dưới.

Điều kiện Close-Back Sell hợp lệ.

Nếu High = 1.913 nhưng Close = 1.912, điều kiện Close-Back Sell không đạt.

2.8. Điều gì xảy ra nếu tắt Close-Back?

Nếu người dùng tắt Require Close-Back, điều kiện Sweep được rút gọn.

Với Sell:

High > Swing High.

Với Buy:

Low < Swing Low.

Khi đó, giá không bắt buộc đóng cửa trở lại phía bên trong vùng cấu trúc.

Ví dụ, giá vượt Swing High 1.910 và đóng cửa tại 1.915 vẫn có thể được xét Sell nếu các bộ lọc khác đạt.

Điều này khiến chiến lược nhạy hơn với sự kiện giá xuyên mức thanh khoản.

Tuy nhiên, cũng làm thay đổi bản chất của việc xác nhận một cú phá vỡ thất bại.

Vì vậy, việc tắt Close-Back cần được kiểm thử riêng.

2.9. Rejection Strength

CNPS 42 sử dụng Rejection Strength để đánh giá vị trí giá đóng cửa bên trong biên độ của cây nến Sweep.

Đầu tiên, bot tính:

Candle Range = Max(High − Low, Minimum Tick).

Với Sell:

Sell Rejection = (High − Close) / Candle Range.

Với Buy:

Buy Rejection = (Close − Low) / Candle Range.

Theo Balanced Preset:

Minimum Rejection Strength = 0,40.

Điều này có nghĩa:

  • Sell yêu cầu Close nằm cách High ít nhất 40% biên độ nến.
  • Buy yêu cầu Close nằm cách Low ít nhất 40% biên độ nến.

Đây là cách đo vị trí giá đóng cửa, không phải tỷ lệ riêng của bóng nến trên hoặc bóng nến dưới.

2.10. Ví dụ Rejection Strength

Giả sử một cây nến có:

  • High = 1.915.
  • Low = 1.905.
  • Close = 1.909.

Biên độ:

1.915 − 1.905 = 10 điểm.

Sell Rejection:

(1.915 − 1.909) / 10 = 0,60.

Buy Rejection:

(1.909 − 1.905) / 10 = 0,40.

Với Balanced Preset, cả hai tỷ lệ đều đạt ngưỡng 0,40.

Tuy nhiên, đây mới chỉ là bộ lọc Rejection.

Để tạo Sell, giá vẫn phải Sweep một Swing High hợp lệ và đáp ứng những điều kiện khác.

Tương tự, Buy vẫn cần Sweep một Swing Low hợp lệ.

Một điểm cần lưu ý là công thức Rejection không sử dụng Open.

Do đó, Rejection Strength không trực tiếp phân biệt nến tăng hay nến giảm.

2.11. Minimum Sweep Depth theo ATR

Ngoài yêu cầu giá xuyên mức thanh khoản, CNPS 42 có thể giới hạn độ sâu tối thiểu của cú Sweep.

Với Sell:

Sweep Depth = High − Swing High.

Với Buy:

Sweep Depth = Swing Low − Low.

Bot sử dụng:

ATR Length = 14.

Điều kiện:

Sweep Depth ≥ Minimum Sweep ATR × ATR14.

Theo mặc định:

Minimum Sweep ATR = 0.

Vì vậy, bộ lọc này không yêu cầu thêm một khoảng xuyên mức tối thiểu ngoài điều kiện High/Low đã vượt mức thanh khoản.

Ví dụ, nếu đặt Minimum Sweep ATR = 0,30 và ATR14 = 10 điểm:

Minimum Sweep Depth = 3 điểm.

Một Sell Sweep vượt Swing High 2 điểm sẽ bị loại.

Nếu vượt 4 điểm, tín hiệu đáp ứng bộ lọc độ sâu.

2.12. Sweep Depth ATR

Sau khi xác định độ sâu Sweep, bot còn tính:

Sweep Depth ATR = Sweep Depth / ATR14.

Ví dụ:

  • Swing High = 1.910.
  • High hiện tại = 1.914.
  • ATR14 = 8.

Sweep Depth:

4 điểm.

Sweep Depth ATR:

4 / 8 = 0,50 ATR.

Giá trị này được lưu phục vụ Data Window.

Tuy nhiên, Sweep Depth ATR không phải Stop Loss hoặc Take Profit.

Stop Loss và Take Profit của CNPS 42 vẫn sử dụng khoảng điểm cố định.

2.13. EMA Trend Bias

CNPS 42 sử dụng EMA để lọc hướng tín hiệu.

Mặc định:

Trend EMA Length = 50.

Trend Timeframe = Chart hiện tại.

Trend Filter = Bật.

Điều kiện:

Bullish Context = Close > Trend EMA.

Bearish Context = Close < Trend EMA.

Với Buy, bot yêu cầu Bullish Context nếu Trend Filter đang bật.

Với Sell, bot yêu cầu Bearish Context.

Điểm đáng chú ý là CNPS 42 không yêu cầu EMA đang dốc lên hoặc dốc xuống.

Chiến lược chỉ so sánh giá đóng cửa hiện tại với EMA.

2.14. Trend Timeframe

Người dùng có thể lựa chọn khung thời gian riêng cho EMA Trend Bias.

Nếu để trống:

Trend Timeframe = Khung thời gian biểu đồ hiện tại.

Nếu lựa chọn 15 phút:

Bot lấy EMA50 được tính từ dữ liệu khung 15 phút thông qua request.security().

Sau đó, điều kiện Buy/Sell vẫn so sánh Close của biểu đồ hiện tại với EMA được lấy từ khung thời gian đã chọn.

Đây là điểm cần phân biệt với một bộ lọc yêu cầu Close của khung 15 phút nằm trên hoặc dưới EMA50 của chính khung 15 phút.

Ngoài ra, việc sử dụng dữ liệu EMA của khung lớn hơn đang hình thành cần được kiểm thử để đánh giá sự khác biệt giữa tín hiệu thời gian thực và dữ liệu lịch sử.

2.15. Volume Confirmation

CNPS 42 hỗ trợ bộ lọc khối lượng tùy chọn.

Mặc định:

Use Volume Confirmation = False.

Thông số:

Volume Average Length = 20.

Volume Multiplier = 1,20.

Công thức:

Volume Average = SMA(Volume, 20).

Điều kiện:

Volume hiện tại > Volume Average × 1,20.

Ví dụ:

  • Volume Average = 10.000.
  • Volume hiện tại = 13.000.

Tỷ lệ Relative Volume:

13.000 / 10.000 = 1,3.

Vì 1,3 > 1,2, Volume Confirmation đạt yêu cầu.

Lưu ý rằng đây là bộ lọc khối lượng tổng của nến, không phải phép đo trực tiếp lượng Stop Order được kích hoạt tại vùng thanh khoản.

2.16. Source Signal Cooldown

CNPS 42 sử dụng một bộ lọc khoảng cách giữa các tín hiệu nguồn.

Theo Balanced Preset:

Source Signal Cooldown = 2 nến.

Điều kiện:

Current Bar Index − Last Source Signal Bar ≥ 2.

Ví dụ, nếu Source Buy xuất hiện tại Bar 100, tín hiệu nguồn tiếp theo chỉ có thể được xác nhận từ Bar 102 trở đi.

Bộ lọc này sử dụng chung cho cả Buy và Sell.

Do đó, một Source Buy có thể khiến Source Sell xuất hiện ngay ở nến kế tiếp bị loại.

Điểm quan trọng là Source Cooldown được cập nhật khi Source Signal được xác nhận, không cần tín hiệu đó trở thành lệnh Entry thực tế.

2.17. No Repeat Until Opposite

CNPS 42 có tùy chọn:

No Repeat Until Opposite = False.

Khi bật, bot không cho phép hai Source Signals liên tiếp cùng hướng.

Ví dụ:

  • Source Buy được xác nhận.
  • Một Source Buy khác xuất hiện.

Tín hiệu Buy thứ hai không được chấp nhận.

Bot chỉ cho phép Buy mới sau khi xuất hiện một Source Sell hợp lệ để thay đổi Last Source Direction.

Tương tự với Sell.

Đây là cơ chế lọc theo hướng của Source Signal, không phải theo trạng thái vị thế thực tế.

2.18. External Level Consumption

Một nguyên tắc quan trọng trong CNPS 42 là mỗi mức thanh khoản được sử dụng một lần khi điều kiện Sweep được xác định là hợp lệ.

Ví dụ, một Swing High tại 1.910 đang được theo dõi.

Giá vượt mức này và đóng cửa trở lại phía dưới, đáp ứng điều kiện Sweep.

Tuy nhiên, Rejection Strength không đạt yêu cầu.

Trong trường hợp này:

  • Source Sell không được tạo từ mức giá đó.
  • Mức Swing High 1.910 vẫn bị loại khỏi danh sách theo dõi.

Điều này có nghĩa bot không tiếp tục chờ một cây nến khác xác nhận chất lượng tốt hơn tại cùng mức thanh khoản đã được tiêu thụ.

Cần phân biệt: nếu bật Close-Back mà giá mới chỉ vượt mức nhưng chưa đóng cửa trở lại, điều kiện Sweep chưa hoàn tất và mức đó chưa bị tiêu thụ bởi quy tắc này.

3. Nguyên lý hoạt động của CNPS 42 External Liquidity Sweep

CNPS 42 được tổ chức theo quy trình:

Confirmed Swing → Register Liquidity Level → Detect Sweep → Quality Filters → Conflict Guard → Source Signal → Entry Validation → Trade Execution.

Bước 1: Lựa chọn Sensitivity Preset

Bot xác định Preset đang được sử dụng.

Nếu là Balanced, các thông số hiệu lực gồm:

  • Swing Strength = 8.
  • Rejection Strength = 0,40.
  • Source Cooldown = 2.
  • Trend Filter = Bật.

Nếu là Custom, bot sử dụng các thông số Custom do người dùng thiết lập.

Bước 2: Tính ATR và EMA

Chiến lược tính ATR14 để đánh giá độ sâu Sweep.

Đồng thời, bot tính Trend EMA theo Length và Timeframe đã chọn.

Bước 3: Tính Rejection Strength

Bot tính vị trí Close trong biên độ High–Low.

Với Sell, sử dụng khoảng cách từ High đến Close.

Với Buy, sử dụng khoảng cách từ Close đến Low.

Sau đó so sánh với Rejection Threshold của Preset.

Bước 4: Tính Volume Confirmation

Bot tính SMA20 Volume và so sánh Volume hiện tại với ngưỡng 1,20 lần trung bình.

Điều kiện này chỉ ảnh hưởng đến tín hiệu nếu người dùng bật Volume Confirmation.

Bước 5: Xác nhận External Swing

Chiến lược sử dụng Swing Strength để phát hiện Pivot High và Pivot Low.

Với Balanced, Pivot cần 8 nến bên trái và 8 nến bên phải.

Khi Pivot được xác nhận, mức giá được lưu vào danh sách thanh khoản.

Bước 6: Giới hạn danh sách Levels

Bot duy trì tối đa 8 mức Swing High và 8 mức Swing Low theo mặc định.

Nếu xuất hiện nhiều mức hơn, các mức cũ nhất bị loại khỏi danh sách.

Bước 7: Kiểm tra Sweep External High

Bot duyệt danh sách Swing High từ phần tử mới hơn về phần tử cũ hơn.

Với từng mức giá, điều kiện Sweep Sell được xác định:

High > Swing High.

Nếu Close-Back đang bật:

Close < Swing High.

Sau đó, chiến lược tính Sweep Depth và những bộ lọc chất lượng.

Bước 8: Kiểm tra chất lượng Sell

Một mức Swing High Sweep được xem là đạt chất lượng nếu:

  • Sell Rejection đạt ngưỡng.
  • Sweep Depth đạt ngưỡng ATR.
  • Trend Bias phù hợp hoặc đã tắt bộ lọc.
  • Volume đạt yêu cầu nếu được bật.
  • Source Cooldown hợp lệ.
  • Alternation Filter hợp lệ nếu bật.

Nếu tất cả điều kiện đạt, bot kích hoạt Raw Sell Signal.

Nếu không đạt, không có Raw Sell Signal từ mức đó.

Tuy nhiên, mức thanh khoản vẫn bị loại khỏi danh sách khi đã đáp ứng điều kiện Sweep.

Bước 9: Kiểm tra Sweep External Low

Bot tiếp tục duyệt danh sách Swing Low.

Với từng mức:

Low < Swing Low.

Nếu Close-Back đang bật:

Close > Swing Low.

Sau đó, chiến lược kiểm tra Rejection, Sweep Depth, Trend Bias, Volume, Cooldown và Alternation.

Nếu đạt, bot tạo Raw Buy Signal.

Bước 10: Loại bỏ các mức đã Sweep

Sau khi xử lý, những mức thanh khoản đáp ứng điều kiện Sweep bị xóa khỏi danh sách đang theo dõi.

Nếu bật hiển thị đường Liquidity Level, đường tương ứng được kết thúc tại cây nến Sweep và đổi kiểu hiển thị.

Một mức có thể bị tiêu thụ dù bộ lọc chất lượng không đạt.

Bước 11: Conflict Guard

CNPS 42 có cơ chế xử lý khi cùng một cây nến xuất hiện cả Raw Buy và Raw Sell.

Điều kiện:

Raw Buy = True và Raw Sell = True.

Khi đó:

Raw Buy = False.

Raw Sell = False.

Điều này có nghĩa bot không ưu tiên hướng Buy hoặc Sell trong tình huống xung đột.

Cả hai tín hiệu đều bị hủy.

Tuy nhiên, những mức thanh khoản đã được quét vẫn bị tiêu thụ vì việc loại bỏ Levels được thực hiện trước bước Conflict Guard.

Bước 12: Xác nhận Source Signal

Sau Conflict Guard, bot yêu cầu nến đã đóng cửa.

Source Buy = Raw Buy và Bar Confirmed.

Source Sell = Raw Sell và Bar Confirmed.

Khi Source Buy được xác nhận, bot lưu:

Last Source Direction = Buy.

Last Source Signal Bar = Current Bar.

Source Sell thực hiện tương tự.

Đây là dữ liệu phục vụ Source Cooldown và Alternation Filter.

Bước 13: Kiểm tra điều kiện giao dịch chung

Bot tiếp tục kiểm tra:

  • Không có vị thế đang mở.
  • Thời gian Entry hợp lệ.
  • Nến đóng trước Force Close.
  • Cooldown After Exit hợp lệ.
  • Maximum Trades Per Day hợp lệ.
  • Hướng giao dịch được phép.
  • Nến đã xác nhận đóng cửa.

Bước 14: Tạo Final Entry

Với Long:

Final Long = Common Entry OK + Allow Long + Source Buy.

Với Short:

Final Short = Common Entry OK + Allow Short + Source Sell.

Bot không mở vị thế chỉ vì giá chạm một Liquidity Level.

Cần có Source Signal hợp lệ sau tất cả bộ lọc.

Bước 15: Gửi lệnh

Khi Final Long được chấp thuận, chiến lược gửi lệnh mua 3 hợp đồng.

Khi Final Short được chấp thuận, bot gửi lệnh bán 3 hợp đồng.

Bộ đếm Trades Today tăng khi lệnh Entry được gửi.

Bước 16: Quản trị vị thế

Sau khi xác lập vị thế, bot ghi nhận giá vào lệnh trung bình.

Stop Loss và Take Profit được tính từ giá này.

Vị thế được quản trị bằng:

  • Fixed Stop Loss.
  • Fixed Take Profit.
  • Break Even nếu bật.
  • Opposite Sweep Exit nếu bật.
  • Force Close cuối phiên.

4. Điều kiện vào lệnh Long và Short của CNPS 42

4.1. Long – Sell-Side Liquidity Sweep

Để tạo Long, bot yêu cầu một Swing Low đã được xác nhận.

Giá hiện tại phải xuyên xuống dưới mức Swing Low đó.

Theo cấu hình mặc định:

  1. Có External Swing Low đang được theo dõi.
  2. Low hiện tại < Swing Low.
  3. Close hiện tại > Swing Low.
  4. Buy Rejection Strength ≥ 0,40.
  5. Sweep Depth đáp ứng ngưỡng ATR.
  6. Close > EMA50.
  7. Volume Confirmation hợp lệ nếu bật.
  8. Source Cooldown ít nhất 2 nến.
  9. Alternation Filter hợp lệ nếu bật.
  10. Không xuất hiện Raw Sell đồng thời.
  11. Nến đã đóng cửa.
  12. Trade Direction cho phép Long.
  13. Chiến lược đang Flat.
  14. Entry Session hợp lệ.
  15. Cooldown After Exit hợp lệ.
  16. Trade Limit hợp lệ.

Khi toàn bộ điều kiện được đáp ứng, bot có thể mở Long.

4.2. Ví dụ Long minh họa

Giả sử VN30F1M đang giao dịch quanh một Swing Low đã xác nhận tại:

External Swing Low = 1.890.

Cây nến hiện tại có:

  • High = 1.897.
  • Low = 1.887.
  • Close = 1.893.
  • EMA50 = 1.891.
  • ATR14 = 8.

Kiểm tra Sweep:

Low 1.887 < Swing Low 1.890.

Giá đã xuyên xuống dưới mức thanh khoản.

Close-Back:

Close 1.893 > Swing Low 1.890.

Giá đóng cửa trở lại phía trên.

Buy Rejection:

(1.893 − 1.887) / (1.897 − 1.887) = 0,60.

Vì 0,60 ≥ 0,40, Rejection Filter đạt yêu cầu.

Sweep Depth:

1.890 − 1.887 = 3 điểm.

Sweep Depth ATR:

3 / 8 = 0,375 ATR.

Với Minimum Sweep ATR mặc định bằng 0, điều kiện Depth hợp lệ.

Trend Bias:

Close 1.893 > EMA50 1.891.

Điều kiện Trend Long đạt.

Giả sử Source Cooldown và các điều kiện giao dịch khác đều hợp lệ, bot có thể tạo Final Long.

Nếu lệnh khớp tại 1.893:

Stop Loss = 1.888.

Take Profit = 1.908.

Lưu ý: Stop Loss 1.888 nằm phía trên Low 1.887 của cây nến Sweep. Đây là hệ quả của cơ chế SL cố định 5 điểm, không phải mức Stop được đặt tự động dưới đáy Sweep.

Ví dụ chỉ nhằm minh họa công thức.

4.3. Short – Buy-Side Liquidity Sweep

Với Short, bot tìm kiếm giá quét lên trên một Swing High.

Điều kiện mặc định:

  1. Có External Swing High hợp lệ.
  2. High hiện tại > Swing High.
  3. Close hiện tại < Swing High.
  4. Sell Rejection Strength ≥ 0,40.
  5. Sweep Depth hợp lệ.
  6. Close < EMA50.
  7. Volume Confirmation hợp lệ nếu bật.
  8. Source Cooldown đạt yêu cầu.
  9. Alternation Filter hợp lệ nếu bật.
  10. Không xuất hiện Raw Buy đồng thời.
  11. Nến đã đóng cửa xác nhận.
  12. Trade Direction cho phép Short.
  13. Điều kiện Session, Cooldown, vị thế và giới hạn giao dịch hợp lệ.

4.4. Ví dụ Short minh họa

Giả sử:

External Swing High = 1.910.

Nến hiện tại có:

  • High = 1.913.
  • Low = 1.903.
  • Close = 1.907.
  • EMA50 = 1.909.
  • ATR14 = 8.

Kiểm tra Sweep:

High 1.913 > 1.910.

Điều kiện Close-Back:

Close 1.907 < 1.910.

Sell Rejection:

(1.913 − 1.907) / (1.913 − 1.903) = 0,60.

Rejection hợp lệ với Balanced Preset.

Sweep Depth:

1.913 − 1.910 = 3 điểm.

Sweep Depth ATR:

3 / 8 = 0,375 ATR.

Trend Bias:

Close 1.907 < EMA50 1.909.

Nếu những điều kiện khác hợp lệ, bot có thể mở Short.

Giả sử Entry khớp tại 1.907:

Stop Loss = 1.912.

Take Profit = 1.892.

Lưu ý, Stop Loss 1.912 nằm dưới High 1.913 của nến Sweep. Vì vậy, mức SL cố định không nhất thiết bảo vệ vị thế bằng cách đặt ngoài toàn bộ biên độ quét thanh khoản.

4.5. Rejection không phải Upper/Lower Wick Ratio

Đây là một điểm quan trọng khi giải thích cơ chế CNPS 42.

Nhiều phương pháp Price Action đánh giá sự từ chối giá thông qua độ dài bóng nến.

Ví dụ:

Upper Wick = High − Max(Open, Close).

Lower Wick = Min(Open, Close) − Low.

Tuy nhiên, CNPS 42 không sử dụng hai công thức này.

Bot dùng:

Sell Rejection = (High − Close) / Candle Range.

Buy Rejection = (Close − Low) / Candle Range.

Điều này có nghĩa vị trí Open không trực tiếp ảnh hưởng đến Rejection Strength.

Một cây nến có thân lớn vẫn có thể vượt bộ lọc, miễn Close nằm ở vị trí phù hợp trong tổng biên độ.

Vì vậy, không nên mô tả CNPS 42 là chiến lược chỉ nhận nến Pin Bar hoặc nến có bóng dài.

4.6. Sweep Depth và Rejection là hai bộ lọc riêng

Sweep Depth đo giá đã xuyên qua mức thanh khoản bao xa.

Rejection đo vị trí đóng cửa của nến so với High/Low.

Ví dụ:

  • Swing High = 1.910.
  • High = 1.915.
  • Low = 1.905.
  • Close = 1.909.

Sweep Depth:

5 điểm.

Sell Rejection:

0,60.

Một nến có thể có Sweep Depth lớn nhưng Rejection thấp.

Ngược lại, có thể có Rejection cao nhưng độ xuyên mức thanh khoản rất nhỏ.

Do đó, hai bộ lọc không thay thế nhau.

4.7. Có thể Sweep nhiều mức thanh khoản trên cùng một nến

CNPS 42 duyệt toàn bộ những Levels đang được theo dõi.

Ví dụ, danh sách Swing High có:

  • 1.905.
  • 1.908.
  • 1.910.

Một cây nến có High 1.914 và Close 1.902.

Nếu Close-Back đang bật, cả ba Levels đều đáp ứng điều kiện giá quét và quay trở lại.

Bot có thể xử lý cả ba mức trên cùng cây nến.

Tuy nhiên, nếu nhiều mức cùng tạo Sell hợp lệ, chiến lược chỉ sử dụng một trạng thái Raw Sell Signal để tạo Source Sell, không mở ba lệnh Short độc lập.

Những mức bị Sweep đều được loại khỏi danh sách.

4.8. Trường hợp xuất hiện Buy và Sell trên cùng nến

Giả sử một cây nến có biên độ rất rộng:

  • High quét Swing High.
  • Low quét Swing Low.
  • Các bộ lọc chất lượng hai hướng đều hợp lệ.

Khi đó:

Raw Sell = True.

Raw Buy = True.

CNPS 42 hủy cả hai tín hiệu.

Điều này giúp tránh việc bot vừa tạo Buy vừa tạo Sell trên cùng nến.

Tuy nhiên, mức thanh khoản ở cả hai phía đã được quét vẫn bị loại khỏi danh sách.

4.9. Source Signal không đồng nghĩa Entry

Một Source Buy có thể xuất hiện nhưng không trở thành Long Entry nếu:

  • Đang giữ vị thế.
  • Ngoài Entry Session.
  • Cooldown After Exit chưa hoàn thành.
  • Trade Direction chỉ cho phép Short.
  • Đã đạt Maximum Trades Per Day.

Tương tự với Source Sell.

Tuy nhiên, ngay cả khi không được giao dịch, Source Signal hợp lệ vẫn cập nhật Last Source Direction và Last Source Signal Bar.

Điều này có thể ảnh hưởng đến các tín hiệu tiếp theo.

4.10. No Repeat Until Opposite không đồng nghĩa đảo chiều vị thế

Nếu bật No Repeat Until Opposite, bot yêu cầu các Source Signals được chấp thuận xen kẽ giữa Buy và Sell.

Tuy nhiên, điều này không có nghĩa bot bắt buộc phải mở Long, sau đó mở Short, rồi mở Long.

Một Source Buy có thể xuất hiện ngoài thời gian Entry nhưng vẫn cập nhật Last Source Direction.

Sau đó, một Buy mới có thể bị loại bởi Alternation Filter dù trước đó chưa có lệnh Long nào được mở.

Vì vậy, đây là bộ lọc chuỗi tín hiệu nguồn, không phải chuỗi vị thế thực tế.

5. CNPS 42 quản trị rủi ro và thoát lệnh như thế nào?

5.1. Stop Loss cố định

CNPS 42 sử dụng Stop Loss theo số điểm.

Mặc định:

Stop Loss Points = 5.

Với Long:

SL = Entry Price − 5.

Với Short:

SL = Entry Price + 5.

Điểm quan trọng là Stop Loss không được tính từ Swing High/Low đã Sweep.

Bot cũng không sử dụng ATR14 để xác định khoảng SL mặc định.

ATR chỉ tham gia đánh giá độ sâu Sweep.

5.2. Take Profit cố định

Theo mặc định:

Take Profit Points = 15.

Với Long:

TP = Entry Price + 15.

Với Short:

TP = Entry Price − 15.

Tỷ lệ Reward/Risk danh nghĩa:

15 / 5 = 3R.

Ví dụ:

  • Entry Long = 1.900.
  • SL = 1.895.
  • TP = 1.915.

Hoặc:

  • Entry Short = 1.900.
  • SL = 1.905.
  • TP = 1.885.

Đây là các mức giá tính từ Entry Price của vị thế.

5.3. SL5/TP15 không phụ thuộc độ sâu Sweep

Một tín hiệu Buy quét mức thanh khoản 1 điểm và một tín hiệu Buy quét sâu 5 điểm đều sử dụng cùng phương pháp Stop Loss/Take Profit.

Mặc định:

  • SL = 5 điểm.
  • TP = 15 điểm.

Bot không tự động mở rộng Stop Loss khi Sweep Depth lớn hơn.

Đồng thời, bot cũng không tự động thu hẹp Stop Loss khi giá quét rất nông.

Vì vậy, cần đánh giá sự phù hợp giữa Fixed Stop và mức biến động thị trường.

5.4. Stop Loss có thể nằm bên trong vùng Sweep

Với một giao dịch Sell, nhiều phương pháp Price Action thường sử dụng đỉnh của nến Sweep hoặc một vùng phía trên làm Stop Loss tham chiếu.

Tuy nhiên, CNPS 42 không áp dụng quy tắc này.

Ví dụ:

  • Swing High = 1.910.
  • High nến Sweep = 1.915.
  • Entry Short = 1.907.

Với SL5:

Stop Loss = 1.912.

Stop Loss nằm dưới High 1.915 của cây nến Sweep.

Điều này có nghĩa một lần giá quay lại vùng vừa bị quét có thể khiến vị thế bị Stop Loss ngay cả khi giá chưa vượt đỉnh Sweep.

Đây là đặc điểm cần kiểm thử kỹ vì bộ máy phát hiện tín hiệu dựa trên cấu trúc, trong khi Stop Loss lại cố định theo điểm.

5.5. Break Even tùy chọn

CNPS 42 hỗ trợ Break Even.

Mặc định:

Use Break Even = False.

Thông số:

Break Even Trigger = 7,5 điểm.

Break Even Offset = 0,5 điểm.

Với Long:

Trigger = Entry + 7,5.

Nếu High đạt ngưỡng, bot có thể dời Stop Loss lên:

New Stop = Max(Current Stop, Entry + 0,5).

Với Short:

Trigger = Entry − 7,5.

Nếu Low đạt ngưỡng:

New Stop = Min(Current Stop, Entry − 0,5).

5.6. Break Even mặc định kích hoạt tại 1,5R nếu được bật

Với cấu hình:

  • Stop Loss = 5 điểm.
  • Break Even Trigger = 7,5 điểm.

Ta có:

7,5 / 5 = 1,5R.

Ví dụ:

  • Entry Long = 1.900.
  • SL = 1.895.
  • TP = 1.915.

Nếu High đạt 1.907,5, bot có thể nâng Stop Loss lên:

1.900,5.

Khi đó, nếu giá quay đầu và khớp Stop Loss mới, kết quả danh nghĩa có thể là +0,5 điểm trước chi phí.

Tuy nhiên, điều này không đảm bảo giao dịch có lợi nhuận ròng.

5.7. Break Even sử dụng High/Low

CNPS 42 không yêu cầu nến đóng cửa vượt ngưỡng Break Even.

Với Long:

High ≥ Trigger.

Với Short:

Low ≤ Trigger.

Do đó, một cây nến có thể kích hoạt Break Even trong quá trình hình thành rồi quay đầu.

Trong Backtest, kết quả phụ thuộc vào giả định biến động bên trong nến và cách TradingView mô phỏng các lệnh.

5.8. Opposite Sweep Signal Exit

CNPS 42 có tùy chọn:

Exit On Opposite Sweep Signal.

Mặc định:

Tắt.

Nếu bật, bot có thể đóng Long khi xuất hiện Source Sell Signal.

Tương tự, đang Short có thể đóng khi Source Buy Signal xuất hiện.

Điều này có nghĩa chiến lược không bắt buộc chờ giá chạm SL hoặc TP nếu tín hiệu Sweep ngược hướng đã được xác nhận.

5.9. Opposite Exit không yêu cầu Final Entry đối lập

Một điểm quan trọng là Opposite Exit sử dụng trực tiếp Source Signal.

Ví dụ, đang giữ Long.

Một Source Sell xuất hiện lúc 14:35, ngoài cửa sổ Entry mặc định kết thúc lúc 14:30.

Tín hiệu Sell có thể không được phép tạo Short Entry.

Tuy nhiên, nếu Opposite Exit được bật, nó vẫn có thể yêu cầu đóng Long.

Điều này xảy ra vì điều kiện Opposite Exit không sử dụng trực tiếp Common Entry Approval.

Đây là cơ chế thoát vị thế, không phải cơ chế tự động đảo chiều.

5.10. Maximum Trades Per Day

Theo mặc định:

Maximum Trades Per Day = 0.

Giá trị 0 có nghĩa không áp dụng giới hạn số giao dịch mỗi ngày thông qua tham số này.

Nếu người dùng thiết lập:

Maximum Trades Per Day = 3.

Sau khi bot gửi ba Entry trong ngày, các Final Entries tiếp theo không được chấp thuận cho đến ngày mới.

Bộ đếm tăng khi lệnh Entry được gửi, không phải mỗi khi có một Source Signal.

5.11. Cooldown After Exit

Mặc định:

Cooldown Bars After Exit = 0.

Tuy nhiên, điều kiện trong mã nguồn là:

Current Bar − Last Exit Bar > Cooldown Bars.

Do đó, khi Cooldown bằng 0, bot vẫn yêu cầu cây nến xét Entry xuất hiện sau cây nến được ghi nhận là vừa đóng vị thế.

Điều này không đồng nghĩa chiến lược được phép mở lại ngay trong cùng một cây nến.

5.12. Source Cooldown và Trade Cooldown khác nhau

CNPS 42 có hai bộ lọc:

Source Signal Cooldown: Balanced mặc định 2 nến.

Cooldown After Exit: Mặc định 0 nến.

Source Cooldown giới hạn khoảng cách giữa các tín hiệu quét thanh khoản.

Trade Cooldown giới hạn thời điểm mở lại vị thế sau khi một giao dịch đã đóng.

Vì vậy, một tín hiệu có thể vượt Trade Cooldown nhưng vẫn bị Source Cooldown loại bỏ.

Ngược lại, một Source Signal có thể hợp lệ nhưng không thể mở lệnh do Trade Cooldown chưa hoàn thành.

5.13. Force Close cuối phiên

CNPS 42 sử dụng:

Force Close = 14:45.

Bot xác định cây nến có:

  • Thời điểm mở trước 14:45.
  • Thời điểm đóng tại hoặc sau 14:45.

Khi điều kiện này xuất hiện và vẫn có vị thế, chiến lược yêu cầu đóng toàn bộ bằng:

strategy.close_all(immediately=true)

Điều này có nghĩa một giao dịch chưa chạm SL hoặc TP vẫn có thể được đóng cuối phiên.

5.14. Tổng hợp cơ chế thoát lệnh

Phương phápMặc địnhCơ chế
Fixed Stop LossBật5 điểm
Fixed Take ProfitBật15 điểm
Break EvenTắtTrigger 7,5 điểm
Break Even Offset0,5 điểmDời SL sau Trigger
Opposite Sweep ExitTắtĐóng theo Source Signal ngược
Time Exit theo số nếnKhông cóKhông áp dụng
Trailing StopKhông cóKhông áp dụng
Force CloseBật14:45

6. Hướng dẫn cài đặt và sử dụng CNPS 42 trên TradingView

Bước 1: Mở biểu đồ

Truy cập TradingView và mở biểu đồ hợp đồng tương lai chỉ số VN30 từ nguồn dữ liệu phù hợp.

CNPS 42 sử dụng dữ liệu giá và Volume từ biểu đồ đang mở.

Chiến lược không cố định riêng cho M1 hoặc M5.

Tuy nhiên, Pivot Strength, Source Cooldown và các bộ lọc theo số nến đều phụ thuộc vào khung thời gian.

Vì vậy, cùng một Preset có thể cho kết quả khác nhau trên M1 và M5.

Bước 2: Thêm mã nguồn vào Pine Editor

  1. Mở TradingView.
  2. Chọn Pine Editor.
  3. Tạo một Strategy mới.
  4. Dán mã nguồn CNPS42 EXTERNAL LIQUIDITY SWEEP.
  5. Lưu mã nguồn.
  6. Chọn Add to chart.
  7. Kiểm tra các mức Liquidity và Trend EMA nếu bật hiển thị.
  8. Mở Strategy Tester.

Tên chiến lược:

CNPS42 EXTERNAL LIQUIDITY SWEEP

Short Title:

CNPS42 EXT LIQ

Phiên bản:

//@version=6

Bước 3: Lựa chọn Sensitivity Preset

PresetPhù hợp để kiểm thử
SelectiveSwing dài hơn, Rejection cao hơn, ít cơ hội đạt bộ lọc hơn
BalancedCấu hình trung gian
AggressiveSwing ngắn hơn, Rejection thấp hơn, không lọc EMA mặc định
CustomTự điều chỉnh bốn tham số hiệu lực

Người dùng nên kiểm thử ba Preset trên cùng một giai đoạn dữ liệu.

Các chỉ số nên so sánh gồm:

  • Source Signal Count.
  • Final Entry Count.
  • Total Trades.
  • Profit Factor.
  • Maximum Drawdown.
  • Average Trade.

Bước 4: Cấu hình Detection

Thông sốMặc định
Sensitivity PresetBalanced
Custom Swing Strength8
Require Close-BackBật
Maximum External Levels Per Side8

Lưu ý rằng Custom Swing Strength chỉ trực tiếp quyết định Swing Strength khi Preset = Custom.

Nếu đang chọn Selective, Balanced hoặc Aggressive, chiến lược sử dụng thông số Swing của Preset tương ứng.

Bước 5: Cấu hình Quality Filters

Thông sốMặc định
Custom Trend Bias FilterBật
Trend EMA Length50
Trend TimeframeChart hiện tại
Custom Rejection Strength0,40
Minimum Sweep Depth ATR0
Custom Source Cooldown2
No Repeat Until OppositeTắt
Use Volume ConfirmationTắt
Volume Average Length20
Volume Multiplier1,20

Trong nhóm này, Swing/Rejection/Cooldown/Trend Filter được quyết định bởi Preset.

Các tham số còn lại có thể tiếp tục hoạt động độc lập.

Ví dụ, ngay cả khi chọn Aggressive, người dùng vẫn có thể bật Volume Confirmation và Require Close-Back.

Bước 6: Cấu hình Trade Control

Thông sốMặc định
Trade DirectionBoth
Maximum Trades Per Day0
Cooldown After Exit0

Trade Direction có ba lựa chọn:

Long: Chỉ mở Long.

Short: Chỉ mở Short.

Both: Cho phép hai hướng.

Tuy nhiên, Trade Direction không loại bỏ quá trình phát hiện Source Signal theo hướng bị tắt.

Điều này có nghĩa Source Signal không được giao dịch vẫn có thể cập nhật Source Cooldown và Last Source Direction.

Bước 7: Cấu hình Risk Management

Thông sốMặc định
Stop Loss Points5
Take Profit Points15
Exit On Opposite Sweep SignalTắt

CNPS 42 sử dụng SL/TP cố định từ Entry Price.

Nếu muốn Stop Loss theo cấu trúc đỉnh/đáy Sweep hoặc ATR, cần sửa đổi logic mã nguồn.

Đây không phải lựa chọn đã được tích hợp trong bản hiện tại.

Bước 8: Cấu hình Break Even

Thông sốMặc định
Use Break EvenTắt
Break Even Trigger7,5 điểm
Break Even Offset0,5 điểm

Người dùng có thể kiểm thử bật và tắt Break Even để đánh giá tác động đến Average Win, Profit Factor và Drawdown.

Bước 9: Cấu hình Session

Thông sốMặc định
TimezoneAsia/Ho_Chi_Minh
Entry Start09:00
Last Entry14:30
Force Close14:45

CNPS 42 sử dụng một cửa sổ Entry liên tục.

Không có bộ lọc nghỉ trưa riêng được định nghĩa trong source.

Bot cũng yêu cầu thời điểm đóng nến trước Force Close mới được tạo Entry.

Bước 10: Hiển thị trên biểu đồ

CNPS 42 hỗ trợ:

Thành phầnHiển thị
Trend EMAĐường xanh hoặc đỏ
External Swing HighĐường đỏ nét đứt
External Swing LowĐường xanh nét đứt
Swept High hợp lệĐường đỏ đậm
Swept Low hợp lệĐường xanh đậm
Swept Level không đạt QualityĐường xám
Source Buy MarkerTam giác xanh, BUY
Source Sell MarkerTam giác đỏ, SELL
Active Stop LossĐường đỏ
Active Take ProfitĐường xanh lá

Theo mặc định:

  • Show Trend EMA: Bật.
  • Show External Liquidity Levels: Tắt.
  • Show Signal Markers: Tắt.
  • Show Active SL/TP: Bật.
  • Show Diagnostics: Tắt.

Để quan sát rõ cơ chế quét thanh khoản, nên bật Show External Liquidity Levels và Show Signal Markers khi kiểm thử.

Bước 11: Sử dụng Diagnostics

Khi bật Diagnostics, CNPS 42 hiển thị:

  • Khung thời gian.
  • Preset.
  • Swing Strength.
  • Rejection Threshold.
  • Source Cooldown.
  • Trend Bias.
  • Buy Rejection.
  • Sell Rejection.
  • Relative Volume.
  • Pending BSL.
  • Pending SSL.
  • High Levels.
  • Low Levels.
  • Source Buy/Sell Count.
  • Long/Short Entry Count.
  • Last Source Signal.
  • Trades Today.
  • Position.

Bảng này cho phép người dùng phân biệt giữa số Source Signals và số Final Entries.

Điểm đáng chú ý là hai dòng Pending BSL/SSL không được tính theo khoảng cách gần nhất đến giá hiện tại.

Trong mã nguồn:

Pending BSL = Giá lớn nhất trong danh sách Swing High đang theo dõi.

Pending SSL = Giá nhỏ nhất trong danh sách Swing Low đang theo dõi.

Do đó, đây là các mức cực trị trong danh sách đang hoạt động, không nhất thiết là mức thanh khoản gần thị trường nhất.

Bước 12: Kiểm thử trong Strategy Tester

CNPS 42 hỗ trợ kiểm thử giao dịch lịch sử bằng TradingView Strategy Tester.

Các nhóm thử nghiệm nên thực hiện:

Thử nghiệm 1: Selective, Balanced và Aggressive.

Thử nghiệm 2: Close-Back bật và tắt.

Thử nghiệm 3: Rejection Strength 0,30 / 0,40 / 0,60 trong Custom.

Thử nghiệm 4: Swing Strength 5 / 8 / 21.

Thử nghiệm 5: Bật và tắt EMA Trend Bias.

Thử nghiệm 6: EMA50 trên khung hiện tại so với EMA của khung lớn hơn.

Thử nghiệm 7: Minimum Sweep ATR 0 so với 0,20 hoặc 0,30.

Thử nghiệm 8: Bật Volume Confirmation.

Thử nghiệm 9: Bật No Repeat Until Opposite.

Thử nghiệm 10: Thay đổi Source Cooldown.

Thử nghiệm 11: Thay đổi Maximum Tracked Levels.

Thử nghiệm 12: Kiểm thử SL5/TP15 so với các cấu hình khác.

Thử nghiệm 13: Bật Break Even 7,5 điểm.

Thử nghiệm 14: Bật Opposite Sweep Exit.

Thử nghiệm 15: Đặt giới hạn Maximum Trades Per Day.

Theo mã nguồn:

  • Initial Capital: 100.000.000 VNĐ.
  • Khối lượng: 3 hợp đồng.
  • Commission: 10.000 VNĐ/hợp đồng/lần khớp.
  • Slippage: 3 ticks.
  • Pyramiding: 0.
  • Process Orders On Close: Bật.
  • Calculate On Order Fills: Bật.
  • Fill Orders On Standard OHLC: Bật.
  • Margin Long/Short: 0.

Các thông số này chỉ phục vụ mô phỏng và không phản ánh đầy đủ điều kiện ký quỹ, thanh khoản hoặc giá khớp thực tế của thị trường phái sinh.

7. Cách thiết lập cảnh báo tín hiệu giao dịch

CNPS 42 hỗ trợ cảnh báo thông qua các sự kiện khớp lệnh của TradingView Strategy.

Để thiết lập:

  1. Mở biểu đồ đã thêm CNPS42.
  2. Chọn Create Alert.
  3. Trong Condition, chọn CNPS42.
  4. Chọn cảnh báo Order Fills.
  5. Trong Message, nhập {{strategy.order.alert_message}}.
  6. Chọn phương thức nhận cảnh báo và lưu.

7.1. Cảnh báo Long Entry

Thông điệp:

ENTRY_LONG_CNPS42

Được gắn với lệnh mở Long sau Source Buy Signal hợp lệ.

Đây là tín hiệu xuất phát từ việc giá Sweep một External Swing Low và đáp ứng các bộ lọc.

7.2. Cảnh báo Short Entry

Thông điệp:

ENTRY_SHORT_CNPS42

Được gắn với lệnh mở Short sau Source Sell Signal hợp lệ.

Đây là tín hiệu xuất phát từ việc giá Sweep một External Swing High và đáp ứng các bộ lọc.

7.3. Cảnh báo Stop Loss và Take Profit

Thông điệpÝ nghĩa
EXIT_LONG_TP_CNPS42Long đóng theo TP
EXIT_LONG_SL_CNPS42Long đóng theo SL
EXIT_SHORT_TP_CNPS42Short đóng theo TP
EXIT_SHORT_SL_CNPS42Short đóng theo SL

CNPS 42 sử dụng strategy.exit() để quản trị Stop Loss và Take Profit.

Thông điệp tương ứng được sử dụng khi lệnh thoát khớp trong mô phỏng.

7.4. Cảnh báo Break Even

Thông điệpÝ nghĩa
EXIT_LONG_BE_CNPS42Long đóng qua Stop sau Break Even
EXIT_SHORT_BE_CNPS42Short đóng qua Stop sau Break Even

Khi Break Even được kích hoạt, thông điệp cho lệnh Stop Loss được thay đổi.

Tuy nhiên, đây không phải cảnh báo phát ngay khi Stop Loss được dời.

Thông điệp được sử dụng nếu lệnh Stop Loss sau điều chỉnh được khớp.

7.5. Cảnh báo Opposite Sweep Exit

Thông điệpÝ nghĩa
OPPOSITE_EXIT_LONG_CNPS42Đóng Long do Source Sell
OPPOSITE_EXIT_SHORT_CNPS42Đóng Short do Source Buy

Hai cảnh báo chỉ phát sinh khi Opposite Sweep Exit được bật và lệnh đóng tương ứng được thực thi.

Theo mặc định, tính năng đang tắt.

7.6. Cảnh báo cuối phiên

Thông điệp:

SESSION_END_CNPS42

Được sử dụng khi chiến lược yêu cầu đóng vị thế cuối phiên.

Mốc Force Close mặc định là 14:45.

7.7. Disable SL/TP Alerts

CNPS 42 có tham số:

Disable SL/TP Alerts.

Mặc định đang tắt.

Khi bật, chiến lược vô hiệu hóa cảnh báo từ các lệnh SL/TP được tạo bằng strategy.exit().

Tuy nhiên, tham số này không tự động vô hiệu hóa Entry Alerts, Opposite Exit hoặc Session End.

7.8. Lưu ý khi tích hợp Webhook

Các mã cảnh báo của CNPS 42 giúp phân biệt:

  • Mở Long sau SSL Sweep.
  • Mở Short sau BSL Sweep.
  • Đóng theo SL.
  • Đóng theo TP.
  • Đóng theo Break Even.
  • Đóng do Sweep đối lập.
  • Đóng cuối phiên.

Tuy nhiên, các thông điệp mặc định chưa chứa đầy đủ:

  • Giá Entry.
  • Giá Stop Loss.
  • Giá Take Profit.
  • Swing High/Low bị Sweep.
  • Sweep Depth.
  • Rejection Strength.
  • Giá trị EMA Trend Bias.
  • Khối lượng thực tế khớp.
  • Khung thời gian.
  • Thời điểm phát tín hiệu.

Nếu muốn kết nối với hệ thống nhận tín hiệu ngoài TradingView, người dùng cần bổ sung các trường dữ liệu qua Placeholder hoặc chỉnh sửa mã nguồn.

Một Order Fill Alert từ TradingView không đồng nghĩa lệnh đã được khớp thành công tại công ty chứng khoán.

Hệ thống thực thi bên ngoài cần kiểm tra trạng thái lệnh và vị thế riêng.

Kết luận

CNPS 42 EXTERNAL LIQUIDITY SWEEP là chiến lược giao dịch phái sinh sử dụng các Swing High và Swing Low đã xác nhận để xác định vùng thanh khoản tiềm năng, sau đó tìm kiếm tín hiệu khi giá xuyên qua và quay trở lại những vùng giá này.

Điểm nổi bật của chiến lược là kết hợp Liquidity Sweep với hệ thống bộ lọc chất lượng có thể tùy chỉnh, bao gồm Rejection Strength, Minimum Sweep Depth theo ATR, EMA Trend Bias, Volume Confirmation và Source Signal Cooldown.

Với Sell, bot tìm kiếm những tình huống giá quét lên trên External Swing High rồi xác nhận quay trở lại phía dưới.

Với Buy, bot tìm kiếm những tình huống giá quét xuống dưới External Swing Low rồi xác nhận quay trở lại phía trên.

Theo cấu hình mặc định, CNPS 42 sử dụng Balanced Preset với Swing Strength 8, Rejection Strength 0,40, Trend EMA50 và Source Cooldown 2 nến.

Ngoài ra, chiến lược có thể chuyển sang Selective để sử dụng Swing dài hơn và Rejection cao hơn, hoặc Aggressive để tăng độ nhạy phát hiện tín hiệu và tắt bộ lọc xu hướng mặc định.

Về quản trị vị thế, bot sử dụng Stop Loss 5 điểm và Take Profit 15 điểm, tương đương tỷ lệ Reward/Risk danh nghĩa 1:3.

Chiến lược cũng hỗ trợ Break Even, Opposite Sweep Exit, giới hạn giao dịch mỗi ngày và đóng toàn bộ vị thế cuối phiên.

Tuy nhiên, các mức External Liquidity được suy luận từ Pivot High/Low, không phải dữ liệu trực tiếp về lượng lệnh chờ hoặc Stop Loss tại từng vùng giá.

Ngoài ra, một cú Sweep được xác nhận không bảo đảm giá sẽ đảo chiều. Thị trường có thể tiếp tục biến động qua mức thanh khoản vừa bị quét, đặc biệt trong những phiên có xu hướng mạnh.

Một đặc điểm quan trọng khác là bot sử dụng Fixed Stop Loss 5 điểm thay vì đặt Stop theo cực trị Sweep. Do đó, mức Stop có thể nằm bên trong biên độ của nến tạo tín hiệu và không phải lúc nào cũng tương ứng với khoảng vô hiệu hóa cấu trúc.

Vì vậy, khi sử dụng CNPS 42, điều quan trọng là hiểu rõ cách Pivot được xác nhận, sự khác biệt giữa BSL và SSL, điều kiện Close-Back, công thức Rejection Strength, cơ chế tiêu thụ Liquidity Levels và các bước lọc tín hiệu trước Entry.

Người dùng nên kiểm thử riêng Selective, Balanced và Aggressive, so sánh hiệu quả của Close-Back, Trend EMA, Sweep Depth, Volume Confirmation và Stop Loss/Take Profit trong TradingView Strategy Tester.

Theo dõi Phái Sinh Online để cập nhật thêm hướng dẫn sử dụng bot giao dịch phái sinh, kiến thức về Liquidity Sweep, cấu trúc thị trường và các chiến lược giao dịch trên TradingView.

Lưu ý: Nội dung chỉ mang tính chất hướng dẫn và tham khảo kiến thức. Kết quả giao dịch mô phỏng không bảo đảm lợi nhuận trong tương lai.

Thông tin trong bài chỉ mang tính tham khảo, không phải khuyến nghị mua bán. Giao dịch phái sinh có rủi ro cao do sử dụng đòn bẩy; nhà đầu tư tự chịu trách nhiệm với quyết định của mình.

Đinh Mạnh Đạt

Nhà nghiên cứu định lượng, chuyên sâu về dữ liệu Open Interest và quản trị vị thế.

Bản tin phái sinh mỗi phiên
Nhận bản tin mỗi phiên + Dự báo Nhịp đập phái sinh