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

Hướng Dẫn Sử Dụng Bot CNPS45-TREND PULLBACK cho VN30F1M

Hướng dẫn Bot CNPS 45 V3: giao dịch Pullback theo EMA34/89, RSI7, ADX, xác nhận Re-Entry, Stop Loss cấu trúc, TP 1,8R và Profit Trailing.

CNPS45 Trend Pullback Strategy
CNPS45 Trend Pullback Strategy
Mục lục
Mục lục

Trong giao dịch chứng khoán phái sinh, một trong những vấn đề thường gặp của các chiến lược theo xu hướng là lựa chọn thời điểm mở vị thế.

Khi thị trường đã hình thành xu hướng tăng, việc mở Long ngay sau một nhịp tăng mạnh có thể khiến nhà giao dịch phải chấp nhận mức giá kém thuận lợi. Ngược lại, trong xu hướng giảm, mở Short sau một chuỗi nến giảm liên tiếp có thể đối mặt với rủi ro giá hồi phục trước khi xu hướng tiếp tục.

Một phương pháp tiếp cận khác là chờ thị trường điều chỉnh trong xu hướng đang tồn tại, sau đó tìm kiếm tín hiệu xác nhận giá phục hồi theo hướng xu hướng chính.

Phương pháp này thường được gọi là Trend Pullback hoặc Trend Re-Entry.

Thay vì dự đoán chính xác đáy của một nhịp điều chỉnh trong xu hướng tăng, chiến lược tìm kiếm những dấu hiệu cho thấy lực mua đã quay trở lại. Tương tự, trong xu hướng giảm, hệ thống chờ lực bán xuất hiện trở lại sau một nhịp hồi.

CNPS 45 TREND PULLBACK RE-ENTRY V3 ACTIVE là chiến lược giao dịch được phát triển bằng Pine Script v6 trên TradingView, sử dụng cặp EMA34/89 để đánh giá xu hướng, RSI7 để tìm nhịp Pullback và một hệ thống xác nhận Entry gồm nến có thân đủ lớn, phá High/Low trước và đóng cửa trở lại đúng phía EMA34.

Điểm đặc trưng của CNPS 45 nằm ở việc chia quá trình phát hiện cơ hội thành hai giai đoạn độc lập:

Giai đoạn 1 – Armed Setup: Thị trường đang có xu hướng hợp lệ và xuất hiện Pullback.

Giai đoạn 2 – Re-Entry Confirmation: Giá phát tín hiệu phục hồi theo hướng xu hướng chính và đáp ứng bộ lọc chất lượng.

Theo cấu hình mặc định, bot sử dụng:

  • EMA34 và EMA89 để xác định xu hướng.
  • RSI7 với ngưỡng Long Pullback 40 và Short Pullback 60.
  • ADX tối thiểu 15.
  • Khoảng cách EMA tối thiểu 0,08 ATR.
  • Setup Lifetime 6 nến.
  • Điều kiện phá High/Low nến trước và EMA34 Reclaim.
  • Stop Loss theo cực trị Pullback cộng ATR Buffer.
  • Risk dự kiến từ 2 đến 8 điểm.
  • Take Profit 1,8R.
  • Break Even tại 1R.
  • Profit Trailing bắt đầu từ 1,5R.

Phiên bản V3 Active được định hướng tăng tần suất tìm kiếm cơ hội so với phiên bản V2 thông qua các thông số như ADX15, RSI7, ngưỡng Candle Body 25% và giới hạn tối đa 4 giao dịch/ngày.

Tuy nhiên, việc gia tăng tần suất tín hiệu không đồng nghĩa chiến lược chắc chắn tạo nhiều giao dịch có lợi nhuận hơn.

Ngoài bộ máy tín hiệu, CNPS 45 còn có cơ chế Stop Loss theo cấu trúc Pullback, Take Profit tùy chọn, Break Even và Trailing Stop dựa trên ATR.

Vậy CNPS 45 hoạt động như thế nào, sự khác biệt giữa Armed Setup và Final Entry là gì, RSI7 đóng vai trò gì và nhà giao dịch cần lưu ý những điều gì khi áp dụng chiến lược?

1. CNPS 45 Trend Pullback Re-Entry V3 Active là gì?

CNPS 45 V3 Active là chiến lược giao dịch theo xu hướng, kết hợp việc xác định Regime với tín hiệu giá điều chỉnh và xác nhận phục hồi.

Chiến lược được tổ chức thành bốn thành phần chính.

1.1. Trend Regime – Xác định xu hướng thị trường

CNPS 45 sử dụng hai đường EMA:

Fast EMA = 34.

Slow EMA = 89.

Với xu hướng tăng, bot yêu cầu EMA34 nằm trên EMA89.

Tuy nhiên, điều kiện này chưa đủ.

Chiến lược còn kiểm tra:

  • Độ dốc EMA89.
  • Khoảng cách EMA34/89 theo đơn vị ATR.
  • ADX14 nếu bộ lọc được bật.

Đối với xu hướng giảm, các điều kiện được áp dụng theo hướng đối lập.

Mục tiêu của nhóm bộ lọc này là lựa chọn những trạng thái mà hai đường EMA có sự phân tách tối thiểu, đồng thời EMA chậm xác nhận hướng di chuyển.

1.2. Pullback Engine – Xác định nhịp điều chỉnh

Sau khi xu hướng hợp lệ, bot tìm dấu hiệu giá điều chỉnh về vùng EMA34.

Với Long:

  • RSI7 ≤ 40.
  • Low chạm ngưỡng EMA34 có dung sai ATR.
  • Close vẫn nằm trên EMA89.

Với Short:

  • RSI7 ≥ 60.
  • High chạm ngưỡng EMA34 có dung sai ATR.
  • Close vẫn nằm dưới EMA89.

Khi những điều kiện này xuất hiện trong thời gian giao dịch cho phép và không có vị thế đang mở, chiến lược kích hoạt Armed Setup.

1.3. Re-Entry Confirmation

CNPS 45 không mở vị thế ngay tại thời điểm Pullback được xác nhận.

Thay vào đó, bot chờ một cây nến xuất hiện sau cây nến Armed ban đầu.

Với Long, cây nến xác nhận mặc định phải:

  • Có thân nến tăng tối thiểu 25% tổng biên độ.
  • Đóng cửa vượt High cây nến trước.
  • Đóng cửa trên EMA34.
  • Vẫn nằm trong Trend Regime tăng.
  • Setup chưa hết hạn.

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

Đây là cơ chế Re-Entry đặc trưng của CNPS 45.

1.4. Position Management

Sau khi có tín hiệu Entry hợp lệ, bot xác định Stop Loss theo vùng Pullback.

Với Long:

Structural Stop = Lowest Low của Setup − 0,20 ATR.

Với Short:

Structural Stop = Highest High của Setup + 0,20 ATR.

Risk dự kiến được kiểm tra trong khoảng 2–8 điểm.

Sau khi vị thế khớp, chiến lược sử dụng:

  • Take Profit 1,8R.
  • Break Even tại 1R.
  • Profit Trailing từ 1,5R với khoảng 2,5 ATR.
  • Force Close cuối phiên.

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

NhómThông sốGiá trị
TrendFast EMA34
TrendSlow EMA89
TrendSlow EMA Slope Lookback5
TrendMinimum EMA Separation0,08 ATR
TrendADX FilterBật
TrendMinimum ADX15
PullbackRSI Length7
PullbackLong RSI≤ 40
PullbackShort RSI≥ 60
PullbackSetup Lifetime6 nến
PullbackEMA Touch Tolerance0,35 ATR
TriggerMinimum Body Ratio0,25
TriggerFast EMA ReclaimBật
TriggerPrevious High/Low BreakBật
TradeTrade DirectionBoth
TradePosition Size3 hợp đồng
TradeMaximum Trades Per Day4
TradeCooldown After Exit3 nến
RiskATR Length14
RiskStructural Stop Buffer0,20 ATR
RiskMinimum Accepted Risk2 điểm
RiskMaximum Accepted Risk8 điểm
Take ProfitSử dụngBật
Take ProfitMục tiêu1,8R
Break EvenSử dụngBật
Break EvenTrigger1R
Break EvenOffset0,5 điểm
TrailingSử dụngBật
TrailingStart1,5R
TrailingATR Multiplier2,5
SessionBuổi sáng09:00–11:30
SessionBuổi chiều13:00–14:30
SessionForce Close14:45

