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

Hướng Dẫn Sử Dụng Bot CNPS48-IMPULSE cho VN30F1M

Hướng dẫn Bot CNPS 48 V3: giao dịch theo External Impulse, Fibonacci Pullback 0.236–0.500, xác nhận MACD kép, Stop Loss cấu trúc và TP 2R.

ChatGPT Image Nov 2, 2026, 02_09_55 PM
ChatGPT Image Nov 2, 2026, 02_09_55 PM
Mục lục
Mục lục

Trong giao dịch chứng khoán phái sinh, việc xác định đúng xu hướng thị trường là điều quan trọng, nhưng lựa chọn thời điểm tham gia giao dịch trong xu hướng đó cũng có ảnh hưởng đáng kể đến hiệu quả của một chiến lược.

Khi thị trường xuất hiện một nhịp tăng mạnh, mở Long ngay tại vùng giá cao có thể khiến nhà giao dịch phải đối mặt với nhịp điều chỉnh tiếp theo. Ngược lại, khi thị trường giảm mạnh, mở Short sau một chuỗi nến giảm liên tiếp có thể khiến vị thế chịu áp lực khi giá hồi phục.

Một phương pháp tiếp cận là xác định nhịp biến động chính, chờ giá điều chỉnh về vùng Fibonacci, sau đó sử dụng chỉ báo động lượng để xác nhận hướng giao dịch.

Thay vì giao dịch mọi tín hiệu MACD, chiến lược chỉ xem xét những tín hiệu xuất hiện khi cấu trúc giá và động lượng có sự đồng thuận.

CNPS 48 IMPULSE FIB DOUBLE MACD V3 SOURCE FREQUENCY là chiến lược giao dịch được xây dựng bằng Pine Script v6 trên TradingView, kết hợp ba thành phần chính:

  • External Impulse – Nhận diện nhịp biến động chính từ ZigZag ATR.
  • Fibonacci Pullback – Xác định vùng điều chỉnh 0.236–0.500 của External Impulse.
  • Double MACD – Sử dụng Slow MACD và Fast MACD để xác nhận xu hướng và thời điểm giao dịch.

Điểm đáng chú ý của phiên bản V3 là khôi phục tần suất tín hiệu gần với chiến lược nguồn, sau khi phiên bản V2 sử dụng hệ thống lọc tương đối chặt chẽ.

Theo cấu hình mặc định, CNPS 48 không yêu cầu cây nến phải có thân đủ lớn, không bắt buộc giá đóng cửa vượt lại biên Fibonacci nông và không yêu cầu Fast MACD vừa xuất hiện một giao cắt mới.

Thay vào đó, bot sử dụng trạng thái Fast MACD đang đồng thuận với hướng giao dịch.

Với Long, chiến lược tìm kiếm một External Impulse tăng, Slow MACD khung thời gian cao hơn có giá trị dương, giá điều chỉnh vào vùng Fibonacci 0.236–0.500 và Fast MACD nằm trên Signal Line.

Với Short, các điều kiện được áp dụng theo hướng ngược lại.

Ngoài chiến lược thuận xu hướng, CNPS 48 còn có một bộ máy Counter-Trend tùy chọn, tìm kiếm Liquidity Sweep tại các Pivot High/Low và xác nhận bằng MACD Divergence nếu được yêu cầu.

Về quản trị rủi ro, bot sử dụng Structural Stop Loss với ATR Buffer 0.25 và Take Profit mặc định 2R.

Chiến lược có thể bổ sung Break Even nhưng chức năng này đang tắt theo mặc định.

Vậy External Impulse được xác định như thế nào, vùng Fibonacci được tính ra sao, hai hệ thống MACD khác nhau ở đâu và cơ chế khôi phục tần suất tín hiệu của CNPS 48 V3 có những điểm cần lưu ý gì?

1. CNPS 48 Impulse Fib Double MACD V3 là gì?

CNPS 48 là chiến lược giao dịch phái sinh sử dụng cấu trúc biến động giá kết hợp xác nhận động lượng từ MACD trên hai khung thời gian.

Hệ thống được tổ chức thành bốn thành phần chính.

1.1. External Impulse Engine

External Impulse là nhịp biến động được chiến lược xác định từ các Pivot của ZigZag sử dụng ngưỡng đảo chiều theo ATR.

Bot sử dụng:

ZigZag ATR Length = 10.

ZigZag Reversal = 1.0 ATR.

Sau khi xác nhận những Pivot cần thiết, bot xây dựng một External Impulse gồm:

  • Impulse Direction.
  • Impulse Origin.
  • Impulse Extreme.
  • Impulse Span.
  • Counter Extreme.

Một External Impulse tăng có hướng từ Origin thấp hơn lên Extreme cao hơn.

Một External Impulse giảm có hướng từ Origin cao hơn xuống Extreme thấp hơn.

Các mức này trở thành cơ sở tính Fibonacci Pullback.

1.2. Fibonacci Pullback Engine

Sau khi External Impulse hợp lệ, chiến lược xác định vùng điều chỉnh của nhịp biến động đó.

Theo mặc định:

Pullback From = 0.236.

Pullback To = 0.500.

Bot theo dõi độ sâu điều chỉnh so với toàn bộ Impulse.

Vùng Fibonacci được sử dụng để đánh giá xem giá đã điều chỉnh đủ sâu nhưng chưa vượt ngưỡng kết thúc vùng Pullback hay chưa.

Ngoài ra, chiến lược lưu thời điểm giá chạm vùng Fibonacci và cho phép xét tín hiệu trong cửa sổ 5 nến.

1.3. Double MACD Confirmation

CNPS 48 sử dụng hai hệ thống MACD.

Slow MACD

Đóng vai trò xác nhận hướng xu hướng.

Theo mặc định, Slow MACD lấy dữ liệu từ khung thời gian gấp 4 lần khung biểu đồ và yêu cầu MACD Line nằm đúng phía đường Zero.

Fast MACD

Đóng vai trò xác nhận tín hiệu giao dịch trên khung thời gian hiện tại.

Theo mặc định, bot chỉ yêu cầu Fast MACD Line nằm đúng phía Signal Line.

Cấu hình này không bắt buộc một MACD Crossover mới tại thời điểm Entry.

1.4. Risk & Position Management

Sau khi tín hiệu được xác nhận, bot tính Structural Stop Loss.

Với Trend Entry, Stop được xác định từ Counter Extreme và High/Low của cây nến hiện tại, cộng thêm ATR Buffer.

Với Counter-Trend Entry, Stop được xác định từ cực trị của Liquidity Sweep.

Take Profit mặc định:

2R.

Ngoài ra, CNPS 48 hỗ trợ:

  • Break Even tùy chọn.
  • Giới hạn giao dịch/ngày.
  • Cooldown sau Exit.
  • Lọc khoảng Risk theo điểm.
  • Force Close cuối phiên.

1.5. Các thông số mặc định

NhómThông sốGiá trị mặc định
ImpulseZigZag ATR Length10
ImpulseZigZag Reversal x ATR1.00
ImpulseExternal Impulse End Threshold0.50
ImpulseUse WicksBật
PullbackFibonacci From0.236
PullbackFibonacci To0.500
PullbackTrigger Window5 nến
PullbackTrend SignalsBật
Fast MACDFast / Slow / Signal12 / 26 / 9
Fast MACDTrigger ModeState
Slow MACDFast / Slow / Signal12 / 26 / 9
Slow MACDTimeframe Multiplier4
Slow MACDConfirmation RuleLine > 0
QualityRequire Fib ReclaimTắt
QualityCandle Body FilterTắt
QualityMinimum Body Ratio0.20
Counter-TrendSweep SignalsTắt
Counter-TrendClose-Back Window3 nến
Counter-TrendMaximum Liquidity Levels20
Counter-TrendRequire MACD DivergenceBật
RiskStop Buffer0.25 ATR
RiskTake Profit2R
RiskRisk Distance FilterTắt
RiskMinimum Risk1.5 điểm
RiskMaximum Risk12 điểm
Break EvenSử dụngTắt
Break EvenTrigger1R
Break EvenOffset0.5 điểm
TradeDirectionBoth
TradePosition Size3 hợp đồng
TradeMaximum Trades Per Day0 – Không giới hạn
TradeCooldown0 nến
SessionEntry Start09:00
SessionLast Entry14:30
SessionForce Close14:45