Source Code CNPS 45: CNPS45

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

2.1. Exponential Moving Average – EMA

EMA là đường trung bình động hàm mũ, sử dụng trọng số lớn hơn dành cho dữ liệu giá gần hiện tại.

Trong CNPS 45, hai EMA đóng vai trò khác nhau.

EMA34 được sử dụng làm đường xu hướng nhanh và tham chiếu Pullback.

EMA89 được sử dụng để đánh giá hướng xu hướng và kiểm tra vị trí giá trong giai đoạn tạo Armed Setup.

Chiến lược tính:

fastEMA = ta.ema(close, 34) slowEMA = ta.ema(close, 89)

Cần lưu ý rằng EMA34 và EMA89 được tính trên khung thời gian biểu đồ hiện tại.

Do đó, EMA34 trên M1 và EMA34 trên M5 không đại diện cho cùng khoảng thời gian quan sát.

2.2. Fast EMA và Slow EMA Agreement

Điều kiện cơ bản của Uptrend:

EMA34 > EMA89.

Điều kiện cơ bản của Downtrend:

EMA34 < EMA89.

Tuy nhiên, CNPS 45 không chỉ dựa vào vị trí tương đối của hai đường EMA.

Bot còn yêu cầu EMA89 có độ dốc phù hợp, khoảng cách EMA đạt ngưỡng và ADX đáp ứng điều kiện nếu bộ lọc đang bật.

Ví dụ:

  • EMA34 = 1.900.
  • EMA89 = 1.895.

Điều kiện Fast EMA trên Slow EMA hợp lệ cho Long.

Tuy nhiên, nếu EMA89 đang giảm theo Slope Lookback hoặc khoảng cách EMA không đạt ngưỡng, Uptrend Regime chưa được xác nhận.

2.3. Slow EMA Slope

Theo mặc định:

Slope Lookback = 5 nến.

Long yêu cầu:

EMA89 hiện tại > EMA89 cách 5 nến.

Short yêu cầu:

EMA89 hiện tại < EMA89 cách 5 nến.

Ví dụ:

  • EMA89 hiện tại = 1.895.
  • EMA89 cách 5 nến = 1.893.

Slow EMA Slope Bullish hợp lệ.

Điểm quan trọng là bot chỉ so sánh hai giá trị EMA89 cách nhau 5 nến.

Chiến lược không bắt buộc EMA89 phải tăng liên tục trên từng cây nến của khoảng này.

2.4. EMA Separation theo ATR

CNPS 45 sử dụng một bộ lọc nhằm kiểm tra độ phân tách giữa EMA34 và EMA89.

Công thức:

EMA Separation = |EMA34 − EMA89|.

Sau đó:

EMA Separation ATR = EMA Separation / Max(ATR14, Minimum Tick).

Mặc định:

Minimum EMA Separation = 0,08 ATR.

Ví dụ:

  • EMA34 = 1.900.
  • EMA89 = 1.899.
  • ATR14 = 5.

Khoảng cách EMA:

1 điểm.

EMA Separation ATR:

1 / 5 = 0,20.

Vì 0,20 ≥ 0,08, bộ lọc đạt yêu cầu.

Ngược lại, nếu hai EMA chỉ cách nhau 0,2 điểm:

0,2 / 5 = 0,04.

Tín hiệu không đạt ngưỡng.

Bộ lọc này có thể hạn chế một phần những thời điểm EMA34 và EMA89 nằm quá gần nhau.

Tuy nhiên, khoảng cách EMA không phải thước đo độc lập bảo đảm thị trường đang có xu hướng bền vững.

2.5. ADX – Average Directional Index

CNPS 45 sử dụng ADX để đánh giá mức độ mạnh của chuyển động xu hướng.

Mã nguồn tính:

ta.dmi(14, 14)

Trong đó bao gồm:

  • Positive DI.
  • Negative DI.
  • ADX.

Tuy nhiên, điều kiện Trend Regime chỉ sử dụng ADX.

Theo mặc định:

Use ADX Filter = True.

Minimum ADX = 15.

Điều kiện:

ADX ≥ 15.

Một điểm quan trọng là CNPS 45 không bắt buộc:

DI+ > DI− với Long.

Hoặc:

DI− > DI+ với Short.

Hướng xu hướng được xác định bằng cặp EMA và Slow EMA Slope.

ADX chỉ là một bộ lọc bổ sung về mức độ vận động của thị trường.

2.6. Trend Regime hoàn chỉnh

CNPS 45 xác định Uptrend khi đồng thời có:

EMA34 > EMA89.

EMA89 hiện tại > EMA89 cách 5 nến.

EMA Separation ATR ≥ 0,08.

ADX ≥ 15 nếu ADX Filter bật.

Downtrend yêu cầu:

EMA34 < EMA89.

EMA89 hiện tại < EMA89 cách 5 nến.

EMA Separation ATR ≥ 0,08.

ADX ≥ 15 nếu ADX Filter bật.

Đây là trạng thái xu hướng có thể được sử dụng xuyên suốt cả quá trình Armed Setup và Re-Entry Confirmation.

Nếu Trend Regime bị mất, Setup tương ứng có thể bị vô hiệu hóa.

2.7. RSI7 trong Pullback

Relative Strength Index (RSI) là chỉ báo động lượng dựa trên tương quan giữa mức tăng và mức giảm giá.

CNPS 45 sử dụng:

RSI Length = 7.

Ngưỡng mặc định:

Long Pullback RSI ≤ 40.

Short Pullback RSI ≥ 60.

Đây là cách chiến lược tìm những nhịp điều chỉnh tương đối mạnh trong xu hướng đang tồn tại.

Ví dụ, trong Uptrend:

  • RSI7 = 55: Chưa đáp ứng Long Pullback.
  • RSI7 = 43: Chưa đáp ứng.
  • RSI7 = 38: Đạt bộ lọc RSI Long.

Tuy nhiên, RSI38 chưa đủ để kích hoạt Long Armed nếu thiếu điều kiện giá về vùng EMA34 hoặc Close không đạt yêu cầu đối với EMA89.

2.8. RSI Pullback không phải RSI Crossover

Đây là một điểm rất quan trọng khi đọc CNPS 45.

Bot sử dụng RSI để xác định nhịp điều chỉnh ban đầu.

Với Long:

RSI7 ≤ 40 tại thời điểm Armed.

Với Short:

RSI7 ≥ 60 tại thời điểm Armed.

Sau khi Armed Setup được tạo, bot không yêu cầu RSI phải cắt ngược qua ngưỡng 40 hoặc 60 để mở Entry.

Sự phục hồi được xác nhận chủ yếu thông qua:

  • Hướng và chất lượng nến.
  • Close phá High/Low trước.
  • Close đúng phía EMA34.
  • Trend Regime vẫn hợp lệ.

Vì vậy, không nên mô tả CNPS 45 là chiến lược bắt buộc RSI7 phải Crossover trở lại trên 40 để Long hoặc Crossunder dưới 60 để Short.

2.9. EMA Touch Tolerance

CNPS 45 sử dụng một vùng dung sai quanh EMA34 để tìm Pullback.

Mặc định:

EMA Touch Tolerance = 0,35 ATR.

Với Long:

Low ≤ EMA34 + 0,35 ATR.

Với Short:

High ≥ EMA34 − 0,35 ATR.

Ví dụ:

  • EMA34 = 1.900.
  • ATR14 = 4.
  • Tolerance = 0,35 × 4 = 1,4 điểm.

Với Long, ngưỡng Touch là:

1.901,4.

Nếu Low của nến bằng 1.901:

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

Đây là phương pháp cho phép giá tiến sát EMA34 mà không bắt buộc Low phải chạm chính xác EMA34.