Source Code CNPS 48: CNPS48

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

2.1. ZigZag ATR

ZigZag là phương pháp xác định các điểm xoay của giá, thường được sử dụng để nghiên cứu cấu trúc Swing High và Swing Low.

CNPS 48 không sử dụng một mức đảo chiều ZigZag cố định theo số điểm.

Thay vào đó, ngưỡng đảo chiều được tính theo ATR.

Công thức:

ZigZag Threshold = ATR10 × ZigZag ATR Multiplier.

Theo mặc định:

ZigZag Threshold = ATR10 × 1.0.

Ví dụ:

  • ATR10 = 5 điểm.
  • Multiplier = 1.0.

Ngưỡng đảo chiều:

5 điểm.

Khi giá di chuyển ngược hướng với cực trị đang theo dõi đủ khoảng này, chiến lược có thể xác nhận một Pivot ZigZag.

Điểm quan trọng là Pivot được xác nhận sau khi giá đáp ứng điều kiện đảo chiều, không nhất thiết tại chính cây nến tạo cực trị.

2.2. Use Wicks

CNPS 48 hỗ trợ lựa chọn nguồn giá dùng cho ZigZag.

Mặc định:

Use Wicks = True.

Khi bật:

  • Source High = High.
  • Source Low = Low.

Khi tắt:

Source High = Max(Open, Close).

Source Low = Min(Open, Close).

Như vậy, tắt Use Wicks khiến bộ máy ZigZag chủ yếu xác định cực trị từ thân nến.

Tuy nhiên, điều này không có nghĩa toàn bộ hệ thống chỉ sử dụng thân nến. Một số thành phần khác, bao gồm Liquidity Sweep và Stop Loss, vẫn sử dụng High/Low thông thường.

2.3. External Impulse

CNPS 48 xây dựng External Impulse từ các Pivot đã được xác nhận.

Một Impulse gồm hai mốc quan trọng:

Impulse Origin: Điểm bắt đầu nhịp biến động.

Impulse Extreme: Cực trị theo hướng nhịp biến động.

Với Impulse tăng:

Impulse Extreme > Impulse Origin.

Với Impulse giảm:

Impulse Extreme < Impulse Origin.

Khoảng cách:

Impulse Span = |Impulse Extreme − Impulse Origin|.

Ví dụ:

  • Origin = 1,880.
  • Extreme = 1,900.

Impulse Span:

20 điểm.

Đây là khoảng được dùng để tính các mức Fibonacci.

2.4. External Impulse End Threshold

CNPS 48 sử dụng:

External Impulse End Threshold = 0.50.

Khi một Pivot ngược hướng được xác nhận, bot tính mức điều chỉnh so với Impulse hiện tại.

Công thức khái quát:

Retracement = |Opposite Pivot − Impulse Extreme| / Impulse Span.

Nếu Retracement đạt từ 0.50 trở lên, bot có thể chuyển External Impulse sang hướng đối lập.

Ví dụ:

  • Impulse tăng từ 1,880 lên 1,900.
  • Span = 20 điểm.
  • Pivot giảm được xác nhận tại 1,889.

Retracement:

(1,900 − 1,889) / 20 = 0.55.

Vì 0.55 ≥ 0.50, điều kiện kết thúc External Impulse hiện tại được đáp ứng.

Tuy nhiên, đây là điều kiện xử lý Pivot trong External Impulse Engine, không phải một lệnh thoát vị thế giao dịch trực tiếp.

2.5. Live Impulse Extension

CNPS 48 có khả năng cập nhật Impulse Extreme khi giá tiếp tục mở rộng theo hướng đang theo dõi.

Ví dụ:

  • External Impulse tăng có Extreme 1,900.
  • Giá tiếp tục tạo mức cao 1,905 trong trạng thái ZigZag phù hợp.

Bot có thể cập nhật:

Impulse Extreme = 1,905.

Khi đó, Impulse Span và các mức Fibonacci được tính lại.

Đây là đặc điểm quan trọng vì vùng Fibonacci không nhất thiết cố định trong toàn bộ thời gian tồn tại của một External Impulse.

2.6. Counter Extreme

Ngoài Origin và Extreme, chiến lược duy trì một giá trị gọi là Counter Extreme.

Trong Impulse tăng, Counter Extreme phản ánh cực trị giảm được theo dõi trong nhịp điều chỉnh.

Trong Impulse giảm, Counter Extreme phản ánh cực trị tăng ngược hướng.

Đây là giá trị quan trọng vì được sử dụng trong:

  • Tính độ sâu External Retracement.
  • Xác nhận Pullback Active.
  • Tính Structural Stop của Trend Entry.

Counter Extreme không phải một mức Fibonacci cố định.

Giá trị này có thể tiếp tục thay đổi theo biến động giá.

2.7. External Retracement

Độ sâu điều chỉnh được tính:

External Retracement = |Impulse Extreme − Counter Extreme| / Impulse Span.

Ví dụ:

  • Impulse tăng từ 1,880 lên 1,900.
  • Counter Extreme = 1,893.

External Retracement:

(1,900 − 1,893) / 20 = 0.35.

Điều này có nghĩa giá đã điều chỉnh khoảng 35% so với độ dài Impulse.

Vì 0.35 nằm trong vùng 0.236–0.500, Pullback đáp ứng điều kiện độ sâu.

2.8. Fibonacci 0.236–0.500

CNPS 48 sử dụng hai mức Fibonacci làm ranh giới vùng Pullback.

Với một Impulse tăng từ 1,880 đến 1,900:

Impulse Span:

20 điểm.

Fibonacci 0.236:

1,900 − 20 × 0.236 = 1,895.28.

Fibonacci 0.500:

1,900 − 20 × 0.500 = 1,890.

Vùng Pullback:

1,890–1,895.28.

Trong Impulse tăng, đây là khu vực giá điều chỉnh xuống từ Extreme.

Với Impulse giảm, công thức được áp dụng theo hướng ngược lại.

2.9. Pullback Active

CNPS 48 xác nhận Pullback Active khi:

External Retracement ≥ 0.236.

Đồng thời:

External Retracement < 0.500.

Đây là điều kiện rất quan trọng.

Chiến lược sử dụng dấu nhỏ hơn nghiêm ngặt ở biên sâu.

Vì vậy:

  • Retracement 0.236: Hợp lệ.
  • Retracement 0.350: Hợp lệ.
  • Retracement 0.499: Hợp lệ.
  • Retracement 0.500: Không hợp lệ.
  • Retracement 0.550: Không hợp lệ.

Do đó, không nên hiểu vùng Fibonacci từ 0.236 đến 0.500 bao gồm cả hai biên.

2.10. Fibonacci Zone Touch

Sau khi Pullback Active, CNPS 48 kiểm tra giá đã chạm ranh giới Fibonacci nông hay chưa.

Với Impulse tăng:

Source Low ≤ Shallow Fib.

Với Impulse giảm:

Source High ≥ Shallow Fib.

Nếu hợp lệ, bot lưu:

Pullback Touch Bar = Current Bar Index.

Dữ liệu này được sử dụng để xác định tín hiệu MACD có xuất hiện đủ gần thời điểm giá chạm vùng Pullback hay không.

2.11. Trigger Window 5 nến

Mặc định:

Trigger Window Bars = 5.

Điều kiện Pullback Recent:

  • Pullback hiện tại vẫn Active.
  • Đã có Pullback Touch Bar.
  • Số nến từ lần Touch gần nhất không vượt 5.

Công thức:

Current Bar − Pullback Touch Bar ≤ 5.

Ví dụ, giá chạm vùng tại Bar 100.

Nếu vùng Pullback vẫn hợp lệ:

  • Bar 101: Có thể xét.
  • Bar 103: Có thể xét.
  • Bar 105: Có thể xét.
  • Bar 106: Không còn hợp lệ nếu không có lần Touch mới.

Một điểm đáng chú ý là nếu giá tiếp tục chạm ranh giới Fibonacci nông trong các nến sau, bot có thể cập nhật Pullback Touch Bar.

Do đó, Trigger Window có thể được làm mới bởi những lần Touch mới.

2.12. Pullback Recent không phải tín hiệu giá đã phục hồi

Trong CNPS 48, việc Pullback Recent hợp lệ không có nghĩa giá bắt buộc phải xuất hiện một nến tăng mạnh hoặc vượt High của cây nến trước.

Nó chỉ xác định vùng điều chỉnh đã được chạm trong thời gian gần.

Theo mặc định, các bộ lọc Candle Body và Fib Reclaim đều tắt.

Vì vậy, thời điểm Entry chủ yếu phụ thuộc vào sự đồng thuận giữa cấu trúc External Impulse và MACD.

2.13. Fast MACD

CNPS 48 sử dụng Fast MACD trên khung thời gian biểu đồ hiện tại.

Thông số mặc định:

MACD 12/26/9.

Ba thành phần gồm:

  • MACD Line.
  • Signal Line.
  • Histogram.

Chiến lược hỗ trợ ba phương pháp xác nhận.

State: MACD Line nằm trên hoặc dưới Signal Line.

State + Momentum: MACD Line vừa đúng phía Signal và tiếp tục tăng hoặc giảm theo hướng giao dịch.

Fresh Cross: MACD Line vừa cắt qua Signal Line trên cây nến hiện tại.

2.14. Fast MACD – State

Đây là cấu hình mặc định.

Long:

Fast MACD > Fast Signal.

Short:

Fast MACD < Fast Signal.

Ví dụ:

  • Fast MACD = 1.20.
  • Fast Signal = 0.80.

Fast Bull State hợp lệ.

Bot không yêu cầu MACD vừa cắt lên Signal ở nến này.

Một giao dịch vẫn có thể được xét khi MACD đã nằm trên Signal từ trước, miễn các điều kiện còn lại hợp lệ.

Đây là một yếu tố giúp giảm độ khắt khe của tín hiệu trong V3.

2.15. Fast MACD – State + Momentum

Nếu chuyển sang chế độ này:

Long yêu cầu:

Fast MACD > Fast Signal.

Fast MACD hiện tại > Fast MACD nến trước.

Short yêu cầu:

Fast MACD < Fast Signal.

Fast MACD hiện tại < Fast MACD nến trước.

Chế độ này bổ sung yêu cầu MACD Line tiếp tục di chuyển đúng hướng.

Ví dụ, MACD vẫn trên Signal nhưng bắt đầu giảm so với nến trước thì không đạt Fast Long Trigger.

2.16. Fast MACD – Fresh Cross

Ở chế độ Fresh Cross, bot yêu cầu sự kiện giao cắt mới.

Long:

MACD Line vừa cắt lên Signal Line.

Short:

MACD Line vừa cắt xuống Signal Line.

Đây là chế độ chặt chẽ hơn về thời điểm xuất hiện tín hiệu.

Nếu MACD đã cắt lên từ nhiều nến trước, một Long Signal sẽ không được xác nhận chỉ vì MACD vẫn nằm trên Signal.

Tuy nhiên, điều này không bảo đảm Fresh Cross có kết quả giao dịch tốt hơn State.

2.17. Slow MACD – Xác nhận xu hướng khung lớn

Slow MACD sử dụng bộ tham số 12/26/9 nhưng có thể được tính trên khung thời gian khác Fast MACD.

Theo mặc định:

Slow Timeframe = Chart Timeframe × 4.

Ví dụ:

  • Chart M1 → Slow MACD M4.
  • Chart M3 → Slow MACD M12.
  • Chart M5 → Slow MACD M20.
  • Chart M15 → Slow MACD H1.

Điểm quan trọng là Slow MACD trong CNPS 48 không đồng nghĩa MACD có chu kỳ dài hơn.

Cả Fast MACD và Slow MACD đều mặc định sử dụng 12/26/9.

Sự khác biệt chủ yếu đến từ khung thời gian dữ liệu.

2.18. Slow MACD sử dụng nến HTF đã đóng

Khi Timeframe Multiplier lớn hơn 1, CNPS 48 yêu cầu MACD và Signal của cây nến khung cao hơn trước đó.

Source sử dụng giá trị [1] trong request.security() với lookahead_on.

Do đó, bộ lọc xu hướng sử dụng dữ liệu HTF đã hoàn tất, thay vì trực tiếp sử dụng giá trị MACD đang thay đổi của cây nến HTF hiện tại.

Cách này hạn chế tình trạng tín hiệu HTF thay đổi liên tục trong thời gian cây nến lớn chưa đóng.

Nếu Timeframe Multiplier bằng 1, bot sử dụng Slow MACD tính trực tiếp trên khung biểu đồ.

2.19. Slow MACD Rule

CNPS 48 hỗ trợ ba lựa chọn.

Line > 0

Long:

Slow MACD > 0.

Short:

Slow MACD < 0.

Đây là cấu hình mặc định.

Line > Signal

Long:

Slow MACD > Slow Signal.

Short:

Slow MACD < Slow Signal.

Both

Long:

Slow MACD > 0 và Slow MACD > Slow Signal.

Short:

Slow MACD < 0 và Slow MACD < Slow Signal.

Như vậy, chế độ Both yêu cầu cả vị trí so với Zero và vị trí so với Signal Line đồng thuận.

2.20. Trend Context

CNPS 48 kết hợp hướng External Impulse với Slow MACD để xác định bối cảnh xu hướng.

Trend Up:

Impulse Direction = Bullish.

Slow MACD xác nhận Bullish.

Trend Down:

Impulse Direction = Bearish.

Slow MACD xác nhận Bearish.

Đây là lớp xác nhận quan trọng trước khi Fast MACD được sử dụng làm Trigger.

2.21. Optional Quality Filters

CNPS 48 có hai bộ lọc bổ sung nhưng mặc định tắt.

Require Shallow Fib Reclaim

Long yêu cầu:

Close > Shallow Fib.

Short yêu cầu:

Close < Shallow Fib.

Trigger Candle Body Filter

Long yêu cầu nến tăng và Body Ratio đạt ngưỡng.

Short yêu cầu nến giảm và Body Ratio đạt ngưỡng.

Minimum Body Ratio mặc định là 0.20.

Tuy nhiên, ngưỡng 0.20 chỉ có hiệu lực khi bật Candle Body Filter.

2.22. Counter-Trend Liquidity Sweep

Ngoài Trend Pullback, CNPS 48 hỗ trợ giao dịch ngược xu hướng từ các vùng thanh khoản được suy luận qua Pivot ZigZag.

Theo mặc định:

Use Counter-Trend Sweep = False.

Bộ máy này lưu các Pivot High/Low, sau đó theo dõi:

  • Giá xuyên qua Pivot Level.
  • Giá đóng cửa trở lại phía bên kia Level.
  • Thời gian Close-Back.
  • MACD Divergence nếu được bật.
  • Fast MACD xác nhận hướng giao dịch.

Đây là chiến lược nguồn riêng, không phải điều kiện bắt buộc đối với Trend Pullback.

2.23. Liquidity Sweep và MACD Divergence

Với Pivot High:

Bot theo dõi giá vượt High của Pivot, sau đó đóng cửa trở lại dưới Level.

Với Pivot Low:

Bot theo dõi giá xuyên xuống dưới Low của Pivot, sau đó đóng cửa trở lại trên Level.

Nếu bật Require MACD Divergence, chiến lược còn so sánh Fast MACD trong khoảng Sweep với giá trị MACD tại Pivot tham chiếu.

Tuy nhiên, đây là Divergence được lập trình từ các biến cực trị và MACD, không phải hệ thống phân tích Order Flow hoặc dữ liệu thanh khoản thực tế từ sổ lệnh.

3. Nguyên lý hoạt động của CNPS 48 V3

Quy trình chính:

ZigZag ATR → External Impulse → Fibonacci Pullback → Slow MACD HTF → Fast MACD Trigger → Structural Risk → Final Entry → Stop Loss / TP2R.

Bước 1: Tính ATR

CNPS 48 tính ATR theo ZigZag ATR Length.

Mặc định là ATR10.

Giá trị này được sử dụng trong cả ngưỡng đảo chiều ZigZag và ATR Stop Buffer.

Bước 2: Theo dõi các cực trị ZigZag

Bot duy trì High/Low và những cực trị tạm thời theo hướng hiện tại.

Khi giá di chuyển ngược hướng đủ ngưỡng ATR, chiến lược xác nhận Pivot.

Bước 3: Xây dựng External Impulse

Từ các Pivot đã xác nhận, bot lưu Impulse Origin, Impulse Extreme và Impulse Direction.

Khi xuất hiện Pivot cùng hướng mở rộng cấu trúc, Impulse Extreme có thể được cập nhật.

Bước 4: Xử lý kết thúc External Impulse

Nếu một Pivot ngược hướng tạo mức Retracement đạt External End Threshold, bot chuyển hướng External Impulse.

Theo mặc định, ngưỡng này là 0.50.

Bước 5: Theo dõi Counter Extreme

Trong thời gian External Impulse tồn tại, bot theo dõi cực trị điều chỉnh ngược hướng.

Giá trị Counter Extreme được sử dụng để tính độ sâu Retracement.

Bước 6: Tính vùng Fibonacci

Bot tính Impulse Span và hai mức Fibonacci 0.236, 0.500.

Vùng được cập nhật theo Origin và Extreme hiện tại.

Bước 7: Xác nhận Pullback Active

Khi External Retracement đạt ít nhất 0.236 và nhỏ hơn 0.500, Pullback Active được bật.

Bước 8: Ghi nhận Fibonacci Touch

Bot kiểm tra giá đã chạm biên Fibonacci nông hay chưa.

Nếu có, Pullback Touch Bar được cập nhật.

Bước 9: Kiểm tra Trigger Window

Bot chỉ xét Trend Signal khi lần Touch gần nhất nằm trong cửa sổ 5 nến và Pullback vẫn Active.

Bước 10: Xác nhận Slow MACD

Với Long, Slow MACD phải xác nhận Bullish.

Với Short, Slow MACD phải xác nhận Bearish.

Theo mặc định, đây là điều kiện MACD Line đúng phía đường Zero.

Bước 11: Xác nhận Fast MACD

Fast MACD được kiểm tra theo Trigger Mode.

Mặc định là State.

Long yêu cầu MACD Line > Signal Line.

Short yêu cầu MACD Line < Signal Line.

Bước 12: Kiểm tra Optional Quality

Nếu người dùng bật Fib Reclaim hoặc Candle Body Filter, bot áp dụng các điều kiện bổ sung.

Theo mặc định, hai bộ lọc này được bỏ qua.

Bước 13: Kiểm tra giới hạn một giao dịch trên Extreme hiện tại

Bot lưu Bar Index của Impulse Extreme đã được sử dụng để giao dịch.

Nếu Extreme hiện tại trùng với Extreme đã giao dịch, chiến lược không tạo thêm Trend Entry từ cùng Extreme đó.

Bước 14: Tạo Trend Source Signal

Với Long, bot yêu cầu:

  • Pullback Recent.
  • Chưa giao dịch Extreme hiện tại.
  • Trend Up hợp lệ.
  • Fast MACD Long hợp lệ.
  • Optional Quality đạt.
  • Nến đã đóng cửa.

Short sử dụng logic tương ứng.

Bước 15: Xử lý Counter-Trend nếu bật

Nếu người dùng bật Counter-Trend, bot kiểm tra Liquidity Sweep, MACD Divergence và Fast MACD.

Một Counter-Trend Signal hợp lệ có thể đóng góp vào Raw Long/Short Signal.

Tuy nhiên, hệ thống mặc định chỉ sử dụng Trend Signals.

Bước 16: Xác định Structural Stop

Với Trend Long:

Stop = Min(Counter Extreme, Low hiện tại) − ATR Buffer.

Với Trend Short:

Stop = Max(Counter Extreme, High hiện tại) + ATR Buffer.

Nếu Counter Extreme không có dữ liệu, bot sử dụng Low hoặc High hiện tại theo hướng tương ứng.

Bước 17: Kiểm tra Risk Distance

Bot tính khoảng cách giữa Close tín hiệu và Stop.

Risk phải lớn hơn Minimum Tick.

Nếu Risk Distance Filter được bật, Risk còn phải nằm trong khoảng Minimum/Maximum Risk.

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

Bot yêu cầu:

  • Chiến lược đang Flat.
  • Entry Session hợp lệ.
  • Cooldown hợp lệ.
  • Trade Limit hợp lệ.
  • Risk hợp lệ.
  • Hướng giao dịch được phép.

Bước 19: Gửi Final Entry

Khi tất cả điều kiện đạt, bot gửi Long hoặc Short với số hợp đồng đã thiết lập.

Theo mặc định:

3 hợp đồng.

Nếu là Trend Entry, bot lưu Extreme Bar đã được giao dịch.

Bước 20: Khởi tạo quản trị vị thế

Sau khi chiến lược nhận diện vị thế mới, bot lấy giá khớp trung bình.

Stop được sử dụng từ Pending Structural Stop đã lưu.

Actual Initial Risk được tính từ Entry Price và Stop Price.

Bước 21: Tính Take Profit

Mặc định:

Take Profit = 2R.

Long:

TP = Entry + Actual Risk × 2.

Short:

TP = Entry − Actual Risk × 2.

Bước 22: Break Even nếu bật

Khi Maximum Profit R đạt ngưỡng đã chọn, Stop có thể được điều chỉnh về Entry cộng hoặc trừ Offset.

Theo mặc định, Break Even tắt.

Bước 23: Stop Loss, Take Profit và Force Close

Vị thế được quản trị qua Stop Loss và Take Profit.

Ngoài ra, bot yêu cầu đóng toàn bộ khi cây nến đi qua mốc Force Close 14:45.

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

4.1. Long – External Impulse Fibonacci Pullback