2.10. EMA Touch không giới hạn độ xuyên qua EMA

Một đặc điểm của công thức Touch là điều kiện chỉ sử dụng một phía.

Với Long:

Low ≤ EMA34 + Tolerance.

Nếu Low giảm sâu xuống dưới EMA34, điều kiện này vẫn có thể hợp lệ.

Tương tự, với Short:

High ≥ EMA34 − Tolerance.

Một nến có High vượt xa lên trên EMA34 vẫn có thể đáp ứng điều kiện Touch.

Tuy nhiên, các bộ lọc RSI, Trend Regime, vị trí Close so với EMA89 và Risk sau đó vẫn phải đạt yêu cầu.

Vì vậy, EMA Touch Tolerance không phải giới hạn độ sâu tối đa của Pullback.

2.11. Armed Setup

Khi một Pullback hợp lệ xuất hiện, CNPS 45 lưu trạng thái chờ.

Với Long:

  • Long Setup Bar.
  • Long Setup Low.

Với Short:

  • Short Setup Bar.
  • Short Setup High.

Setup Bar ghi nhận cây nến đầu tiên tạo Armed Setup.

Setup Low hoặc Setup High lưu cực trị giá dùng để xác định Stop Loss.

Theo mặc định:

Setup Lifetime = 6 nến.

Một Entry chỉ được xem xét từ cây nến sau khi Setup được tạo.

2.12. Cập nhật cực trị Pullback

Khi Long Armed còn hiệu lực, bot tiếp tục cập nhật:

Long Setup Low = Min(Long Setup Low, Low hiện tại).

Với Short:

Short Setup High = Max(Short Setup High, High hiện tại).

Ví dụ, Long Armed được tạo tại Bar 100 với Low 1.898.

Tại Bar 101, Low giảm xuống 1.897.

Bot cập nhật:

Long Setup Low = 1.897.

Nếu Bar 102 có Low 1.899, mức Setup Low vẫn bằng 1.897.

Điều này giúp Stop Loss sử dụng cực trị đã được ghi nhận trong quá trình chờ.

2.13. Setup Lifetime

CNPS 45 sử dụng:

Setup Lifetime Bars = 6.

Nếu Armed được tạo tại Bar 100:

  • Bar 100: Chưa được mở Entry.
  • Bar 101–106: Setup có thể được sử dụng.
  • Bar 107: Setup hết hạn.

Ngoài giới hạn số nến, Setup còn bị vô hiệu khi Trend Regime tương ứng không còn hợp lệ hoặc bot phát hiện cây nến nằm ngoài Entry Session.

2.14. Trigger Candle Quality

CNPS 45 sử dụng tỷ lệ thân nến để xác nhận lực mua hoặc lực bán.

Công thức:

Body Ratio = |Close − Open| / Max(High − Low, Minimum Tick).

Mặc định:

Minimum Body Ratio = 0,25.

Long yêu cầu:

Close > Open.

Body Ratio ≥ 25%.

Short yêu cầu:

Close < Open.

Body Ratio ≥ 25%.

Ví dụ:

  • Open = 1.900.
  • High = 1.905.
  • Low = 1.899.
  • Close = 1.904.

Thân nến:

4 điểm.

Biên độ:

6 điểm.

Body Ratio:

4/6 ≈ 0,67.

Nến đạt yêu cầu Long.

2.15. Previous High/Low Break

Theo mặc định:

Require Previous High/Low Break = True.

Long yêu cầu:

Close > High[1].

Short yêu cầu:

Close < Low[1].

Đây là một bộ lọc xác nhận giá đã vượt cực trị của cây nến liền trước theo hướng giao dịch.

Ví dụ:

  • High nến trước = 1.903.
  • Close hiện tại = 1.905.

Long High Break hợp lệ.

Nếu Close chỉ đạt 1.903, điều kiện không đạt vì source sử dụng dấu lớn hơn nghiêm ngặt.

2.16. Fast EMA Reclaim

CNPS 45 mặc định bật:

Require Fast EMA Reclaim = True.

Với Long:

Close > EMA34.

Với Short:

Close < EMA34.

Điểm quan trọng là thuật toán không bắt buộc một sự kiện Crossover mới.

Ví dụ, Long Armed đang tồn tại và Close của nến xác nhận vẫn nằm trên EMA34.

Nếu đồng thời có nến tăng, phá High trước và Risk hợp lệ, Fast EMA Reclaim đạt yêu cầu.

Vì vậy, tên Reclaim ở đây được hiểu là yêu cầu Close nằm đúng phía EMA34 tại thời điểm Trigger, không nhất thiết là Close vừa cắt EMA34 trên cây nến đó.

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

Quy trình tổng quát:

Trend Regime → Pullback RSI + EMA Touch → Armed Setup → Momentum Confirmation → Structural Risk → Entry → Break Even + Profit Trail.

Bước 1: Tính Trend Indicators

Bot tính EMA34, EMA89, RSI7, ATR14 và ADX14.

Các chỉ báo được cập nhật theo dữ liệu biểu đồ.

Bước 2: Xác định hướng EMA

Chiến lược so sánh EMA34 và EMA89.

Nếu EMA34 nằm trên EMA89, hướng EMA cơ bản nghiêng tăng.

Nếu EMA34 nằm dưới EMA89, hướng EMA cơ bản nghiêng giảm.

Bước 3: Kiểm tra Slope EMA89

Bot xác nhận độ dốc EMA89 qua Lookback 5 nến.

Long cần EMA89 tăng.

Short cần EMA89 giảm.

Bước 4: Kiểm tra EMA Separation

Khoảng cách EMA34 và EMA89 được chuẩn hóa theo ATR14.

Nếu nhỏ hơn 0,08 ATR, Trend Regime không đạt.

Bước 5: Kiểm tra ADX

Theo mặc định, ADX phải ít nhất bằng 15.

Nếu tắt ADX Filter, chiến lược không yêu cầu ADX đạt ngưỡng.

Bước 6: Xác nhận Trend Regime

Khi toàn bộ điều kiện tương ứng đạt, bot xác nhận:

Uptrend hoặc Downtrend.

Nếu không đạt, trạng thái Regime được xem là No Trend.

Bước 7: Phát hiện Pullback

Trong Uptrend, bot tìm:

  • RSI7 ≤ 40.
  • Low ≤ EMA34 + 0,35 ATR.
  • Close > EMA89.

Trong Downtrend:

  • RSI7 ≥ 60.
  • High ≥ EMA34 − 0,35 ATR.
  • Close < EMA89.

Đồng thời, bot phải đang Flat và nằm trong Entry Session.

Bước 8: Kích hoạt Armed Setup

Khi Pullback hợp lệ, bot lưu Bar Index và cực trị của nến tạo tín hiệu.

Long lưu Low.

Short lưu High.

Nếu cùng hướng tiếp tục xuất hiện Pullback hợp lệ khi Setup đã tồn tại, bot cập nhật cực trị nhưng không tự động đặt lại thời gian bắt đầu Setup.

Bước 9: Kiểm tra Setup Active

Long Armed được xem là Active khi:

  • Setup Bar có dữ liệu.
  • Nến hiện tại xuất hiện sau nến tạo Armed.
  • Chưa vượt 6 nến.
  • Uptrend vẫn hợp lệ.

Short áp dụng tương ứng với Downtrend.

Bước 10: Cập nhật cực trị trong thời gian chờ

Trong mỗi cây nến mà Setup Active, bot cập nhật Long Setup Low hoặc Short Setup High.

Điểm quan trọng là cập nhật này diễn ra trước khi tính Structural Stop và Final Entry.

Vì vậy, cực trị của chính cây nến Trigger cũng có thể tham gia vào Stop Loss.

Bước 11: Hủy Setup không hợp lệ

Setup được đặt lại nếu:

  • Vượt Lifetime.
  • Trend Regime bị mất.
  • Cây nến hiện tại nằm ngoài Entry Session.

Ngoài ra, các trạng thái Armed được đặt lại khi bot xác định ngày giao dịch mới.

Bước 12: Xác nhận Trigger Candle