Một Trend Long theo cấu hình mặc định yêu cầu:

  1. External Impulse hợp lệ.
  2. Impulse Direction = Bullish.
  3. Slow MACD khung cao hơn > 0.
  4. External Retracement ≥ 0.236.
  5. External Retracement < 0.500.
  6. Giá đã chạm Shallow Fib.
  7. Pullback Touch nằm trong cửa sổ 5 nến.
  8. Fast MACD > Fast Signal.
  9. Extreme hiện tại chưa được giao dịch.
  10. Nến đã xác nhận đóng cửa.
  11. Risk Distance lớn hơn Minimum Tick.
  12. Chiến lược đang Flat.
  13. Entry Session hợp lệ.
  14. Trade Direction cho phép Long.
  15. Trade Limit và Cooldown hợp lệ.

Trong cấu hình mặc định, bot không bắt buộc Long Trigger phải là nến tăng.

4.2. Ví dụ Long minh họa

Giả sử External Impulse tăng:

  • Impulse Origin = 1,880.
  • Impulse Extreme = 1,900.
  • Impulse Span = 20 điểm.

Fibonacci 0.236:

1,895.28.

Fibonacci 0.500:

1,890.

Giá điều chỉnh với Counter Extreme bằng 1,893.

External Retracement:

(1,900 − 1,893) / 20 = 0.35.

Điều kiện Pullback Active hợp lệ.

Giả sử cây nến gần nhất có:

  • Low = 1,894.
  • Close = 1,896.
  • ATR10 = 4.
  • Slow MACD HTF = +0.80.
  • Fast MACD = +1.20.
  • Fast Signal = +0.70.

Giá Low đã chạm dưới Shallow Fib 1,895.28.

Slow MACD dương, đồng thuận với External Impulse tăng.

Fast MACD nằm trên Signal.

Nếu Extreme chưa được giao dịch và các điều kiện Session hợp lệ, bot có thể tạo Trend Long.

Stop Buffer:

4 × 0.25 = 1 điểm.

Structural Stop:

Min(1,893; 1,894) − 1 = 1,892.

Risk dự kiến:

1,896 − 1,892 = 4 điểm.

Giả sử lệnh Long khớp tại 1,896:

  • Entry = 1,896.
  • Stop Loss = 1,892.
  • Actual Risk = 4 điểm.

Take Profit 2R:

1,896 + 4 × 2 = 1,904.

Đây là ví dụ minh họa cách tính, không phải tín hiệu giao dịch thực tế.

4.3. Short – External Impulse Fibonacci Pullback

Một Trend Short yêu cầu:

  1. External Impulse hợp lệ.
  2. Impulse Direction = Bearish.
  3. Slow MACD khung cao hơn < 0.
  4. Retracement từ 0.236 đến dưới 0.500.
  5. Giá đã chạm Shallow Fib.
  6. Pullback Recent hợp lệ.
  7. Fast MACD < Fast Signal.
  8. Extreme hiện tại chưa được giao dịch.
  9. Nến đã xác nhận.
  10. Risk hợp lệ.
  11. Điều kiện Session, Trade Direction và Trade Limit hợp lệ.

4.4. Ví dụ Short minh họa

Giả sử External Impulse giảm:

  • Origin = 1,900.
  • Extreme = 1,880.
  • Span = 20 điểm.

Fibonacci 0.236:

1,884.72.

Fibonacci 0.500:

1,890.

Giá hồi lên, Counter Extreme đạt 1,887.

Retracement:

(1,887 − 1,880) / 20 = 0.35.

Vùng Pullback hợp lệ.

Giả sử:

  • High hiện tại = 1,886.
  • Close = 1,884.
  • ATR10 = 4.
  • Slow MACD = −0.90.
  • Fast MACD = −1.10.
  • Fast Signal = −0.60.

Slow MACD xác nhận Bearish.

Fast MACD nằm dưới Signal.

Nếu các điều kiện còn lại đạt, Trend Short có thể hợp lệ.

Structural Stop:

Max(1,887; 1,886) + 1 = 1,888.

Risk dự kiến:

1,888 − 1,884 = 4 điểm.

Giả sử Short khớp tại 1,884:

  • Stop Loss = 1,888.
  • Take Profit 2R = 1,876.

4.5. Long không bắt buộc MACD vừa cắt lên

Theo Fast Trigger Mode mặc định là State, Fast MACD chỉ cần đang nằm trên Signal.

Ví dụ:

  • Bar 100: MACD cắt lên Signal.
  • Bar 101: MACD vẫn trên Signal.
  • Bar 102: MACD vẫn trên Signal.

Nếu Pullback Recent hợp lệ tại Bar 102, bot vẫn có thể tạo Long.

Đây là khác biệt lớn so với Fresh Cross.

4.6. Không bắt buộc giá đóng cửa vượt lại Shallow Fib

Theo mặc định:

Require Shallow Fib Reclaim = False.

Do đó, bot có thể xác nhận Trend Long khi Close vẫn nằm trong vùng Fibonacci, miễn các điều kiện khác hợp lệ.

Nếu bật Reclaim:

  • Long phải Close > Shallow Fib.
  • Short phải Close < Shallow Fib.

Đây là tùy chọn dành cho người dùng muốn yêu cầu giá có thêm dấu hiệu phục hồi khỏi vùng điều chỉnh nông trước khi Entry.

4.7. Không bắt buộc Trigger Candle có thân đủ lớn

Candle Body Filter mặc định tắt.

Vì vậy, một cây nến thân nhỏ vẫn có thể tạo Trend Entry nếu MACD và cấu trúc hợp lệ.

Khi bật, Long yêu cầu nến tăng và Body Ratio ≥ 0.20.

Short yêu cầu nến giảm và Body Ratio ≥ 0.20.

4.8. Không được giao dịch lặp lại cùng Impulse Extreme

CNPS 48 sử dụng biến:

Traded Extreme Bar.

Sau khi một Trend Entry được gửi, bot lưu Bar Index của Impulse Extreme.

Nếu tín hiệu mới xuất hiện trong khi Impulse Extreme vẫn có cùng Bar Index, bot không tạo Trend Entry khác.

Tuy nhiên, nếu Impulse tiếp tục mở rộng và tạo Extreme mới tại một Bar Index khác, điều kiện này có thể được đáp ứng trở lại.

Vì vậy, đây là giới hạn theo Extreme Bar, không phải giới hạn cứng một giao dịch cho toàn bộ External Impulse trong mọi trường hợp.

4.9. Counter-Trend Long

Nếu bật Counter-Trend, bot có thể tìm Long tại Liquidity Sweep phía dưới.

Quy trình:

  1. Pivot Low đã được ghi nhận.
  2. Giá xuyên xuống dưới Pivot Low.
  3. Giá đóng cửa trở lại trên Level trong thời hạn Close-Back.
  4. MACD Divergence đạt yêu cầu nếu bật.
  5. Counter Setup được tạo.
  6. Fast MACD xác nhận Long.
  7. Close > Counter Level.
  8. Risk và điều kiện Entry hợp lệ.

Theo mặc định, Counter-Trend đang tắt.

4.10. Counter-Trend Short

Counter-Trend Short áp dụng với Pivot High.

Quy trình:

  1. Giá xuyên qua Pivot High.
  2. Đóng cửa trở lại dưới Level.
  3. Divergence hợp lệ nếu yêu cầu.
  4. Counter Setup được tạo.
  5. Fast MACD xác nhận Short.
  6. Close < Counter Level.
  7. Risk và điều kiện Entry hợp lệ.

Khác với Trend Entry, Counter-Trend Stop được tính từ Sweep Wick cộng hoặc trừ ATR Buffer.

4.11. Long Signal được ưu tiên khi hai nguồn xung đột

CNPS 48 kết hợp Trend và Counter-Trend Signals.

Raw Long là kết quả của Trend Long hoặc Counter Long.

Raw Short là kết quả của Trend Short hoặc Counter Short.

Tuy nhiên, Source Short chỉ hợp lệ khi không đồng thời có Raw Long.

Vì vậy, nếu Raw Long và Raw Short cùng xuất hiện trên một nến, chiến lược ưu tiên Source Long trong logic kết hợp.

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

5.1. Structural Stop cho Trend Long

Với Trend Long:

Stop = Min(Counter Extreme, Low hiện tại) − ATR Buffer.

Mặc định:

ATR Buffer = ATR10 × 0.25.

Ví dụ:

  • Counter Extreme = 1,895.
  • Low hiện tại = 1,897.
  • ATR10 = 4.

Stop:

Min(1,895; 1,897) − 1 = 1,894.

Bot sử dụng mức này để tính Risk dự kiến.

5.2. Structural Stop cho Trend Short

Với Trend Short:

Stop = Max(Counter Extreme, High hiện tại) + ATR Buffer.

Ví dụ:

  • Counter Extreme = 1,905.
  • High hiện tại = 1,903.
  • ATR10 = 4.

Stop:

Max(1,905; 1,903) + 1 = 1,906.

5.3. Stop cho Counter-Trend

Nếu giao dịch Counter-Trend, bot sử dụng Sweep Wick.

Counter Long:

Stop = Sweep Low − ATR Buffer.

Counter Short:

Stop = Sweep High + ATR Buffer.

Mức Stop không được tính bằng một số điểm cố định.

Do đó, khoảng Stop phụ thuộc vào độ sâu của Sweep và ATR hiện tại.

5.4. Risk Distance Filter

CNPS 48 hỗ trợ lọc khoảng Risk theo số điểm.

Theo mặc định:

Use Risk Distance Filter = False.

Các giá trị được cấu hình sẵn:

  • Minimum Risk = 1.5 điểm.
  • Maximum Risk = 12 điểm.

Khi bộ lọc tắt, các giới hạn 1.5–12 điểm không được dùng để loại Final Entry.

Bot vẫn yêu cầu Risk Distance phải lớn hơn Minimum Tick.

Khi bật bộ lọc, Risk dự kiến còn phải nằm trong khoảng đã chọn.

5.5. Risk không bị ép về khoảng giới hạn

Khi bật Risk Distance Filter, bot chỉ kiểm tra Candidate Risk.

Nếu Risk vượt Maximum Risk, tín hiệu bị từ chối.

Bot không tự động kéo Stop lại gần để đưa Risk về 12 điểm.

Tương tự, nếu Risk dưới Minimum Risk, bot không tự động nới Stop.

5.6. Actual Risk sau khi khớp

Khi Final Entry được gửi, bot lưu Pending Stop Price.

Sau khi vị thế được nhận diện, bot lấy:

Entry Price = Strategy Position Average Price.

Với Long:

Actual Risk = Entry − Pending Stop.

Với Short:

Actual Risk = Pending Stop − Entry.

Do Stop được lưu thành một mức giá, Actual Risk có thể khác Risk Distance tính từ Close của cây nến tín hiệu nếu giá khớp khác Close.

5.7. Take Profit 2R

Theo mặc định:

Target R = 2.0.

Long:

Take Profit = Entry + Actual Risk × 2.

Short:

Take Profit = Entry − Actual Risk × 2.

Ví dụ:

  • Long Entry = 1,900.
  • Stop = 1,895.
  • Actual Risk = 5 điểm.

Target:

1,900 + 5 × 2 = 1,910.

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

2R.

5.8. Không có Take Profit từng phần

CNPS 48 sử dụng một Target cho mỗi vị thế.

Chiến lược không chia 3 hợp đồng thành các mức TP1/TP2/TP3 khác nhau.

Toàn bộ vị thế được quản trị bằng Stop Loss và Take Profit tương ứng với Entry.

5.9. Break Even

CNPS 48 hỗ trợ Break Even nhưng mặc định tắt.

Thông số:

  • Use Break Even: False.
  • Break Even Trigger: 1R.
  • Offset: 0.5 điểm.

Khi bật, bot theo dõi Maximum Profit R.

Với Long:

Break Even Stop = Entry + 0.5 điểm.

Với Short:

Break Even Stop = Entry − 0.5 điểm.

5.10. Maximum Profit R

Với Long:

Profit R = (High − Entry) / Actual Risk.

Với Short:

Profit R = (Entry − Low) / Actual Risk.

Sau đó, bot lưu giá trị lớn nhất từng ghi nhận trong vị thế.

Khi Maximum Profit R đạt ngưỡng, Break Even có thể được kích hoạt nếu công tắc đang bật.

5.11. Break Even chỉ điều chỉnh Stop theo hướng bảo vệ

Với Long:

Active Stop = Max(Current Stop, Entry + Offset).

Với Short:

Active Stop = Min(Current Stop, Entry − Offset).

Do đó, Break Even không đưa Stop về một mức kém bảo vệ hơn nếu Stop hiện tại đã nằm ở vị trí tốt hơn.

5.12. Không có Profit Trailing độc lập

Trong phiên bản V3 được cung cấp, CNPS 48 không có một hệ thống ATR Profit Trailing hoặc Dynamic Trend Trail hoạt động liên tục sau Entry.

Các phương pháp quản trị chính gồm:

  • Structural Stop ban đầu.
  • Take Profit 2R.
  • Break Even tùy chọn.
  • Force Close cuối phiên.

Vì vậy, không nên mô tả CNPS 48 là một chiến lược có Smart Trailing Stop nhiều cấp độ.

5.13. Force Close cuối phiên

CNPS 48 sử dụng:

Force Close = 14:45.

Khi phát hiện cây nến có thời điểm mở trước 14:45 và thời điểm đóng từ 14:45 trở đi, bot gọi:

strategy.close_all(immediately=true)

để yêu cầu đóng toàn bộ vị thế.

5.14. Tổng hợp quản trị rủi ro

Cơ chếMặc địnhVai trò
Trend Structural StopBậtCounter Extreme + ATR Buffer
Counter-Trend StopTùy chọnSweep Wick + ATR Buffer
ATR Buffer0.25 ATRKhoảng đệm Stop
Risk Distance FilterTắtLọc khoảng Risk
Minimum Risk1.5 điểmCó hiệu lực khi bật Filter
Maximum Risk12 điểmCó hiệu lực khi bật Filter
Take Profit2RTarget toàn vị thế
Break EvenTắtDời Stop tại 1R
Break Even Offset0.5 điểmMức Stop sau BE
Profit TrailingKhông cóKhông áp dụng
Opposite Signal ExitKhông cóKhông đóng riêng theo MACD đối lập
Force Close14:45Đóng cuối phiên

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

Bước 1: Mở biểu đồ giao dịch

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

CNPS 48 sử dụng ZigZag, MACD và Fibonacci theo dữ liệu biểu đồ.

Vì Slow MACD mặc định sử dụng khung thời gian gấp 4 lần Chart Timeframe, việc thay đổi khung biểu đồ sẽ thay đổi cả bộ máy tín hiệu nhanh và bộ lọc chậm.

Bước 2: Thêm mã nguồn

  1. Mở TradingView.
  2. Chọn Pine Editor.
  3. Tạo một Strategy mới.
  4. Dán mã nguồn CNPS48 IMPULSE FIB DOUBLE MACD V3 SOURCE FREQUENCY.
  5. Lưu mã nguồn.
  6. Chọn Add to chart.
  7. Kiểm tra Fibonacci Pullback Zone.
  8. Mở Strategy Tester.

Tên chiến lược:

CNPS48 IMPULSE FIB DOUBLE MACD V3 SOURCE FREQUENCY