Long yêu cầu nến tăng với Body Ratio ít nhất 0,25.

Short yêu cầu nến giảm với Body Ratio ít nhất 0,25.

Bot kiểm tra điều kiện trên cây nến đã đóng.

Bước 13: Xác nhận Previous High/Low Break

Nếu bộ lọc đang bật, Long cần Close vượt High nến trước.

Short cần Close dưới Low nến trước.

Bước 14: Xác nhận EMA Reclaim

Nếu Fast EMA Reclaim được bật, Long cần Close trên EMA34.

Short cần Close dưới EMA34.

Đây là bước xác nhận vị trí giá theo hướng Entry.

Bước 15: Tạo Raw Trigger

Một Raw Long Trigger được tạo khi:

  • Đang Flat.
  • Trade Direction cho phép Long.
  • Long Setup Active.
  • Nến xác nhận tăng đạt Body Ratio.
  • High Break hợp lệ.
  • EMA Reclaim hợp lệ.
  • Nến đã đóng cửa.

Short sử dụng điều kiện tương ứng.

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

Với Long:

Candidate Stop = Long Setup Low − ATR × 0,20.

Với Short:

Candidate Stop = Short Setup High + ATR × 0,20.

Đây là mức Stop dự kiến trước khi gửi Entry.

Bước 17: Kiểm tra Risk

Bot tính:

Long Risk = Close − Candidate Long Stop.

Short Risk = Candidate Short Stop − Close.

Theo mặc định:

2 ≤ Risk ≤ 8 điểm.

Nếu Risk nằm ngoài khoảng này, lệnh không được gửi.

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

Chiến lược tiếp tục yêu cầu:

  • Không có vị thế.
  • Đang trong Entry Session.
  • Cooldown hợp lệ.
  • Chưa vượt 4 Entry trong ngày.

Nếu toàn bộ điều kiện đạt, Final Entry được xác nhận.

Bước 19: Gửi Entry và lưu Stop

Khi Final Long hoặc Final Short hợp lệ, bot lưu mức Structural Stop vào Pending Stop.

Sau đó gửi strategy.entry() với khối lượng được thiết lập.

Mặc định:

3 hợp đồng.

Trades Today tăng thêm một.

Các trạng thái Armed của cả Long và Short đều được xóa sau khi Entry được gửi.

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

Khi bot nhận diện vị thế mới, nó lấy giá khớp trung bình và Pending Structural Stop.

Sau đó tính:

Actual Initial Risk = Khoảng cách từ giá khớp đến Structural Stop.

Nếu Take Profit bật:

Target = Entry ± Actual Initial Risk × 1,8.

Bước 21: Theo dõi Maximum Profit R

Khi đang Long, bot sử dụng High để tính mức lợi nhuận thuận lợi theo R.

Khi đang Short, bot sử dụng Low.

Giá trị Maximum Profit R chỉ tăng khi mức thuận lợi mới vượt mức đã ghi nhận.

Bước 22: Break Even tại 1R

Nếu Maximum Profit R đạt ít nhất 1R, bot dời Stop về:

Long: Entry + 0,5 điểm.

Short: Entry − 0,5 điểm.

Break Even chỉ được kích hoạt một lần cho mỗi vị thế.

Bước 23: Profit Trail từ 1,5R

Khi Maximum Profit R đạt ít nhất 1,5R:

Với Long:

Trail Candidate = Close − 2,5 ATR.

Với Short:

Trail Candidate = Close + 2,5 ATR.

Bot chỉ cập nhật Stop theo hướng bảo vệ tốt hơn.

Bước 24: Quản trị Exit và Force Close

Vị thế được quản trị bằng Stop Loss, Take Profit nếu bật và Force Close cuối phiên.

Mặc định, chiến lược yêu cầu đóng toàn bộ vị thế khi cây nến đi qua mốc 14:45.

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

4.1. Long – Uptrend Pullback Re-Entry

Một giao dịch Long được hình thành theo hai giai đoạn.

Giai đoạn A: Long Armed Setup

Điều kiện:

  1. Đang Flat.
  2. Nằm trong Entry Session.
  3. EMA34 > EMA89.
  4. EMA89 hiện tại > EMA89 cách 5 nến.
  5. EMA Separation ATR ≥ 0,08.
  6. ADX ≥ 15 nếu bộ lọc bật.
  7. RSI7 ≤ 40.
  8. Low ≤ EMA34 + 0,35 ATR.
  9. Close > EMA89.

Khi đáp ứng, chiến lược ghi nhận Long Armed.

Giai đoạn B: Re-Entry Long

Bot yêu cầu:

  1. Long Armed còn hiệu lực.
  2. Nến hiện tại xuất hiện sau nến tạo Armed.
  3. Setup chưa vượt 6 nến.
  4. Uptrend vẫn hợp lệ.
  5. Close > Open.
  6. Body Ratio ≥ 0,25.
  7. Close > High nến trước nếu bộ lọc bật.
  8. Close > EMA34 nếu Reclaim bật.
  9. Nến đã xác nhận.
  10. Risk từ 2 đến 8 điểm.
  11. Đang Flat.
  12. Trade Direction cho phép Long.
  13. Entry Session hợp lệ.
  14. Cooldown hợp lệ.
  15. Trades Today dưới 4.

Nếu toàn bộ điều kiện đạt, bot gửi Long Entry.

4.2. Ví dụ Long minh họa

Giả sử tại Bar 100, VN30F1M có:

  • EMA34 = 1.900.
  • EMA89 = 1.894.
  • EMA89 cách 5 nến = 1.892.
  • ATR14 = 4.
  • ADX = 19.
  • RSI7 = 38.
  • Open = 1.901.
  • High = 1.902.
  • Low = 1.898.
  • Close = 1.899.

EMA34 nằm trên EMA89.

EMA89 đang có độ dốc tăng.

EMA Separation ATR:

(1.900 − 1.894) / 4 = 1,50.

Lớn hơn ngưỡng 0,08.

ADX19 đạt ngưỡng 15.

RSI38 đáp ứng Long Pullback.

EMA Touch Tolerance:

0,35 × 4 = 1,4 điểm.

Ngưỡng Touch:

1.901,4.

Low1.898 thấp hơn ngưỡng này.

Close1.899 vẫn trên EMA89 tại 1.894.

Vì vậy, Long Armed được tạo tại Bar 100.

Đến Bar 101, giả sử:

  • Open = 1.900.
  • High = 1.904.
  • Low = 1.899.
  • Close = 1.903.
  • EMA34 hiện tại = 1.900,2.
  • Uptrend vẫn hợp lệ.

Body Ratio:

(1.903 − 1.900) / (1.904 − 1.899) = 0,60.

Nến đạt yêu cầu 0,25.

Previous High Break:

1.903 > 1.902.

Fast EMA Reclaim:

1.903 > 1.900,2.

Setup Low thấp nhất vẫn là 1.898.

Structural Stop:

1.898 − 0,20 × 4 = 1.897,2.

Risk dự kiến:

1.903 − 1.897,2 = 5,8 điểm.

Khoảng Risk nằm trong phạm vi 2–8 điểm.

Nếu Session, Cooldown và Trade Limit hợp lệ, bot có thể gửi Long Entry.

Giả sử lệnh được khớp tại 1.903,5:

Actual Risk = 1.903,5 − 1.897,2 = 6,3 điểm.

Take Profit 1,8R:

1.903,5 + 6,3 × 1,8 = 1.914,84.

Break Even Trigger 1R:

1.909,8.

Profit Trail Trigger 1,5R:

1.912,95.

Các con số này chỉ minh họa phương pháp tính từ một kịch bản giả định.

4.3. Short – Downtrend Pullback Re-Entry

Short sử dụng quy trình tương ứng theo hướng giảm.

Giai đoạn A: Short Armed Setup

Điều kiện:

  1. Flat và nằm trong Entry Session.
  2. EMA34 < EMA89.
  3. EMA89 đang giảm theo 5 nến.
  4. EMA Separation ATR ≥ 0,08.
  5. ADX ≥ 15 nếu bật.
  6. RSI7 ≥ 60.
  7. High ≥ EMA34 − 0,35 ATR.
  8. Close < EMA89.