Short Title:

CNPS48 IFDM V3

Phiên bản:

//@version=6

Bước 3: Cấu hình Impulse Engine

Thông sốMặc định
ZigZag ATR Length10
ZigZag Reversal x ATR1.00
External End Threshold0.50
Use WicksBật

Nhóm này quyết định cách ZigZag xác nhận Pivot và xây dựng External Impulse.

Nếu tăng ZigZag Reversal ATR Multiplier, chiến lược yêu cầu giá đảo chiều xa hơn trước khi xác nhận Pivot.

Nếu giảm Multiplier, các Pivot có thể được xác nhận với những biến động nhỏ hơn.

Tuy nhiên, việc thay đổi ngưỡng có thể làm biến đổi toàn bộ cấu trúc Impulse và vị trí vùng Fibonacci.

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

Thông sốMặc định
Pullback Zone From0.236
Pullback Zone To0.500
Trigger Window5 nến
Use Trend PullbackBật

Nhóm này quyết định độ sâu điều chỉnh và khoảng thời gian cho phép MACD xác nhận.

Nếu tăng Pullback Max, vùng chấp nhận điều chỉnh rộng hơn.

Nếu giảm, bot chỉ xem xét những Pullback nông hơn.

Cần kiểm tra sự tương thích giữa Pullback Max và External Impulse End Threshold vì cả hai đều liên quan đến tỷ lệ điều chỉnh nhưng được sử dụng ở những giai đoạn khác nhau.

Bước 5: Cấu hình Fast MACD

Thông sốMặc định
Fast12
Slow26
Signal9
Trigger ModeState

Ba lựa chọn Trigger Mode:

State: MACD nằm đúng phía Signal.

State + Momentum: MACD nằm đúng phía Signal và tiếp tục tăng/giảm.

Fresh Cross: MACD vừa giao cắt Signal.

Nếu mục tiêu là giữ cách tiếp cận V3 gần với tần suất tín hiệu nguồn, State là lựa chọn mặc định.

Bước 6: Cấu hình Slow MACD

Thông sốMặc định
Fast12
Slow26
Signal9
Timeframe Multiplier4
RuleLine > 0

Nếu giao dịch trên M1, Slow MACD mặc định dùng M4.

Nếu giao dịch trên M5, Slow MACD mặc định dùng M20.

Có thể thử nghiệm:

  • Line > 0.
  • Line > Signal.
  • Both.

Lưu ý rằng Slow MACD khung cao hơn sử dụng dữ liệu nến HTF đã đóng khi Multiplier lớn hơn 1.

Bước 7: Cấu hình Optional Quality

Thông sốMặc định
Require Shallow Fib ReclaimTắt
Use Trigger Candle Body FilterTắt
Minimum Body/Range0.20

Đây là nhóm tham số có thể làm thay đổi số lượng tín hiệu.

Nếu bật Fib Reclaim, giá phải đóng cửa ra khỏi biên Fibonacci nông theo hướng giao dịch.

Nếu bật Body Filter, nến phải có hướng và tỷ lệ thân phù hợp.

Nên kiểm thử độc lập từng bộ lọc trước khi bật đồng thời.

Bước 8: Cấu hình Counter-Trend

Thông sốMặc định
Use Counter-Trend SweepTắt
Close-Back Window3 nến
Maximum Liquidity Levels20
Require MACD DivergenceBật

Counter-Trend không phải thành phần mặc định của chiến lược Trend Pullback.

Khi bật, bot bổ sung các tín hiệu giao dịch từ Liquidity Sweep.

Để đánh giá riêng hiệu quả Counter-Trend, có thể tắt Trend Pullback khi kiểm thử.

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

Thông sốMặc định
Stop Buffer x ATR0.25
Target R2.0
Use Risk Distance FilterTắt
Minimum Risk1.5 điểm
Maximum Risk12 điểm

Theo mặc định, khoảng Stop chỉ cần lớn hơn Minimum Tick.

Nếu bật Risk Filter, bot tiếp tục giới hạn Risk dự kiến trong khoảng đã thiết lập.

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

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

Break Even được kích hoạt khi Maximum Profit R đạt ngưỡng đã chọn.

Nên so sánh kết quả giữa cấu hình mặc định và cấu hình bật Break Even để đánh giá tác động đến Average Win và Maximum Drawdown.

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

Thông sốMặc định
Trade DirectionBoth
Position Size3 hợp đồng
Maximum Trades Per Day0 – Không giới hạn
Cooldown0

Trade Direction hỗ trợ Long, Short và Both.

Maximum Trades Per Day bằng 0 có nghĩa không giới hạn số lần gửi Entry theo ngày.

Cooldown bằng 0 không có nghĩa bot bỏ qua toàn bộ điều kiện thời gian sau Exit, vì mã nguồn vẫn sử dụng phép so sánh Bar Index.

Bước 12: 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 48 sử dụng một cửa sổ Entry liên tục theo đồng hồ.

Mã nguồn không có bộ lọc nghỉ trưa riêng.

Tuy nhiên, việc có thể phát sinh Entry trong một khoảng thời gian nhất định còn phụ thuộc dữ liệu nến thực tế.

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

Thành phầnMặc định
External Impulse Origin/ExtremeTắt
Fibonacci Pullback ZoneBật
Trend/Counter Signal MarkersTắt
Active Stop Loss/Take ProfitBật
DiagnosticsTắt

Các mức Fibonacci được hiển thị màu cam.

Active Stop Loss màu đỏ.

Active Take Profit màu xanh.

Nếu bật External Impulse, bot hiển thị Origin và Extreme để hỗ trợ quan sát cấu trúc.

Khi bật Signal Markers, biểu đồ phân biệt tín hiệu Trend và Counter-Trend.

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

CNPS 48 có bảng Diagnostics 2 cột × 16 hàng.

Những thông tin chính:

  • Chart Timeframe.
  • Impulse Direction.
  • External Retracement.
  • Pullback Active.
  • Pullback Recent.
  • Slow MACD State.
  • Fast MACD State.
  • Trend Buy.
  • Trend Sell.
  • Signal Risk.
  • Risk Validation.
  • Entry Session.
  • Trades Today.
  • Active Setup.
  • Active Stop.
  • Position.

Ví dụ:

Impulse: BULL.

Retracement: 0.350.

PB Active: YES.

PB Recent: YES.

Slow MACD: BULL.

Fast State: BULL.

Bảng này hỗ trợ xác định những điều kiện kỹ thuật đang hợp lệ.

Tuy nhiên, Diagnostics không thể hiện đầy đủ mọi nguyên nhân khiến Final Entry bị từ chối.

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

Những chỉ số cần theo dõi:

  • Net Profit.
  • Maximum Drawdown.
  • Profit Factor.
  • Percent Profitable.
  • Total Trades.
  • Average Trade.
  • Average Winning Trade.
  • Average Losing Trade.

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

Thử nghiệm 1: Fast MACD State mặc định.

Thử nghiệm 2: Fast MACD State + Momentum.

Thử nghiệm 3: Fast MACD Fresh Cross.

Thử nghiệm 4: Slow MACD Line > 0.

Thử nghiệm 5: Slow MACD Line > Signal.

Thử nghiệm 6: Slow MACD Both.

Thử nghiệm 7: Slow Timeframe Multiplier 2, 4 và 6.

Thử nghiệm 8: Fibonacci Pullback 0.236–0.500.

Thử nghiệm 9: Điều chỉnh Pullback Min/Max.

Thử nghiệm 10: Trigger Window 3, 5 và 8 nến.

Thử nghiệm 11: Bật Fib Reclaim.

Thử nghiệm 12: Bật Candle Body Filter.