Giai đoạn B: Re-Entry Short

Bot yêu cầu:

  1. Short Armed Active.
  2. Nến xác nhận xuất hiện sau nến Armed.
  3. Downtrend vẫn hợp lệ.
  4. Close < Open.
  5. Body Ratio ≥ 0,25.
  6. Close < Low nến trước nếu bộ lọc bật.
  7. Close < EMA34 nếu Reclaim bật.
  8. Risk từ 2 đến 8 điểm.
  9. Các điều kiện giao dịch chung hợp lệ.

4.4. Ví dụ Short minh họa

Giả sử:

  • EMA34 = 1.900.
  • EMA89 = 1.906.
  • EMA89 cách 5 nến = 1.908.
  • ATR14 = 4.
  • ADX = 18.
  • RSI7 = 64.

Cây nến Pullback:

  • Open = 1.899.
  • High = 1.902.
  • Low = 1.898.
  • Close = 1.901.

Giá đang nằm dưới EMA89, RSI64 đạt điều kiện Short Pullback, High chạm vùng EMA34.

Bot tạo Short Armed.

Cây nến sau:

  • Open = 1.900.
  • High = 1.901.
  • Low = 1.896.
  • Close = 1.897.
  • EMA34 hiện tại = 1.899,8.

Body Ratio:

(1.900 − 1.897) / (1.901 − 1.896) = 0,60.

Previous Low Break:

1.897 < 1.898.

EMA Reclaim:

1.897 < 1.899,8.

Short Setup High vẫn bằng 1.902.

Structural Stop:

1.902 + 0,20 × 4 = 1.902,8.

Risk dự kiến:

1.902,8 − 1.897 = 5,8 điểm.

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

Giả sử giá khớp bằng 1.896,5:

Actual Risk = 1.902,8 − 1.896,5 = 6,3 điểm.

Take Profit 1,8R:

1.896,5 − 6,3 × 1,8 = 1.885,16.

4.5. Re-Entry không bắt buộc RSI phục hồi qua ngưỡng

Trong ví dụ Long, RSI7 giảm về 38 để tạo Armed.

Tuy nhiên, khi Trigger xuất hiện ở nến sau, mã nguồn không bắt buộc RSI phải vượt trở lại 40.

Một Long Trigger có thể hợp lệ khi RSI vẫn dưới 40 nếu:

  • Uptrend vẫn đạt.
  • Nến tăng hợp lệ.
  • Close vượt High trước.
  • Close trên EMA34.
  • Risk đạt yêu cầu.

Đối với Short, bot cũng không bắt buộc RSI phải giảm trở lại dưới 60.

Do đó, RSI là điều kiện tìm Pullback, còn hành vi giá xác nhận Re-Entry.

4.6. Reclaim không bắt buộc EMA Crossover

Nếu giá đã nằm trên EMA34 trong suốt thời gian Long Armed, một nến xác nhận tiếp tục đóng cửa trên EMA34 vẫn có thể đáp ứng Reclaim.

Bot không yêu cầu Close trước nằm dưới EMA34 rồi Close hiện tại mới vượt lên.

Điều này khác với một hệ thống sử dụng trực tiếp ta.crossover(close, EMA34).

4.7. High/Low Break xác nhận hành vi giá ngắn hạn

Theo mặc định:

Long: Close > High nến trước.

Short: Close < Low nến trước.

Đây là tín hiệu phản ánh khả năng giá vượt một cực trị ngắn hạn theo hướng giao dịch.

Tuy nhiên, nó không phải điều kiện Break of Structure theo Swing High/Low đã xác nhận trên nhiều nến.

Bot chỉ sử dụng cực trị của cây nến liền trước.

4.8. Pullback có thể kéo dài qua nhiều nến

Sau khi Armed xuất hiện, bot không yêu cầu tất cả những nến tiếp theo đều phải tiếp tục có RSI thấp hoặc cao.

Setup được duy trì khi Trend Regime còn hợp lệ và chưa vượt Lifetime, trừ các điều kiện hủy khác.

Trong thời gian này, bot tiếp tục ghi nhận cực trị mới để xác định Stop Loss.

Ví dụ, Long Armed hình thành với Low1.898.

Nếu giá tiếp tục giảm về 1.896 trong thời gian chờ, Long Setup Low có thể được cập nhật xuống 1.896.

Điều này làm Stop Loss dự kiến thấp hơn và Risk có thể tăng.

4.9. Setup Lifetime không được gia hạn chỉ vì xuất hiện Pullback mới

Giả sử Long Armed được tạo tại Bar 100.

Tại Bar 102, RSI lại xuống dưới 40 và giá tiếp tục chạm EMA34.

Bot cập nhật Long Setup Low nếu cần.

Tuy nhiên:

Long Setup Bar vẫn là Bar 100.

Thời gian chờ không tự động được gia hạn thêm 6 nến kể từ Bar 102.

Đây là điểm quan trọng khi quan sát các giai đoạn giá điều chỉnh kéo dài.

4.10. Raw Trigger không đồng nghĩa Final Entry

Một Raw Long hoặc Short Trigger có thể hợp lệ nhưng chưa tạo Entry vì:

  • Risk nhỏ hơn 2 điểm.
  • Risk lớn hơn 8 điểm.
  • Cooldown chưa hoàn thành.
  • Đã đạt 4 Entry trong ngày.
  • Nằm ngoài Entry Session.

Trong trường hợp Raw Trigger bị loại bởi Risk hoặc những điều kiện chung, Setup không nhất thiết bị xóa ngay.

Nếu còn hiệu lực, bot có thể tiếp tục đánh giá những cây nến tiếp theo.

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

5.1. Structural Stop Loss

CNPS 45 sử dụng Stop Loss dựa trên cực trị của Setup, thay vì Stop cố định 5 điểm.

Với Long:

Stop = Long Setup Low − ATR14 × 0,20.

Với Short:

Stop = Short Setup High + ATR14 × 0,20.

Cực trị này có thể được cập nhật trong quá trình Armed.

Do đó, Stop Loss phản ánh biến động đã xuất hiện trong vùng Pullback.

5.2. ATR Buffer

Mặc định:

Structural Stop Buffer = 0,20 ATR.

Ví dụ:

  • Long Setup Low = 1.900.
  • ATR14 = 5.

Stop Buffer:

5 × 0,20 = 1 điểm.

Structural Stop:

1.899.

Buffer giúp đặt Stop nằm ngoài cực trị Setup theo một khoảng phụ thuộc vào mức biến động ATR.

Tuy nhiên, khoảng Buffer này không bảo đảm tránh được các lần giá kiểm tra lại vùng cực trị trước đó.

5.3. Risk Filter 2–8 điểm

CNPS 45 chỉ chấp nhận tín hiệu có Risk dự kiến:

2 ≤ Risk ≤ 8 điểm.

Với Long:

Risk = Close tín hiệu − Structural Stop.

Với Short:

Risk = Structural Stop − Close tín hiệu.

Ví dụ:

Risk dự kiếnKết quả
1,5 điểmTừ chối
2 điểmChấp nhận
5 điểmChấp nhận
8 điểmChấp nhận
9 điểmTừ chối

Khoảng Risk quá nhỏ hoặc quá lớn đều có thể khiến lệnh không được mở.

5.4. Risk dự kiến khác Actual Risk

CNPS 45 lưu mức Structural Stop trước Entry.

Tuy nhiên, theo cấu hình:

process_orders_on_close=false

Lệnh Entry thường được mô phỏng khớp ở cơ hội khớp tiếp theo.

Do đó, giá khớp trung bình có thể khác Close của nến tín hiệu.

Ví dụ:

  • Close Long tín hiệu = 1.900.
  • Structural Stop = 1.895.
  • Risk dự kiến = 5 điểm.

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

Actual Risk = 1.902 − 1.895 = 7 điểm.

Chiến lược sử dụng Actual Risk 7 điểm để tính TP và các ngưỡng R.

Một điểm cần chú ý là mã nguồn không kiểm tra lại Minimum/Maximum Risk sau khớp.