Thử nghiệm 13: Bật Risk Distance Filter.

Thử nghiệm 14: Target 2R so với 1.5R hoặc 2.5R.

Thử nghiệm 15: Bật Break Even tại 1R.

Thử nghiệm 16: Bật Counter-Trend Sweep.

Thử nghiệm 17: Counter-Trend có và không có MACD Divergence.

Thử nghiệm 18: Giới hạn Maximum Trades Per Day.

Thử nghiệm 19: Thêm Cooldown After Exit.

Thử nghiệm 20: So sánh kết quả trên M1 và M5.

Theo mã nguồn:

  • Initial Capital: 100,000,000 VNĐ.
  • Position Size mặc định: 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.

Đây là các giả định của Strategy Tester, không phản ánh đầy đủ điều kiện ký quỹ và thực thi giao dịch thực tế.

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

CNPS 48 hỗ trợ cảnh báo qua Order Fill Events trên TradingView.

Để thiết lập:

  1. Mở biểu đồ có CNPS48 IFDM V3.
  2. Chọn Create Alert.
  3. Trong Condition, chọn chiến lược CNPS48.
  4. Chọn cảnh báo từ 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 Trend Entry

Alert MessageÝ nghĩa
ENTRY_LONG_TREND_CNPS48_V3Mở Long theo Trend Pullback
ENTRY_SHORT_TREND_CNPS48_V3Mở Short theo Trend Pullback

Hai thông điệp được sử dụng khi Entry thuộc phương pháp thuận xu hướng.

7.2. Cảnh báo Counter-Trend Entry

Alert MessageÝ nghĩa
ENTRY_LONG_CT_CNPS48_V3Mở Long theo Counter-Trend Sweep
ENTRY_SHORT_CT_CNPS48_V3Mở Short theo Counter-Trend Sweep

Theo mặc định, Counter-Trend đang tắt nên hai loại Entry này không được tạo.

7.3. Cảnh báo Take Profit

Alert MessageÝ nghĩa
EXIT_LONG_TP_CNPS48_V3Long đóng theo TP
EXIT_SHORT_TP_CNPS48_V3Short đóng theo TP

Take Profit mặc định là 2R.

7.4. Cảnh báo Stop Loss

Alert MessageÝ nghĩa
EXIT_LONG_SL_CNPS48_V3Long đóng theo Stop
EXIT_SHORT_SL_CNPS48_V3Short đóng theo Stop

Các mã này được sử dụng khi Break Even chưa kích hoạt.

7.5. Cảnh báo Break Even

Alert MessageÝ nghĩa
EXIT_LONG_BE_CNPS48_V3Long đóng qua Stop sau khi Break Even kích hoạt
EXIT_SHORT_BE_CNPS48_V3Short đóng qua Stop sau khi Break Even kích hoạt

Break Even mặc định tắt.

Nếu bật, mã cảnh báo Stop được thay đổi sau khi Break Even Activated trở thành True.

7.6. Cảnh báo Force Close

Thông điệp:

SESSION_END_CNPS48_V3

Được sử dụng khi bot yêu cầu đóng toàn bộ vị thế cuối phiên.

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

7.7. Disable Exit Alerts

CNPS 48 hỗ trợ:

Disable Exit Alerts?

Mặc định:

False.

Khi bật, bot vô hiệu hóa cảnh báo phát sinh từ các lệnh Stop Loss và Take Profit được tạo bằng strategy.exit().

Tùy chọn này không tự động vô hiệu hóa Entry Alerts hoặc Force Close Alert.

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

CNPS 48 phân biệt được Trend Entry và Counter-Trend Entry ngay trong Alert Message.

Đây là đặc điểm hữu ích nếu muốn thống kê hiệu quả riêng của hai phương pháp.

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

  • External Impulse Direction.
  • Impulse Origin.
  • Impulse Extreme.
  • External Retracement.
  • Fibonacci Shallow/Deep.
  • Fast MACD State.
  • Slow MACD State.
  • Signal Risk.
  • Active Entry Price.
  • Active Stop Loss.
  • Take Profit.
  • Maximum Profit R.
  • Khối lượng khớp.
  • Timeframe.
  • Thời điểm giao dịch.

Để phục vụ hệ thống giám sát hoặc tự động hóa, người dùng có thể bổ sung dữ liệu thông qua TradingView Placeholders hoặc điều chỉnh Pine Script.

Cần phân biệt Order Fill Alert trong TradingView với xác nhận khớp lệnh thực tế tại công ty chứng khoán.

Kết luận

CNPS 48 IMPULSE FIB DOUBLE MACD V3 SOURCE FREQUENCY là chiến lược giao dịch chứng khoán phái sinh kết hợp External Impulse, Fibonacci Pullback và hệ thống xác nhận MACD kép.

Điểm nổi bật của phiên bản V3 là đơn giản hóa các điều kiện xác nhận theo hướng gần hơn với chiến lược nguồn, nhằm khôi phục tần suất tín hiệu sau khi phiên bản trước áp dụng nhiều bộ lọc.

Theo cấu hình mặc định, bot sử dụng ZigZag ATR10 với ngưỡng đảo chiều 1 ATR để xác định các Pivot và xây dựng External Impulse.

Sau đó, chiến lược chờ giá điều chỉnh vào vùng Fibonacci từ 0.236 đến dưới 0.500 của Impulse hiện tại.

Một Pullback hợp lệ cần được ghi nhận trong cửa sổ Trigger 5 nến, đồng thời Slow MACD khung thời gian gấp bốn lần biểu đồ phải xác nhận hướng xu hướng.

Fast MACD trên khung hiện tại đóng vai trò Trigger.

Với Long, Fast MACD phải nằm trên Signal Line.

Với Short, Fast MACD phải nằm dưới Signal Line.

Khác với những hệ thống yêu cầu MACD Crossover mới, CNPS 48 mặc định sử dụng trạng thái MACD đang đồng thuận.

Ngoài ra, bot không bắt buộc Shallow Fib Reclaim hoặc Candle Body Filter trong cấu hình mặc định.

Về quản trị rủi ro, Stop Loss được xác định từ cấu trúc giá kết hợp ATR Buffer 0.25 và Take Profit mặc định 2R.

Chiến lược còn hỗ trợ Break Even, Risk Distance Filter, Cooldown và giới hạn giao dịch trong ngày.

Một bộ máy Counter-Trend dựa trên Liquidity Sweep và MACD Divergence cũng được tích hợp, nhưng mặc định không hoạt động.

Tuy nhiên, việc giảm số lượng bộ lọc không đồng nghĩa chiến lược sẽ có hiệu quả cao hơn trong mọi điều kiện thị trường.

Khi Fast MACD được sử dụng theo State, tín hiệu có thể xuất hiện mà không cần giao cắt mới hoặc nến xác nhận đủ mạnh. Điều này có thể tăng cơ hội giao dịch nhưng cũng làm tăng khả năng tham gia những nhịp hồi chưa thực sự hoàn tất.

Bên cạnh đó, External Impulse và các mức Fibonacci có thể được cập nhật khi ZigZag xác nhận hoặc mở rộng cấu trúc mới.

Do đó, người dùng cần hiểu rõ cách xác định Impulse, điều kiện Pullback Active, sự khác biệt giữa Fast và Slow MACD, cơ chế Structural Stop và giới hạn giao dịch theo Extreme Bar.

Nên kiểm thử riêng các chế độ Fast MACD, Slow MACD Rule, Fibonacci Zone, Optional Quality Filters và Risk Management trên nhiều trạng thái thị trường 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 Fibonacci, MACD, phân tích 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 mang tính chất hướng dẫn sử dụng 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