5.5. Actual Risk có thể vượt 8 điểm

Giả sử:

  • Risk dự kiến = 7,5 điểm.
  • Giá khớp Long cao hơn Close tín hiệu 2 điểm.

Actual Risk có thể bằng 9,5 điểm.

Mặc dù vượt Maximum Accepted Risk 8 điểm, vị thế vẫn có thể được quản trị theo mức Stop đã lưu.

Đây là một hạn chế cần kiểm thử khi triển khai chiến lược tự động, đặc biệt nếu thị trường có Gap hoặc biến động mạnh tại thời điểm khớp.

5.6. Take Profit 1,8R

Theo mặc định:

Use Take Profit = True.

Take Profit Multiple = 1,8R.

Với Long:

TP = Actual Entry + Actual Initial Risk × 1,8.

Với Short:

TP = Actual Entry − Actual Initial Risk × 1,8.

Ví dụ:

  • Long Entry = 1.900.
  • Stop = 1.895.
  • Initial Risk = 5 điểm.

Target:

1.900 + 5 × 1,8 = 1.909.

Đây là mục tiêu theo Reward/Risk danh nghĩa.

Kết quả khớp thực tế vẫn có thể chịu ảnh hưởng của Slippage, thanh khoản và phí.

5.7. Có thể tắt Take Profit

CNPS 45 hỗ trợ:

Use Take Profit = False.

Khi tắt, activeTargetPrice không được khởi tạo và lệnh strategy.exit() chỉ sử dụng Stop Loss.

Trong trường hợp đó, Profit Trail và Break Even trở thành những cơ chế quan trọng để quản trị vị thế có lợi nhuận.

Tuy nhiên, chiến lược vẫn có Force Close 14:45.

5.8. Break Even tại 1R

Theo mặc định:

Use Break Even = True.

Break Even Trigger = 1R.

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

Bot tính Maximum Profit R từ mức giá thuận lợi nhất đã ghi nhận.

Khi Maximum Profit R đạt ít nhất 1R, Stop được điều chỉnh.

Với Long:

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

Với Short:

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

5.9. Ví dụ Break Even

Giả sử:

  • Long Entry = 1.900.
  • Initial Stop = 1.895.
  • Initial Risk = 5 điểm.

Khi High đạt:

1.905.

Maximum Profit R:

(1.905 − 1.900) / 5 = 1R.

Break Even được kích hoạt.

Stop Loss mới:

1.900,5.

Khi đó, giao dịch có mức bảo vệ danh nghĩa cao hơn Entry 0,5 điểm.

Tuy nhiên, điều này không bảo đảm lợi nhuận ròng sau phí và trượt giá.

5.10. Maximum Profit R

CNPS 45 ghi nhận mức lợi nhuận thuận lợi lớn nhất theo đơn vị R.

Với Long:

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

Với Short:

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

Sau đó:

Maximum Profit R = Max(Giá trị trước, Profit R hiện tại).

Ví dụ:

  • Một vị thế Long từng đạt 1,7R.
  • Sau đó thị trường điều chỉnh về mức thuận lợi thấp hơn.

Maximum Profit R vẫn giữ 1,7R.

Điều này có nghĩa Profit Trail vẫn duy trì trạng thái kích hoạt khi giao dịch đã từng đạt ngưỡng 1,5R.

5.11. Profit Trailing từ 1,5R

Theo mặc định:

Use Profit Trailing = True.

Start Trailing At = 1,5R.

Trailing ATR Multiplier = 2,5.

Khi Maximum Profit R đạt ít nhất 1,5R, bot bắt đầu cập nhật Trailing Stop.

Với Long:

Trail Candidate = Close − 2,5 ATR.

Với Short:

Trail Candidate = Close + 2,5 ATR.

Điểm khác biệt so với một số chiến lược Smart Trail khác là CNPS 45 sử dụng Close hiện tại trong công thức Trailing, không sử dụng trực tiếp High/Low của chính nến để tính Trail Candidate.

5.12. Ví dụ Profit Trailing

Giả sử:

  • Long Entry = 1.900.
  • Initial Risk = 5 điểm.
  • Maximum Profit R đạt 1,6R.
  • Close hiện tại = 1.908.
  • ATR14 = 3 điểm.

Trail Candidate:

1.908 − 2,5 × 3 = 1.900,5.

Nếu Active Stop hiện tại bằng 1.900,5 sau Break Even, Stop không thay đổi.

Nếu ở cây nến tiếp theo:

  • Close = 1.913.
  • ATR14 = 3.

Trail Candidate:

1.913 − 7,5 = 1.905,5.

Bot có thể nâng Stop lên 1.905,5.

Đây là cơ chế từng bước bảo vệ phần lợi nhuận thuận lợi đã hình thành.

5.13. Trailing được kích hoạt không có nghĩa Stop lập tức tăng

Một chi tiết quan trọng là CNPS 45 sử dụng:

Active Stop = Max(Active Stop; Trail Candidate) với Long.

Với Short sử dụng Min.

Nếu Trail Candidate nằm phía sau Stop hiện tại, bot không điều chỉnh Stop.

Ví dụ:

  • Long Active Stop = 1.900,5.
  • Trail Candidate = 1.898.

Active Stop vẫn bằng:

1.900,5.

Vì vậy, trạng thái Trailing ON chỉ cho biết cơ chế đã được kích hoạt, không đảm bảo Stop vừa được dời tại cây nến hiện tại.

5.14. Stop chỉ dịch chuyển theo hướng bảo vệ

Trong một vị thế Long:

Active Stop không giảm.

Trong một vị thế Short:

Active Stop không tăng.

Break Even và Profit Trail đều sử dụng nguyên tắc này.

Do đó, các cơ chế có thể cùng tác động đến Stop, nhưng mức Stop không được nới rộng theo hướng tăng rủi ro trong cùng vị thế.

5.15. Break Even và Trailing có thể hoạt động đồng thời

Theo mặc định:

  • Break Even bắt đầu từ 1R.
  • Profit Trailing bắt đầu từ 1,5R.

Khi giao dịch đạt 1,5R, Break Even thường đã được kích hoạt từ trước.

Sau đó, Profit Trail chỉ tiếp tục nâng hoặc hạ Stop theo hướng bảo vệ tốt hơn.

Hai cơ chế không đặt hai lệnh Stop riêng biệt.

Chúng cùng cập nhật biến Active Stop Price được sử dụng trong lệnh thoát chính.

5.16. Take Profit và Trailing cùng tồn tại

CNPS 45 mặc định bật cả:

Take Profit 1,8R.

Profit Trailing từ 1,5R.

Điều này có nghĩa Trailing bắt đầu được xét trước khi giao dịch đạt TP mặc định.

Tuy nhiên, nếu giá chạm Take Profit 1,8R và lệnh Limit được khớp, vị thế sẽ đóng theo TP.

Do đó, Profit Trail không biến chiến lược thành hệ thống nắm giữ xu hướng không giới hạn khi Take Profit vẫn bật.

Muốn thử nghiệm phương pháp giữ xu hướng dài hơn, người dùng có thể tắt Take Profit và kiểm thử quản trị bằng Stop Trailing, Break Even và Force Close.

5.17. Cảnh báo Stop sau Break Even

CNPS 45 sử dụng thông điệp Exit khác nhau tùy trạng thái Break Even.

Nếu Break Even chưa kích hoạt:

EXIT_LONG_SL_CNPS45_V3.

Nếu Break Even đã kích hoạt:

EXIT_LONG_BE_OR_TRAIL_CNPS45_V3.

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

Cần lưu ý rằng mã cảnh báo này không trực tiếp kiểm tra biến Trailing Activated.

Nếu người dùng tắt Break Even nhưng bật Profit Trail, một lệnh Stop đã được Trailing điều chỉnh vẫn có thể phát mã SL thông thường.

5.18. Force Close cuối phiên

CNPS 45 sử dụng:

Force Close = 14:45.

Bot kiểm tra cây nến có thời điểm mở trước 14:45 và thời điểm đóng tại hoặc sau 14:45.

Nếu có vị thế, chiến lược gọi:

strategy.close_all(immediately=true)

để yêu cầu đóng toàn bộ.

5.19. Tổng hợp cơ chế quản trị vị thế

Phương phápMặc địnhCơ chế
Structural StopBậtCực trị Pullback ± 0,20 ATR
Risk FilterBậtRisk dự kiến 2–8 điểm
Take ProfitBật1,8R
Break EvenBậtTrigger 1R
Break Even Offset0,5 điểmDời Stop qua Entry
Profit TrailingBậtTừ 1,5R
Trailing ATR2,5 ATRDựa trên Close
Opposite Signal ExitKhông cóKhông áp dụng
Time Exit theo nếnKhông cóKhông áp dụng
Force CloseBật14:45

6. Hướng dẫn cài đặt và sử dụng CNPS 45 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 chỉ số VN30 từ nguồn dữ liệu phù hợp.

CNPS 45 hoạt động theo dữ liệu khung thời gian hiện tại.

Các thông số EMA, RSI, ADX, ATR, Setup Lifetime và Cooldown đều phụ thuộc số nến.

Do đó, kết quả trên M1 có thể khác đáng kể so với 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 CNPS45 TREND PULLBACK RE-ENTRY V3 ACTIVE.
  5. Lưu chiến lược.
  6. Chọn Add to chart.
  7. Kiểm tra hai đường EMA và vùng Stop/Target.
  8. Mở Strategy Tester.

Tên Strategy:

CNPS45 TREND PULLBACK RE-ENTRY V3 ACTIVE

Short Title:

CNPS45 TPRE V3

Phiên bản:

//@version=6

Bước 3: Cấu hình Trend Regime

Thông sốMặc định
Fast EMA Length34
Slow EMA Length89
Slow EMA Slope Lookback5
Minimum EMA Separation x ATR0,08
Use ADX FilterBật
Minimum ADX15

Nhóm này quyết định khi nào bot xác nhận Uptrend hoặc Downtrend.

Nếu tăng Minimum EMA Separation, chiến lược yêu cầu khoảng cách EMA rộng hơn tương đối với ATR.

Nếu tăng Minimum ADX, bot chỉ chấp nhận những giai đoạn ADX đạt ngưỡng cao hơn.

Tuy nhiên, các thay đổi này cần được kiểm thử trên cùng một dữ liệu lịch sử để đánh giá tác động thực tế.

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

Thông sốMặc định
Pullback RSI Length7
Long Pullback RSI40
Short Pullback RSI60
Setup Lifetime Bars6
Fast EMA Touch Tolerance0,35 ATR

Đây là nhóm tham số kiểm soát thời điểm Armed Setup được hình thành.

Nếu thay đổi RSI Length hoặc các ngưỡng Pullback, số lượng Armed Setup có thể thay đổi.

Nếu tăng Setup Lifetime, bot có thể chờ Re-Entry Confirmation lâu hơn.

Tuy nhiên, thời hạn dài cũng khiến Setup tồn tại qua nhiều biến động giá hơn.

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

Thông sốMặc định
Minimum Body Ratio0,25
Require Fast EMA ReclaimBật
Require Previous High/Low BreakBật

Các tham số này quyết định chất lượng cây nến xác nhận.

Nếu tắt Previous High/Low Break, bot không còn yêu cầu Close vượt cực trị nến trước.

Nếu tắt Fast EMA Reclaim, điều kiện đóng cửa đúng phía EMA34 được bỏ qua tại bước Trigger.

Tuy nhiên, Trend Regime vẫn phải hợp lệ.

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

Thông sốMặc định
ATR Length14
Structural Stop Buffer0,20 ATR
Minimum Accepted Risk2 điểm
Maximum Accepted Risk8 điểm
Use Take ProfitBật
Take Profit R1,8

Nếu tăng Stop Buffer, Structural Stop có xu hướng nằm xa cực trị Pullback hơn.

Điều này có thể tăng Risk dự kiến và khiến nhiều tín hiệu vượt Maximum Risk.

Nếu tăng Maximum Risk, bot có thể chấp nhận những Setup có khoảng Stop rộng hơn.

Tuy nhiên, khối lượng hợp đồng mặc định không tự động giảm tương ứng.

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

Thông sốMặc định
Use Break EvenBật
Break Even Trigger1R
Break Even Offset0,5 điểm

Break Even được kích hoạt theo Maximum Profit R.

Khi bật, Stop chỉ được điều chỉnh một lần theo ngưỡng Trigger, sau đó Profit Trail có thể tiếp tục cập nhật Stop.

Bước 8: Cấu hình Profit Trailing

Thông sốMặc định
Use Profit TrailingBật
Start Trailing At1,5R
Trailing ATR Multiplier2,5

Profit Trail được tính từ Close và ATR hiện tại.

Nếu tăng ATR Multiplier, khoảng cách Trail Candidate so với Close có xu hướng rộng hơn.

Nếu giảm, Candidate Stop sẽ nằm gần Close hơn.

Tuy nhiên, Active Stop vẫn bị chi phối bởi nguyên tắc không nới rộng Stop, cùng các điều chỉnh từ Break Even.

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

Thông sốMặc định
Trade DirectionBoth
Position Size3 hợp đồng
Maximum Trades Per Day4
Cooldown After Exit3 nến

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

Long: Chỉ mở Long.

Short: Chỉ mở Short.

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

Theo mặc định, bot giới hạn 4 lệnh Entry mỗi ngày.

Cooldown 3 nến được sử dụng sau khi vị thế vừa đóng.

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

Thông sốMặc định
TimezoneAsia/Ho_Chi_Minh
Morning Entry Session09:00–11:30
Afternoon Entry Session13:00–14:30
Force Close14:45

Khác với một số chiến lược sử dụng cửa sổ Entry liên tục, CNPS 45 tách riêng phiên sáng và phiên chiều.

Bot sử dụng thời điểm mở nến để xác định một cây nến có thuộc Entry Session hay không.

Điều kiện Entry hiện không có bộ lọc bổ sung bắt buộc thời điểm đóng của cây nến phải trước Last Entry.

Vì vậy, cần kiểm tra khung thời gian biểu đồ, đặc biệt với những nến bắt đầu gần cuối Session.

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

CNPS 45 hỗ trợ:

Thành phầnMặc định
Fast EMA34Hiển thị
Slow EMA89Hiển thị
Pullback ArmedẨn
Entry SignalsẨn
Active Stop LossHiển thị
Active Take ProfitHiển thị
DiagnosticsẨn

EMA được tô màu theo Trend Regime:

  • Xanh khi Uptrend.
  • Đỏ khi Downtrend.
  • Xám khi No Trend.

Fast EMA sử dụng màu nhạt hơn, trong khi Slow EMA sử dụng đường đậm hơn.

Pullback Armed được biểu diễn bằng dấu tròn nhỏ màu cam, nhãn PB.

Entry Long và Short được biểu diễn bằng tam giác theo hướng tương ứng nếu bật Show Entry Signals.

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

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

  • Chart Timeframe.
  • Trend Regime.
  • EMA Separation ATR.
  • ADX.
  • Pullback RSI.
  • Setup State.
  • Body Ratio.
  • Trades Today.
  • Cooldown.
  • Active Initial Risk.
  • Maximum Profit R.
  • Break Even State.
  • Trailing State.
  • Active Stop.
  • Position.

Bảng Diagnostics có 2 cột và 15 hàng.

Đây là công cụ hỗ trợ theo dõi trạng thái xu hướng, Pullback Armed và quản trị vị thế.

Tuy nhiên, bảng không hiển thị trực tiếp lý do từng Raw Trigger bị từ chối bởi Risk, Cooldown hoặc Trade Limit.

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

Các chỉ số nên theo dõi:

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

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

Thử nghiệm 1: EMA34/89 với ADX15.

Thử nghiệm 2: Tăng Minimum ADX từ 15 lên 18 hoặc 20.

Thử nghiệm 3: Tăng EMA Separation từ 0,08 lên 0,15 ATR.

Thử nghiệm 4: RSI7 với ngưỡng 40/60.

Thử nghiệm 5: Điều chỉnh ngưỡng RSI Pullback.

Thử nghiệm 6: Setup Lifetime 6 so với 4 hoặc 8 nến.

Thử nghiệm 7: Tăng/giảm EMA Touch Tolerance.

Thử nghiệm 8: Tắt Previous High/Low Break.

Thử nghiệm 9: Tắt Fast EMA Reclaim.

Thử nghiệm 10: Điều chỉnh Minimum Body Ratio.

Thử nghiệm 11: Thay đổi Structural Stop Buffer.

Thử nghiệm 12: Giữ TP1,8R và tắt Break Even.

Thử nghiệm 13: Giữ Break Even và tắt Profit Trail.

Thử nghiệm 14: Tắt Take Profit, chỉ quản trị bằng Break Even và Profit Trail.

Thử nghiệm 15: Thay đổi Trail Start từ 1,5R lên 2R.

Thử nghiệm 16: 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: Tắt.
  • Calculate On Order Fills: Bật.
  • Fill Orders On Standard OHLC: Bật.
  • Margin Long/Short: 0.

Những thông số này phục vụ kiểm thử mô phỏng, không phản ánh đầy đủ điều kiện ký quỹ, thanh khoản hoặc giá khớp thực tế.

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

CNPS 45 hỗ trợ cảnh báo thông qua Order Fill Events trong TradingView.

Để thiết lập:

  1. Mở biểu đồ có CNPS45 TREND PULLBACK RE-ENTRY V3 ACTIVE.
  2. Chọn Create Alert.
  3. Trong Condition, chọn chiến lược CNPS45.
  4. Chọn cảnh báo Order Fills.
  5. Trong Message, sử dụng {{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 Entry

Thông điệpÝ nghĩa
ENTRY_LONG_CNPS45_V3Mở Long sau Trend Pullback Re-Entry
ENTRY_SHORT_CNPS45_V3Mở Short sau Trend Pullback Re-Entry

Hai thông điệp này được gắn vào strategy.entry().

Pullback Armed chưa phải một lệnh giao dịch, nên không phát sinh Order Fill Alert riêng chỉ vì Setup được kích hoạt.

7.2. Cảnh báo Take Profit

Thông điệpÝ nghĩa
EXIT_LONG_TP_CNPS45_V3Long đóng theo TP
EXIT_SHORT_TP_CNPS45_V3Short đóng theo TP

Các thông điệp này được sử dụng khi lệnh Limit Take Profit khớp trong mô phỏng.

Nếu Use Take Profit bị tắt, bot không đặt Target Limit.

7.3. Cảnh báo Stop Loss

Thông điệpÝ nghĩa
EXIT_LONG_SL_CNPS45_V3Long đóng theo Stop
EXIT_SHORT_SL_CNPS45_V3Short đóng theo Stop

Đây là mã mặc định khi Break Even chưa được kích hoạt.

7.4. Cảnh báo Break Even hoặc Profit Trail

Thông điệpÝ nghĩa
EXIT_LONG_BE_OR_TRAIL_CNPS45_V3Long đóng theo Stop khi Break Even đã kích hoạt
EXIT_SHORT_BE_OR_TRAIL_CNPS45_V3Short đóng theo Stop khi Break Even đã kích hoạt

Một điểm cần lưu ý là cách lựa chọn thông điệp dựa trên trạng thái Break Even Activated.

Bot không kiểm tra trực tiếp Trailing Activated để quyết định chuyển sang mã này.

Do đó, trong một số cấu hình tắt Break Even nhưng bật Profit Trail, cảnh báo Stop có thể vẫn sử dụng mã SL thông thường.

7.5. Cảnh báo Force Close

Thông điệp:

SESSION_END_CNPS45_V3

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

Theo cấu hình mặc định, Force Close là 14:45.

7.6. Disable Exit Alerts

CNPS 45 sử dụng:

Disable Exit Alerts = False.

Khi bật, bot vô hiệu hóa cảnh báo phát ra từ các lệnh strategy.exit().

Tuy nhiên, tham số này không tự động tắt Entry Alerts và Force Close Alert.

7.7. Lưu ý khi sử dụng Webhook

Các mã Alert của CNPS 45 phân biệt được:

  • Long Entry.
  • Short Entry.
  • Long TP.
  • Short TP.
  • Long SL.
  • Short SL.
  • Stop sau Break Even.
  • Session End.

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

  • EMA34 và EMA89.
  • RSI7.
  • ADX.
  • Setup Low/High.
  • Giá Structural Stop.
  • Giá Entry thực tế.
  • Initial Risk.
  • Take Profit.
  • Maximum Profit R.
  • Trạng thái Trailing.
  • Khối lượng khớp.
  • Khung thời gian.
  • Thời điểm giao dịch.

Nếu muốn tích hợp với hệ thống cảnh báo hoặc giao dịch tự động, cần bổ sung dữ liệu phù hợp qua TradingView Placeholder hoặc điều chỉnh Pine Script.

Ngoài ra, Order Fill Alert trong TradingView không đồng nghĩa lệnh thực tế đã đượ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 xác nhận trạng thái lệnh và vị thế độc lập.

Kết luận

CNPS 45 TREND PULLBACK RE-ENTRY V3 ACTIVE là chiến lược giao dịch chứng khoán phái sinh kết hợp EMA34/89, RSI7, ADX và hệ thống xác nhận hành vi giá để tìm kiếm cơ hội giao dịch sau những nhịp điều chỉnh trong xu hướng.

Điểm nổi bật của chiến lược là tách biệt quá trình phát hiện Pullback và thời điểm Re-Entry, giúp hệ thống không mở vị thế ngay khi RSI đạt ngưỡng điều chỉnh.

Với Long, bot yêu cầu Uptrend Regime hợp lệ, RSI7 giảm về 40 hoặc thấp hơn, giá quay lại vùng EMA34 và Close vẫn trên EMA89.

Sau khi Armed được kích hoạt, chiến lược chờ cây nến tăng có Body Ratio tối thiểu 25%, đóng cửa trên EMA34 và phá High của nến trước.

Với Short, quy trình tương ứng được áp dụng trong Downtrend.

Theo cấu hình mặc định, CNPS 45 sử dụng EMA34/89, EMA Separation tối thiểu 0,08 ATR, ADX15, Setup Lifetime 6 nến và EMA Touch Tolerance 0,35 ATR.

Về quản trị rủi ro, bot sử dụng Stop Loss theo cực trị Pullback với Buffer 0,20 ATR và chỉ chấp nhận khoảng Risk dự kiến từ 2 đến 8 điểm.

Take Profit được đặt tại 1,8R, Break Even kích hoạt tại 1R và Profit Trailing bắt đầu khi giao dịch đạt mức thuận lợi 1,5R.

Ngoài ra, bot hỗ trợ tối đa 4 Entry mỗi ngày, Cooldown sau Exit và Force Close cuối phiên 14:45.

Tuy nhiên, cần lưu ý rằng Risk Filter chỉ được kiểm tra trước Entry, trong khi Stop Loss được lưu theo mức giá và Actual Risk được tính lại từ giá khớp trung bình.

Do đó, khoảng rủi ro thực tế có thể khác mức dự kiến ban đầu.

Tương tự, việc Profit Trailing được kích hoạt không đảm bảo lợi nhuận sẽ được giữ lại hoàn toàn, bởi giá khớp Stop thực tế vẫn phụ thuộc vào diễn biến thị trường.

Khi sử dụng CNPS 45, điều quan trọng là hiểu rõ cơ chế Trend Regime, cách RSI7 tạo Pullback Armed, điều kiện Re-Entry, Structural Stop và sự phối hợp giữa Take Profit, Break Even với Profit Trailing.

Người dùng nên kiểm thử riêng các cấu hình RSI, ADX, EMA Separation, Setup Lifetime và Trigger Quality, đồng thời so sánh việc bật/tắt các cơ chế quản trị vị thế 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 Trend Pullback, phân tích kỹ thuật và các phương pháp quản trị vị thế 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