Hướng Dẫn Sử Dụng Bot CNPS40-VALUE AREA cho VN30F1M
TradingviewHướng dẫn Bot CNPS 40 Volume Profile: giao dịch Fade và Breakout tại VAH, VAL, POC; tìm mục tiêu HVN, Naked POC và quản trị rủi ro trên TradingView.

Mục lục
Trong giao dịch chứng khoán phái sinh, việc xác định xu hướng tăng hoặc giảm chưa phải lúc nào cũng đủ để xây dựng một chiến lược giao dịch hiệu quả. Một yếu tố quan trọng khác là nhận diện những vùng giá mà thị trường đã giao dịch với khối lượng lớn, từ đó đánh giá khu vực giá được chấp nhận và những vị trí có khả năng xuất hiện phản ứng.
Thay vì chỉ quan sát diễn biến giá theo thời gian, nhà giao dịch có thể sử dụng Volume Profile để phân tích cách khối lượng giao dịch được phân bố trên từng vùng giá.
Ba mức giá thường được quan tâm trong phương pháp này gồm:
- Value Area High (VAH): Biên trên của vùng giá chứa tỷ lệ khối lượng được lựa chọn.
- Value Area Low (VAL): Biên dưới của vùng giá đó.
- Point of Control (POC): Mức giá có khối lượng phân bổ lớn nhất trong Profile.
Khi giá di chuyển ra ngoài Value Area rồi quay trở lại, nhà giao dịch có thể xem xét những cơ hội giao dịch theo hướng quay về vùng cân bằng.
Ngược lại, khi giá phá vỡ VAH hoặc VAL với khối lượng tăng mạnh, thị trường có thể đang chuyển sang một vùng giá giao dịch mới.
Từ hai cách tiếp cận này, CNPS 40 V1.2 VP VALUE AREA FIXED CORE được phát triển bằng Pine Script v6 trên TradingView, kết hợp hệ thống Volume Profile với hai nhóm chiến lược Fade và Breakout.
Với Fade, bot tìm kiếm những tình huống giá quay lại Value Area sau khi giao dịch bên ngoài biên và sử dụng RSI để lọc tín hiệu. Mục tiêu chốt lời của nhóm này là POC.
Với Breakout, bot tìm kiếm sự kiện giá đóng cửa phá VAH hoặc VAL, đồng thời khối lượng hiện tại lớn hơn trung bình 20 nến nhân với hệ số 1,5.
Mục tiêu Breakout được ưu tiên lựa chọn từ các vùng High Volume Node (HVN) hoặc Naked POC. Nếu không tìm thấy mức giá phù hợp, chiến lược sử dụng Take Profit dự phòng theo Reward/Risk 1,8R.
Một điểm quan trọng là Volume Profile trong CNPS 40 được tính trực tiếp bằng dữ liệu OHLCV của từng cây nến. Khối lượng của một cây nến được phân bổ đều cho các mức giá mà biên độ High–Low đi qua.
Do đó, đây là Volume Profile được mô phỏng từ dữ liệu nến, không phải dữ liệu khối lượng khớp thực tế tại từng mức giá.
Theo cấu hình mặc định, bot sử dụng Profile ngày, 8 phiên gần nhất, 40 mức giá và Value Area chiếm 70% tổng khối lượng phân bổ.
Phiên bản V1.2 còn sửa lỗi thứ tự của VAH và VAL trong thuật toán mở rộng Value Area, nhằm đảm bảo biên dưới tương ứng với vùng giá thấp và biên trên tương ứng với vùng giá cao.
Vậy CNPS 40 tính Volume Profile như thế nào, điều kiện Fade và Breakout có gì khác nhau, HVN và Naked POC được sử dụng để chọn mục tiêu ra sao và nhà đầu tư cần lưu ý những gì khi sử dụng?
1. CNPS 40 V1.2 VP Value Area Fixed Core là gì?
CNPS 40 V1.2 VP Value Area Fixed Core là chiến lược giao dịch được xây dựng trên nền tảng TradingView, sử dụng các vùng giá hình thành từ Volume Profile để tìm kiếm cơ hội giao dịch hợp đồng tương lai chỉ số VN30.
Chiến lược được tổ chức thành bốn thành phần chính.
1.1. Volume Profile Engine
Volume Profile Engine chịu trách nhiệm tổng hợp dữ liệu giá và khối lượng, sau đó tính toán những mức giá quan trọng.
Bot sử dụng ba mảng dữ liệu:
- High của từng cây nến.
- Low của từng cây nến.
- Volume của từng cây nến.
Khi một Profile Period kết thúc, chiến lược tổng hợp dữ liệu của những kỳ đã đóng, xây dựng các mức giá và phân bổ Volume vào từng hàng giá.
Từ đó, bot xác định:
POC: Hàng giá có Volume lớn nhất.
VAL: Biên dưới của Value Area.
VAH: Biên trên của Value Area.
Theo cấu hình mặc định:
- Profile Period: Daily.
- Rolling Lookback: 8 kỳ.
- Rows Per Profile: 40.
- Value Area: 70%.
Các mức VAH, VAL và POC đã tính được sử dụng làm vùng tham chiếu cho tín hiệu giao dịch trong kỳ tiếp theo.
1.2. Fade Engine
Fade Engine tìm kiếm những tình huống giá quay trở lại bên trong Value Area sau khi đã giao dịch vượt ra ngoài biên.
Với Long, chiến lược yêu cầu Low của cây nến trước nằm dưới VAL, trong khi Close hiện tại quay lên trên VAL nhưng vẫn nằm dưới POC.
Với Short, chiến lược yêu cầu High của cây nến trước nằm trên VAH, trong khi Close hiện tại quay xuống dưới VAH nhưng vẫn nằm trên POC.
Sau đó, bot kết hợp hướng thay đổi của Close và RSI để xác nhận.
Mục tiêu chốt lời của Fade được đặt tại POC.
1.3. Breakout Engine
Breakout Engine tìm kiếm những sự kiện giá đóng cửa phá Value Area.
Với Long:
Close cắt lên VAH.
Với Short:
Close cắt xuống VAL.
Đồng thời, khối lượng hiện tại phải lớn hơn khối lượng trung bình 20 nến nhân với 1,5.
Điểm khác biệt so với Fade là Breakout không sử dụng RSI làm bộ lọc tín hiệu.
Thay vào đó, chiến lược tập trung vào sự kiện phá vỡ mức giá và khối lượng giao dịch tương đối.
1.4. Target Engine – HVN và Naked POC
CNPS 40 sử dụng một cơ chế chọn mục tiêu riêng cho Breakout.
Chiến lược xác định các vùng HVN từ những đỉnh khối lượng trong Volume Profile.
Ngoài ra, bot lưu POC của những Profile Period đã đóng và theo dõi các mức chưa được giá giao dịch chạm lại sau đó.
Các mức POC này được gọi là Naked POC.
Khi Breakout xảy ra, bot tìm HVN hoặc Naked POC gần nhất theo hướng giao dịch.
Nếu không có mục tiêu cấu trúc phù hợp, chiến lược sử dụng mục tiêu dự phòng 1,8R.
1.5. Cấu hình mặc định
| Thành phần | Thiết lập mặc định |
|---|---|
| Pine Script | v6 |
| Profile Period | Daily |
| Rolling Lookback | 8 kỳ |
| Rows Per Profile | 40 |
| Value Area | 70% |
| HVN Peak Threshold | 30% |
| HVN Peak Window | 3 |
| HVN Minimum Prominence | 15% |
| HVN Zone Width | 50% |
| Maximum HVN Zones | 4 |
| Trade Mode | Fade only |
| Trade Direction | Both |
| Breakout Volume Multiplier | 1,5 |
| Volume Average Length | 20 |
| RSI Length | 14 |
| Fade Long RSI | ≤ 40 |
| Fade Short RSI | ≥ 60 |
| Swing Pivot Length | 5 |
| ATR Length | 14 |
| ATR Stop Multiplier | 1,2 |
| Breakout Fallback Target | 1,8R |
| Use Naked POC | Bật |
| Minimum Risk Points | 0 – Tắt |
| Maximum Risk Points | 0 – Tắt |
| Maximum Trades Per Day | 0 – Không giới hạn |
| Cooldown Bars | 0 |
| Position Size | 3 hợp đồng |
Source Code CNPS 40: CNPS40
2. Những khái niệm kỹ thuật được sử dụng trong CNPS 40
2.1. Volume Profile là gì?
Volume Profile là công cụ phân tích sự phân bố khối lượng giao dịch theo mức giá.
Khác với biểu đồ Volume thông thường, nơi khối lượng được trình bày theo thời gian, Volume Profile tập trung vào câu hỏi:
Khối lượng giao dịch được phân bố nhiều nhất ở những vùng giá nào?
Ví dụ, giả sử VN30F1M dao động trong phạm vi 1.880–1.920.
Nếu phần lớn khối lượng giao dịch được ghi nhận tại vùng 1.895–1.905, khu vực này có thể phản ánh vùng giá được thị trường giao dịch thường xuyên trong khoảng thời gian quan sát.
Ngược lại, những vùng giá có khối lượng thấp hơn có thể phản ánh khu vực ít hoạt động giao dịch hơn.
Tuy nhiên, cần lưu ý rằng phân bố khối lượng chỉ cho biết mức độ hoạt động tại các vùng giá, không tự động xác nhận xu hướng tiếp theo hoặc cung cấp một mức hỗ trợ/kháng cự chắc chắn.
2.2. Volume Profile trong CNPS 40 được tính như thế nào?
CNPS 40 không yêu cầu một nguồn dữ liệu Volume-at-Price riêng.
Thay vào đó, chiến lược sử dụng dữ liệu High, Low và Volume của các cây nến để ước lượng sự phân bố khối lượng.
Đầu tiên, bot tìm:
Profile Low = Low thấp nhất của kỳ quan sát.
Profile High = High cao nhất của kỳ quan sát.
Sau đó, chia khoảng giá thành các hàng.
Công thức:
Step Size = (Profile High − Profile Low) / Number of Rows.
Theo mặc định:
Number of Rows = 40.
Ví dụ, nếu Profile Low bằng 1.880 và Profile High bằng 1.920:
Step Size = (1.920 − 1.880) / 40 = 1 điểm.
Mỗi hàng đại diện cho một vùng giá rộng 1 điểm.
Sau đó, bot xác định những hàng giá mà từng cây nến đã đi qua dựa trên High–Low.
Khối lượng của nến được chia đều cho tất cả các hàng đó.
Ví dụ:
- High của nến: 1.905.
- Low của nến: 1.901.
- Volume: 1.000 hợp đồng.
- Có 5 hàng giá được xác định là nằm trong biên độ nến.
Khi đó, chiến lược phân bổ:
1.000 / 5 = 200 đơn vị Volume cho mỗi hàng.
Đây là phương pháp ước lượng từ dữ liệu OHLCV.
Bot không biết chính xác bao nhiêu hợp đồng được khớp tại từng mức giá bên trong cây nến.
Vì vậy, VAH, VAL và POC có thể khác những mức được tính từ dữ liệu Volume-at-Price có độ chi tiết cao hơn.
2.3. Point of Control – POC
POC là hàng giá có tổng khối lượng phân bổ lớn nhất trong Volume Profile.
Sau khi tính Volume cho từng hàng, bot tìm hàng có giá trị lớn nhất.
Công thức xác định giá POC:
POC = Profile Low + (POC Row + 0,5) × Step Size.
Điều này có nghĩa POC được đặt tại trung điểm của hàng giá có Volume lớn nhất.
Ví dụ:
- Profile Low = 1.880.
- Step Size = 1.
- POC Row = 20.
Khi đó:
POC = 1.880 + 20,5 = 1.900,5.
Trong CNPS 40, POC có hai vai trò.
Thứ nhất, POC là mục tiêu chốt lời mặc định của Fade Long và Fade Short.
Thứ hai, bot còn lưu POC của từng kỳ Profile đã đóng để phục vụ hệ thống Naked POC Target.
Một điểm quan trọng là Rolling Profile POC và Naked POC không nhất thiết giống nhau.
Rolling POC được tính từ nhiều kỳ giao dịch, trong khi Naked POC được lưu từ Profile của từng kỳ riêng lẻ.
2.4. Value Area – Vùng giá chứa khối lượng chủ đạo
Value Area là vùng giá bao quanh POC và chứa một tỷ lệ khối lượng nhất định.
CNPS 40 mặc định sử dụng:
Value Area Percentage = 70%.
Điều này có nghĩa chiến lược tìm một dải hàng giá bao quanh POC, có tổng khối lượng ít nhất bằng 70% tổng Volume được phân bổ trong Profile.
Bot bắt đầu từ hàng POC.
Sau đó, thuật toán lần lượt so sánh Volume của hàng thấp hơn và hàng cao hơn nằm sát vùng đang mở rộng.
Hàng nào có Volume lớn hơn hoặc bằng sẽ được bổ sung vào Value Area.
Quy trình tiếp tục đến khi tổng Volume trong vùng đạt ít nhất 70%.
Như vậy, Value Area trong CNPS 40 được mở rộng từ POC theo khối lượng của các hàng liền kề, không phải chỉ chọn ra những hàng có Volume cao nhất trên toàn bộ Profile mà bỏ qua tính liên tục của vùng giá.
2.5. Value Area High – VAH
VAH là biên trên của Value Area.
Trong CNPS 40 V1.2, VAH được tính từ hàng giá cao nhất đã được đưa vào vùng Value Area.
Công thức:
VAH = Profile Low + (VAH Row + 1) × Step Size.
VAH được sử dụng để:
- Xác định vùng giá cho Fade Short.
- Xác nhận Breakout Long.
- Làm tham chiếu tính Stop Loss cho Breakout Long.
Ví dụ, nếu:
- POC = 1.900.
- VAH = 1.910.
Giá đóng cửa vượt VAH có thể tạo Breakout Long Signal nếu đáp ứng điều kiện Volume.
Ngược lại, khi giá đã giao dịch trên VAH rồi đóng cửa trở lại bên trong Value Area, bot có thể xem xét Fade Short.
2.6. Value Area Low – VAL
VAL là biên dưới của Value Area.
Công thức:
VAL = Profile Low + VAL Row × Step Size.
VAL được sử dụng để:
- Xác định vùng giá cho Fade Long.
- Xác nhận Breakout Short.
- Làm tham chiếu tính Stop Loss cho Breakout Short.
Ví dụ:
- VAL = 1.890.
- POC = 1.900.
Nếu Low nến trước nằm dưới 1.890 và Close hiện tại quay lên trên 1.890 nhưng vẫn dưới 1.900, tín hiệu có thể đáp ứng cấu trúc Fade Long.
Tuy nhiên, RSI và hướng biến động Close còn phải hợp lệ.
2.7. Điểm sửa đổi Value Area trong phiên bản V1.2
Một thay đổi quan trọng của CNPS 40 V1.2 là việc chuẩn hóa hướng mở rộng Value Area.
Theo nguyên tắc của các hàng giá:
Chỉ số hàng thấp → Giá thấp.
Chỉ số hàng cao → Giá cao.
Do đó:
Lower Cursor phải mở rộng về phía các hàng giá thấp hơn.
Upper Cursor phải mở rộng về phía các hàng giá cao hơn.
Sau khi hoàn tất mở rộng:
- VAL được tính từ Lower Cursor.
- VAH được tính từ Upper Cursor.
Cấu trúc này đảm bảo VAH nằm tại biên giá cao và VAL nằm tại biên giá thấp.
Mã nguồn còn sử dụng điều kiện:
VAL < POC < VAH.
Chỉ khi ba mức giá hợp lệ, chiến lược mới cho phép các điều kiện Fade hoặc Breakout sử dụng Profile.
2.8. Rolling Volume Profile
CNPS 40 hỗ trợ hai Profile Period:
Daily (D).
Weekly (W).
Mặc định:
Daily với Rolling Lookback = 8.
Khi một kỳ Profile mới bắt đầu, bot lấy dữ liệu của các kỳ đã đóng gần nhất để xây dựng Rolling Profile.
Ví dụ, với Profile ngày, khi ngày giao dịch mới bắt đầu, chiến lược sử dụng tối đa 8 kỳ ngày đã hoàn tất gần nhất.
Các mức VAH, VAL và POC được cập nhật tại thời điểm chuyển kỳ.
Bot không xây dựng lại toàn bộ Rolling Profile sau mỗi cây nến trong cùng một kỳ.
Vì vậy, các mức giá tham chiếu được giữ ổn định giữa những lần cập nhật Profile.
Đây là điểm khác biệt so với những hệ thống Volume Profile liên tục tính lại theo dữ liệu của phiên đang phát triển.
2.9. High Volume Node – HVN
HVN là vùng giá có mức tập trung khối lượng tương đối cao so với các hàng lân cận.
CNPS 40 sử dụng một thuật toán tìm những đỉnh Volume.
Theo cấu hình mặc định:
Peak Threshold = 30%.
Peak Window = 3.
Minimum Prominence = 15%.
Zone Width = 50%.
Maximum HVN Zones = 4.
Đầu tiên, bot tìm những hàng giá có Volume ít nhất bằng 30% Volume của hàng lớn nhất trong Profile.
Sau đó, chiến lược so sánh Volume của hàng ứng viên với những hàng nằm trong phạm vi 3 hàng ở mỗi phía.
Nếu hàng ứng viên là một đỉnh cục bộ, bot tiếp tục đánh giá mức độ nổi bật so với những vùng Volume thấp hơn ở hai phía.
Mức độ nổi bật được gọi là Prominence.
Chỉ những ứng viên đạt Minimum Prominence mới được xem xét tạo HVN Zone.
2.10. HVN Zone Width
Sau khi xác định một đỉnh HVN, CNPS 40 mở rộng vùng giá quanh đỉnh dựa trên mức Volume Floor.
Công thức:
Volume Floor = Peak Volume − Prominence × Zone Width Percentage.
Với Zone Width mặc định 50%, bot mở rộng vùng theo các hàng liền kề cho đến khi Volume giảm xuống dưới mức Floor.
Kết quả là mỗi HVN có:
- Zone Low.
- Zone High.
- Peak Volume.
Sau đó, bot sắp xếp các vùng ứng viên theo Peak Volume từ cao xuống thấp.
Theo mặc định, tối đa 4 HVN Zones được giữ lại.
Một điểm quan trọng là bot không sử dụng trực tiếp mức giá có Volume cực đại của HVN làm mục tiêu.
Thay vào đó, chiến lược tính:
HVN Target = (Zone Low + Zone High) / 2.
Đây là trung điểm của HVN Zone.
2.11. Naked POC
Naked POC là một mức POC của kỳ giao dịch đã đóng và chưa được giá chạm lại trong những cây nến tiếp theo.
Trong CNPS 40, khi một Profile Period kết thúc, chiến lược tính POC riêng của kỳ đó.
Nếu Use Naked POC đang bật, mức POC được lưu vào danh sách.
Sau đó, mỗi cây nến mới được kiểm tra:
High ≥ Naked POC và Low ≤ Naked POC.
Nếu giá giao dịch qua mức này, bot xóa Naked POC khỏi danh sách.
Theo mã nguồn, danh sách được giới hạn tối đa 30 mức.
Đây là cơ chế lưu những POC chưa được kiểm tra lại kể từ khi kỳ giao dịch tương ứng kết thúc.
Điểm cần lưu ý là Naked POC chỉ được sử dụng làm mục tiêu tiềm năng cho Breakout, không thay thế POC Target của Fade.
2.12. RSI trong chiến lược Fade
CNPS 40 sử dụng Relative Strength Index (RSI) làm bộ lọc cho hai tín hiệu Fade.
Thông số mặc định:
RSI Length = 14.
Fade Long RSI ≤ 40.
Fade Short RSI ≥ 60.
Với Fade Long, RSI cần ở mức tương đối thấp.
Với Fade Short, RSI cần ở mức tương đối cao.
Điểm quan trọng là bot không yêu cầu RSI phải cắt lên ngưỡng 40 hoặc cắt xuống ngưỡng 60.
Chỉ cần RSI hiện tại đáp ứng giới hạn được cấu hình.
Ví dụ:
- RSI = 35: Đạt bộ lọc Fade Long.
- RSI = 45: Không đạt Fade Long.
- RSI = 65: Đạt Fade Short.
- RSI = 55: Không đạt Fade Short.
2.13. Relative Volume trong Breakout
CNPS 40 sử dụng khối lượng tương đối để xác nhận Breakout.
Công thức:
Volume Average = SMA(Volume, 20).
Điều kiện:
Volume hiện tại > Volume Average × 1,5.
Ví dụ:
- SMA20 Volume = 10.000.
- Volume hiện tại = 16.000.
Tỷ lệ:
16.000 / 10.000 = 1,6.
Vì 1,6 lớn hơn 1,5, tín hiệu đạt bộ lọc Volume.
Ngược lại, nếu Volume hiện tại bằng 15.000:
Relative Volume = 1,5.
Tín hiệu không đạt vì mã nguồn sử dụng dấu lớn hơn > chứ không phải lớn hơn hoặc bằng.
2.14. Swing Pivot và ATR
CNPS 40 sử dụng hai công cụ để xác định Stop Loss:
- Swing Pivot.
- Average True Range.
Theo mặc định:
Swing Pivot Length = 5.
ATR Length = 14.
ATR Stop Multiplier = 1,2.
Swing High hoặc Swing Low chỉ được ghi nhận khi có đủ số nến xác nhận ở phía sau.
Với Pivot Length bằng 5, bot sử dụng 5 nến bên trái và 5 nến bên phải để xác nhận một cực trị.
Do đó, Swing Pivot không được phát hiện ngay tại cây nến tạo đỉnh hoặc đáy.
Sau khi được xác nhận, mức Swing mới nhất được lưu làm tham chiếu quản trị Stop Loss.
3. Nguyên lý hoạt động của CNPS 40 V1.2 VP Value Area Fixed Core
Bước 1: Thu thập dữ liệu giá và Volume
Bot lưu High, Low và Volume của các cây nến.
Những dữ liệu này được sử dụng để xây dựng Profile tại thời điểm chuyển kỳ.
Theo mặc định, Profile Period là Daily.
Bước 2: Xác định các kỳ Profile đã đóng
Khi sang kỳ mới, chiến lược xác định dữ liệu thuộc các kỳ đã hoàn tất.
Bot cũng tính và lưu POC của kỳ vừa đóng để phục vụ hệ thống Naked POC.
Nếu danh sách Naked POC vượt 30 mức, phần tử cũ nhất được loại bỏ.
Bước 3: Xây dựng Rolling Profile
Chiến lược lựa chọn tối đa 8 kỳ đã đóng gần nhất.
Bot tìm mức High cao nhất và Low thấp nhất trong dữ liệu được chọn.
Sau đó, chia khoảng giá thành 40 hàng giá.
Bước 4: Phân bổ khối lượng
Với mỗi cây nến, bot xác định những hàng giá nằm trong biên độ High–Low.
Khối lượng nến được chia đều cho các hàng này.
Sau khi hoàn tất, chiến lược có một mảng Volume đại diện cho sự phân bố khối lượng ước lượng theo giá.
Bước 5: Tính POC
Bot tìm hàng có Volume lớn nhất.
Trung điểm của hàng này được xác định làm POC.
Bước 6: Tính Value Area
Bot bắt đầu tại POC, sau đó mở rộng sang hàng giá thấp hơn hoặc cao hơn dựa trên Volume của hai hàng kề.
Quá trình tiếp tục cho đến khi tổng Volume trong Value Area đạt ít nhất 70%.
Cuối cùng:
VAL = Biên dưới.
VAH = Biên trên.
Bước 7: Tìm HVN Zones
Bot xác định các đỉnh Volume dựa trên Peak Threshold, Peak Window và Minimum Prominence.
Sau đó mở rộng vùng HVN theo Zone Width.
Các HVN được sắp xếp theo Peak Volume, giữ lại tối đa 4 vùng.
Bước 8: Kiểm tra Profile hợp lệ
Chiến lược yêu cầu:
VAL < POC < VAH.
Nếu chưa có đủ dữ liệu hoặc Value Area không hợp lệ, bot không tạo tín hiệu dựa trên Profile.
Bước 9: Xác định Signal Mode
CNPS 40 có ba chế độ:
Fade only.
Breakout only.
Both.
Mặc định:
Fade only.
Nếu chọn Fade only, bot không sử dụng Breakout Signal để mở lệnh.
Nếu chọn Breakout only, các tín hiệu Fade không được sử dụng.
Nếu chọn Both, hai bộ máy tín hiệu đều có thể được xét.
Bước 10: Phát hiện tín hiệu Fade
Với Fade Long, chiến lược tìm tình huống Low nến trước nằm dưới VAL, còn Close hiện tại trở lại phía trên VAL nhưng dưới POC.
Đồng thời, Close hiện tại phải cao hơn Close nến trước và RSI không vượt 40.
Với Fade Short, chiến lược tìm tình huống High nến trước nằm trên VAH, còn Close hiện tại quay xuống dưới VAH nhưng trên POC.
Đồng thời, Close hiện tại thấp hơn Close nến trước và RSI ít nhất bằng 60.
Bước 11: Phát hiện tín hiệu Breakout
Breakout Long yêu cầu Close cắt lên VAH.
Breakout Short yêu cầu Close cắt xuống VAL.
Trong cả hai trường hợp, Volume hiện tại phải lớn hơn SMA20 Volume nhân với 1,5.
Bước 12: Xác định Stop Loss
Bot sử dụng ATR và Swing Pivot để tính Stop Loss theo từng nhóm chiến lược.
Fade và Breakout sử dụng những công thức ATR khác nhau.
Nếu đã có Swing Pivot, bot có thể chọn mức Stop xa hơn theo hướng bảo vệ vị thế.
Bước 13: Xác định Take Profit
Với Fade:
Target = POC.
Với Breakout:
Target = HVN hoặc Naked POC gần nhất theo hướng giao dịch.
Nếu không tìm được mục tiêu cấu trúc:
Target = Entry tham chiếu ± 1,8 × Risk dự kiến.
Bước 14: Kiểm tra Risk và Target
Bot yêu cầu:
- Risk lớn hơn Minimum Tick.
- Target nằm đúng phía có lợi nhuận so với Close tín hiệu.
- Minimum Risk hợp lệ nếu được bật.
- Maximum Risk hợp lệ nếu được bật.
Theo cấu hình mặc định, Minimum Risk và Maximum Risk đều bằng 0 nên không áp dụng giới hạn điểm rủi ro bổ sung.
Bước 15: Kiểm tra điều kiện giao dịch
Trước khi mở vị thế, bot yêu cầu:
- Không có vị thế đang mở.
- Đang trong thời gian Entry.
- Nến đóng cửa trước Force Close.
- Cooldown hợp lệ.
- Chưa vượt giới hạn giao dịch nếu được thiết lập.
- Hướng Long hoặc Short được cho phép.
- Nến đã xác nhận đóng cửa.
Bước 16: Gửi lệnh
Nếu Final Long Signal hợp lệ, chiến lược gửi lệnh Long 3 hợp đồng.
Nếu Final Short Signal hợp lệ, chiến lược gửi lệnh Short 3 hợp đồng.
Đồng thời, bot tạo lệnh Stop Loss và Take Profit từ các mức giá đã được xác định.
Điểm quan trọng là CNPS 40 sử dụng:
process_orders_on_close=false
Vì vậy, lệnh thị trường được tạo khi nến tín hiệu đóng cửa thường được mô phỏng khớp tại cơ hội khớp tiếp theo, thay vì bắt buộc khớp ngay ở Close của nến tín hiệu.
4. Điều kiện vào lệnh Long và Short của CNPS 40
4.1. Fade Long – Giá quay lại Value Area từ phía dưới
Fade Long tìm kiếm cơ hội khi giá đã giao dịch dưới VAL nhưng quay lại bên trong vùng Value Area.
Điều kiện:
- Volume Profile hợp lệ.
- Trade Mode cho phép Fade.
- Low nến trước < VAL.
- Close hiện tại > VAL.
- Close hiện tại < POC.
- Close hiện tại > Close nến trước.
- RSI14 ≤ 40.
- Risk và Target hợp lệ.
- Trade Direction cho phép Long.
- Điều kiện Session, Cooldown và vị thế hợp lệ.
- Nến hiện tại đã đóng cửa.
Khi các điều kiện đạt, bot có thể tạo Fade Long.
Ví dụ minh họa:
Giả sử:
- VAL = 1.890.
- POC = 1.900.
- VAH = 1.910.
- Low nến trước = 1.886.
- Close nến trước = 1.888.
- Close hiện tại = 1.892.
- RSI14 = 35.
Kiểm tra:
Low trước < VAL: 1.886 < 1.890.
Close > VAL: 1.892 > 1.890.
Close < POC: 1.892 < 1.900.
Close > Close trước: 1.892 > 1.888.
RSI ≤ 40: 35 ≤ 40.
Tín hiệu đáp ứng cấu trúc Fade Long.
Nếu Risk Filter và các điều kiện quản trị khác hợp lệ, bot có thể mở Long.
Take Profit tham chiếu = POC 1.900.
Stop Loss sẽ được tính riêng từ ATR và Swing Pivot.
4.2. Fade Short – Giá quay lại Value Area từ phía trên
Fade Short sử dụng logic đối xứng.
Điều kiện:
- Profile hợp lệ.
- Trade Mode cho phép Fade.
- High nến trước > VAH.
- Close hiện tại < VAH.
- Close hiện tại > POC.
- Close hiện tại < Close nến trước.
- RSI14 ≥ 60.
- Risk và Target hợp lệ.
- Trade Direction cho phép Short.
- Các điều kiện giao dịch chung hợp lệ.
Ví dụ minh họa:
- VAH = 1.910.
- POC = 1.900.
- VAL = 1.890.
- High nến trước = 1.914.
- Close nến trước = 1.912.
- Close hiện tại = 1.907.
- RSI14 = 67.
Điều kiện:
High trước > VAH: Hợp lệ.
Close < VAH: Hợp lệ.
Close > POC: Hợp lệ.
Close giảm so với nến trước: Hợp lệ.
RSI ≥ 60: Hợp lệ.
Bot có thể tạo Fade Short nếu các điều kiện khác đạt yêu cầu.
Take Profit tham chiếu = POC 1.900.
4.3. Fade không bắt buộc giá cắt qua VAL/VAH bằng Close
Đây là điểm cần lưu ý.
Fade Long sử dụng:
Low của nến trước < VAL.
Sau đó:
Close hiện tại > VAL.
Bot không bắt buộc Close của nến trước phải nằm dưới VAL.
Ví dụ:
- Low nến trước = 1.888.
- Close nến trước = 1.892.
- VAL = 1.890.
Cây nến trước đã có bóng dưới xuyên VAL dù Close vẫn nằm trên VAL.
Nếu nến hiện tại tiếp tục đáp ứng các điều kiện Fade Long, chiến lược vẫn có thể tạo tín hiệu.
Với Fade Short, bot sử dụng High nến trước thay vì yêu cầu Close trước nằm trên VAH.
Vì vậy, Fade trong CNPS 40 không hoàn toàn tương đương một hệ thống ta.crossover(close, VAL) hoặc ta.crossunder(close, VAH).
4.4. Breakout Long – Phá VAH với Volume tăng
Breakout Long yêu cầu:
- Profile hợp lệ.
- Trade Mode cho phép Breakout.
- Close hiện tại cắt lên VAH.
- SMA20 Volume có dữ liệu.
- Volume hiện tại > SMA20 Volume × 1,5.
- Stop Loss hợp lệ.
- Target nằm trên Close tín hiệu.
- Trade Direction cho phép Long.
- Session, Cooldown và số lệnh hợp lệ.
- Nến đã đóng cửa.
Ví dụ minh họa:
- VAH = 1.910.
- Close trước = 1.908.
- Close hiện tại = 1.914.
- SMA20 Volume = 10.000.
- Volume hiện tại = 18.000.
Giá đã vượt VAH.
Relative Volume:
18.000 / 10.000 = 1,8.
Vì 1,8 > 1,5, bộ lọc Volume đạt yêu cầu.
Nếu Stop Loss và Target hợp lệ, bot có thể mở Breakout Long.
4.5. Breakout Short – Phá VAL với Volume tăng
Breakout Short yêu cầu:
- Profile hợp lệ.
- Trade Mode cho phép Breakout.
- Close hiện tại cắt xuống VAL.
- Volume hiện tại > SMA20 Volume × 1,5.
- Stop Loss hợp lệ.
- Target nằm dưới Close.
- Trade Direction cho phép Short.
- Điều kiện giao dịch chung hợp lệ.
Ví dụ minh họa:
- VAL = 1.890.
- Close trước = 1.893.
- Close hiện tại = 1.887.
- SMA20 Volume = 12.000.
- Volume hiện tại = 21.000.
Relative Volume:
21.000 / 12.000 = 1,75.
Tín hiệu đáp ứng bộ lọc Volume.
Nếu mức Stop Loss và Target được xác định hợp lệ, chiến lược có thể mở Breakout Short.
4.6. Fade và Breakout không sử dụng cùng một cơ chế xác nhận
| Thành phần | Fade | Breakout |
|---|---|---|
| Vị trí tín hiệu | Quay lại Value Area | Phá VAH/VAL |
| Long | Từ dưới VAL trở vào | Close cắt lên VAH |
| Short | Từ trên VAH trở vào | Close cắt xuống VAL |
| RSI14 | Có | Không |
| Volume Multiplier | Không bắt buộc | Bắt buộc |
| Target | POC | HVN/Naked POC/1,8R |
| Stop Loss | Pivot hoặc ATR × 0,6 | Pivot hoặc ATR × 1,2 |
| Mục tiêu | Quay về vùng khối lượng lớn | Tiếp diễn ra ngoài Value Area |
Hai chiến lược sử dụng cùng Volume Profile nhưng phản ánh những giả thuyết giao dịch khác nhau.
Fade hướng đến phản ứng quay trở lại vùng giá đã được giao dịch nhiều.
Breakout hướng đến khả năng giá tiếp tục vận động sau khi rời khỏi Value Area.
4.7. Trade Mode mặc định là Fade Only
Theo source:
Trade Mode = Fade only.
Điều này có nghĩa Breakout Engine vẫn có thể tính điều kiện kỹ thuật, nhưng các tín hiệu Breakout không được dùng để tạo Entry.
Nếu muốn sử dụng Breakout, người dùng cần chuyển sang:
Breakout only hoặc Both.
Đây là điểm quan trọng khi kiểm thử chiến lược.
Nếu giữ nguyên Trade Mode mặc định nhưng kỳ vọng bot giao dịch phá VAH/VAL, người dùng có thể hiểu nhầm rằng Breakout Engine không hoạt động.
4.8. Tín hiệu Breakout cần Volume lớn hơn ngưỡng, không phải bằng ngưỡng
CNPS 40 sử dụng điều kiện:
volume > volumeAverage * volMult
Nếu Volume hiện tại đúng bằng 1,5 lần Volume Average, tín hiệu không được xác nhận.
Để hợp lệ, Volume phải lớn hơn ngưỡng.
Đây là một chi tiết nhỏ nhưng có thể ảnh hưởng đến số lượng tín hiệu trong Strategy Tester.
4.9. Breakout sử dụng Close Crossover, không phải chỉ Wick Break
Một cây nến có High vượt VAH nhưng đóng cửa bên dưới VAH không đủ để tạo Breakout Long.
Tương tự, một cây nến có Low xuyên VAL nhưng Close vẫn trên VAL không đủ để tạo Breakout Short.
Chiến lược sử dụng sự kiện giao cắt của Close so với Value Area Boundary.
Do đó, Breakout xác nhận bằng giá đóng cửa, không phải chỉ dựa trên việc bóng nến vượt biên.
4.10. Không có cơ chế chờ Retest sau Breakout
CNPS 40 không sử dụng Armed Setup hoặc Confirmation Window đối với Breakout.
Khi Breakout Signal được xác nhận và điều kiện Risk/Session hợp lệ, chiến lược có thể gửi Entry ngay trên cây nến phát sinh sự kiện.
Không có bước chờ giá quay lại kiểm tra VAH hoặc VAL trong những nến sau.
Điểm này khác với những bot Pullback trước đó.
5. CNPS 40 quản trị Stop Loss và Take Profit như thế nào?
5.1. Stop Loss của Fade Long
Với Fade Long, bot tính:
ATR Stop = Low hiện tại − ATR14 × 1,2 × 0,5.
Tương đương:
ATR Stop = Low hiện tại − 0,6 ATR14.
Nếu chưa có Swing Low hợp lệ, bot sử dụng ATR Stop.
Nếu đã có Swing Low, chiến lược chọn:
Stop = Min(ATR Stop, Last Swing Low).
Điều này có nghĩa bot chọn mức Stop thấp hơn trong hai mức giá.
Ví dụ:
- Low hiện tại = 1.890.
- ATR14 = 5.
- ATR Stop = 1.887.
- Last Swing Low = 1.885.
Khi đó:
Stop Loss = 1.885.
5.2. Stop Loss của Fade Short
Với Fade Short:
ATR Stop = High hiện tại + 0,6 ATR14.
Nếu đã có Last Swing High:
Stop = Max(ATR Stop, Last Swing High).
Ví dụ:
- High hiện tại = 1.912.
- ATR14 = 5.
- ATR Stop = 1.915.
- Last Swing High = 1.917.
Stop Loss:
1.917.
Như vậy, Fade không sử dụng Stop Loss cố định theo số điểm.
Khoảng Stop phụ thuộc vào biến động ATR và cấu trúc Swing.
5.3. Stop Loss của Breakout Long
Với Breakout Long:
ATR Stop = VAH − 1,2 ATR14.
Nếu có Last Swing Low:
Stop = Min(ATR Stop, Last Swing Low).
Ví dụ:
- VAH = 1.910.
- ATR14 = 5.
- ATR Stop = 1.904.
- Last Swing Low = 1.902.
Stop Loss:
1.902.
Nếu Entry dự kiến tại Close = 1.914:
Risk dự kiến = 1.914 − 1.902 = 12 điểm.
5.4. Stop Loss của Breakout Short
Với Breakout Short:
ATR Stop = VAL + 1,2 ATR14.
Nếu có Last Swing High:
Stop = Max(ATR Stop, Last Swing High).
Ví dụ:
- VAL = 1.890.
- ATR14 = 5.
- ATR Stop = 1.896.
- Last Swing High = 1.898.
Stop Loss:
1.898.
Nếu Close tín hiệu = 1.886:
Risk dự kiến = 12 điểm.
5.5. Swing Pivot có thể làm Stop Loss rộng hơn
Một điểm quan trọng trong CNPS 40 là hàm math.min() và math.max() được sử dụng để chọn mức Stop.
Với Long, chiến lược chọn mức thấp hơn giữa ATR Stop và Last Swing Low.
Với Short, chiến lược chọn mức cao hơn giữa ATR Stop và Last Swing High.
Vì vậy, bot có xu hướng chọn Stop xa hơn khi Swing Pivot nằm ngoài mức ATR Stop.
Ngoài ra, Last Swing Pivot là mức cực trị được xác nhận gần nhất, không nhất thiết là cực trị chỉ cách vài cây nến tại thời điểm Entry.
Trong một số trường hợp, khoảng Stop Loss có thể khá lớn.
Điều này càng đáng lưu ý vì Maximum Risk Points đang tắt mặc định.
5.6. Fade Take Profit tại POC
Với Fade:
Long Target = POC.
Short Target = POC.
Ví dụ:
- Fade Long Close tín hiệu = 1.892.
- POC = 1.900.
- Stop Loss = 1.886.
Risk dự kiến:
1.892 − 1.886 = 6 điểm.
Reward dự kiến:
1.900 − 1.892 = 8 điểm.
Reward/Risk:
8 / 6 ≈ 1,33R.
CNPS 40 không yêu cầu Fade phải đạt 2R.
Mã nguồn chỉ kiểm tra POC nằm đúng phía có lợi nhuận so với Close tín hiệu.
Do đó, một giao dịch Fade có thể có Reward/Risk thấp hoặc cao tùy khoảng cách giữa Close, Stop và POC.
5.7. Breakout Target theo HVN
Khi Breakout Long xuất hiện, bot tìm các HVN có trung điểm nằm trên Close tín hiệu.
Sau đó, chiến lược lựa chọn HVN gần nhất ở phía trên.
Với Breakout Short, bot tìm HVN gần nhất nằm dưới Close.
Ví dụ:
- Breakout Long Close = 1.915.
- HVN A Midpoint = 1.920.
- HVN B Midpoint = 1.935.
Bot lựa chọn:
HVN A = 1.920.
Tuy nhiên, HVN được lựa chọn chỉ nằm trong danh sách tối đa 4 vùng đã được thuật toán giữ lại.
Vì vậy, mức HVN gần nhất trong toàn bộ Volume Profile không nhất thiết được lựa chọn nếu vùng đó không nằm trong danh sách đã lọc.
5.8. Breakout Target theo Naked POC
CNPS 40 cũng có thể sử dụng Naked POC để xác định mục tiêu Breakout.
Ví dụ, một Breakout Long xảy ra tại 1.915.
Danh sách Naked POC gồm:
- 1.918.
- 1.925.
- 1.940.
Bot chọn Naked POC gần nhất nằm trên Close tín hiệu:
1.918.
Nếu Use Naked POC bị tắt, các mức Naked POC không được sử dụng để tìm Breakout Target.
5.9. Lựa chọn giữa HVN và Naked POC
Nếu cả HVN và Naked POC cùng tồn tại theo hướng giao dịch, bot so sánh khoảng cách từ Close tín hiệu tới hai mức gần nhất.
Mức nào gần hơn sẽ được chọn.
Ví dụ:
- Breakout Long Close = 1.915.
- HVN Target = 1.922.
- Naked POC Target = 1.919.
Khoảng cách:
HVN: 7 điểm.
Naked POC: 4 điểm.
Target được chọn:
1.919.
Nếu hai mục tiêu có khoảng cách bằng nhau, hàm lựa chọn ưu tiên mục tiêu HVN được truyền vào trước.
Điểm quan trọng là chiến lược chọn mục tiêu gần nhất theo hướng giao dịch, không phải mục tiêu có Reward/Risk lớn nhất.
5.10. Fallback Take Profit 1,8R
Nếu không có HVN hoặc Naked POC phù hợp, CNPS 40 sử dụng mục tiêu dự phòng.
Mặc định:
Breakout Fallback R = 1,8.
Với Long:
Fallback Target = Close tín hiệu + Risk dự kiến × 1,8.
Với Short:
Fallback Target = Close tín hiệu − Risk dự kiến × 1,8.
Ví dụ:
- Breakout Long Close = 1.915.
- Stop Loss = 1.905.
- Risk = 10 điểm.
Take Profit dự phòng:
1.915 + 10 × 1,8 = 1.933.
Nếu không có HVN hoặc Naked POC phù hợp, bot sử dụng 1.933 làm Target.
5.11. Target cấu trúc không bắt buộc đạt 1,8R
Đây là điểm quan trọng cần hiểu chính xác.
Fallback 1,8R chỉ được sử dụng khi không tìm thấy mục tiêu cấu trúc.
Nếu bot tìm được HVN hoặc Naked POC ở đúng phía giao dịch, nó sẽ chọn mục tiêu đó ngay cả khi Reward/Risk dự kiến thấp hơn 1,8R.
Ví dụ:
- Entry tham chiếu = 1.915.
- Stop Loss = 1.905.
- Risk = 10 điểm.
- HVN gần nhất = 1.919.
Reward dự kiến:
4 điểm.
Reward/Risk:
0,4R.
Mã nguồn vẫn có thể chấp nhận Target 1.919 nếu những điều kiện khác hợp lệ.
CNPS 40 hiện không có bộ lọc Minimum Reward/Risk độc lập để loại những mục tiêu cấu trúc quá gần.
5.12. Risk Filter tùy chọn
CNPS 40 hỗ trợ:
Minimum Risk Points.
Maximum Risk Points.
Theo mặc định:
Minimum Risk = 0.
Maximum Risk = 0.
Giá trị 0 đồng nghĩa tắt bộ lọc.
Điều kiện bắt buộc còn lại là Risk phải lớn hơn Minimum Tick và Target phải nằm đúng phía so với Close tín hiệu.
Nếu người dùng đặt:
- Minimum Risk = 3 điểm.
- Maximum Risk = 10 điểm.
Bot chỉ chấp nhận các tín hiệu có Risk dự kiến từ 3 đến 10 điểm.
Tuy nhiên, đây là bộ lọc dựa trên Close tín hiệu, không phải một cơ chế tự động điều chỉnh Stop Loss hoặc số hợp đồng.
5.13. Stop Loss và Target được xác định trước khi lệnh khớp
CNPS 40 tính Prospective Stop và Prospective Target trên cây nến tạo Final Signal.
Sau đó, bot gửi strategy.entry() cùng với strategy.exit().
Giá Stop và Target được truyền vào dưới dạng mức giá cố định.
Theo source:
process_orders_on_close=false
Do đó, Entry thường được mô phỏng khớp tại cơ hội giao dịch tiếp theo.
Nếu giá khớp thực tế khác Close tín hiệu, Reward/Risk thực tế có thể thay đổi.
Ví dụ:
- Close tín hiệu Long = 1.900.
- Stop = 1.895.
- Target = 1.910.
Risk/Reward dự kiến:
Risk = 5 điểm.
Reward = 10 điểm.
Nếu Entry thực tế được khớp tại 1.902:
Risk thực tế = 7 điểm.
Reward thực tế = 8 điểm.
Tỷ lệ Reward/Risk thực tế:
8 / 7 ≈ 1,14R.
Bot không tự động dịch chuyển Stop và Target để giữ nguyên Reward/Risk ban đầu sau khi lệnh khớp.
5.14. Các cơ chế thoát lệnh
| Phương pháp | Fade | Breakout |
|---|---|---|
| Stop Loss ATR/Pivot | Có | Có |
| Target tại POC | Có | Không |
| Target tại HVN | Không | Có |
| Target tại Naked POC | Không | Có, nếu bật |
| Target Fallback 1,8R | Không | Có |
| Break Even | Không có | Không có |
| Trailing Stop | Không có | Không có |
| Time Exit theo số nến | Không có | Không có |
| Force Close cuối phiên | Có | Có |
CNPS 40 không có cơ chế dời Stop Loss về hòa vốn hoặc Trailing Stop trong mã nguồn hiện tại.
Sau khi vị thế được mở, Stop Loss và Target được duy trì theo các mức đã xác định, trừ khi giao dịch được đóng bởi lệnh thoát hoặc Force Close.
6. Hướng dẫn cài đặt và sử dụng CNPS 40 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 40 có thể sử dụng trên khung thời gian thấp hơn Profile Period đang được lựa chọn.
Ví dụ:
- Chart M1 kết hợp Profile Daily.
- Chart M5 kết hợp Profile Daily.
- Chart M15 kết hợp Profile Weekly.
Tuy nhiên, mã nguồn sẽ phát sinh Runtime Error nếu khung thời gian biểu đồ lớn hơn hoặc bằng Profile Period.
Vì vậy, không nên sử dụng Profile Daily trên biểu đồ Daily.
Bước 2: Thêm mã nguồn vào Pine Editor
Nếu sử dụng source Pine Script:
- Mở TradingView.
- Chọn Pine Editor.
- Tạo một Strategy mới.
- Dán mã nguồn CNPS40 V1.2 VP VALUE AREA FIXED CORE.
- Lưu chiến lược.
- Chọn Add to chart.
- Kiểm tra các mức VAH, POC và VAL.
- Mở Strategy Tester.
Tên Strategy:
CNPS40 V1.2 VP VALUE AREA FIXED CORE
Short Title:
CNPS40 V1.2 VPVA
Phiên bản:
//@version=6
Bước 3: Cấu hình Volume Profile
| Thông số | Mặc định |
|---|---|
| Profile Period | Daily |
| Rolling Lookback Periods | 8 |
| Rows Per Profile | 40 |
| Value Area Percentage | 70% |
Đây là nhóm tham số quyết định trực tiếp các mức VAH, POC và VAL.
Khi tăng số Rows, khoảng giá được chia thành nhiều hàng hơn, giúp tăng độ phân giải của Profile ước lượng.
Tuy nhiên, số lượng phép tính cũng tăng và kết quả POC/Value Area có thể thay đổi.
Khi tăng Rolling Lookback, Profile phản ánh dữ liệu của nhiều kỳ đã đóng hơn.
Ngược lại, giảm Lookback khiến Profile tập trung vào khoảng thời gian ngắn hơn.
Bước 4: Cấu hình HVN
| Thông số | Mặc định |
|---|---|
| Peak Threshold | 30% |
| Peak Window | 3 |
| Minimum Prominence | 15% |
| Zone Width | 50% |
| Maximum HVN Zones | 4 |
Các tham số này ảnh hưởng đến:
- Số lượng đỉnh Volume ứng viên.
- Số lượng HVN hợp lệ.
- Độ rộng của từng HVN Zone.
- Các mức giá có thể được chọn làm Breakout Target.
Điểm quan trọng là HVN không tham gia trực tiếp vào điều kiện xác nhận Breakout.
HVN được sử dụng để lựa chọn Target sau khi Breakout Signal xuất hiện.
Bước 5: Cấu hình Signal Mode
| Thông số | Mặc định |
|---|---|
| Trade Mode | Fade only |
| Trade Direction | Both |
| RSI Length | 14 |
| Fade Long RSI | 40 |
| Fade Short RSI | 60 |
| Breakout Volume Multiplier | 1,5 |
| Volume Average Length | 20 |
Người dùng có thể lựa chọn:
Fade only: Chỉ giao dịch theo sự quay trở lại Value Area.
Breakout only: Chỉ giao dịch khi giá phá VAH/VAL với Volume đạt ngưỡng.
Both: Cho phép cả hai phương pháp.
Để so sánh hai nhóm chiến lược, nên kiểm thử riêng Fade và Breakout với cùng Profile Settings.
Bước 6: Cấu hình Risk Management
| Thông số | Mặc định |
|---|---|
| Swing Pivot Length | 5 |
| ATR Length | 14 |
| ATR Stop Multiplier | 1,2 |
| Breakout Fallback R | 1,8 |
| Use Naked POC Target | Bật |
| Minimum Risk Points | 0 – Tắt |
| Maximum Risk Points | 0 – Tắt |
Nhóm Risk Management ảnh hưởng đến khoảng Stop Loss và Target được lựa chọn.
Đặc biệt, người dùng nên kiểm tra Risk thực tế của từng nhóm giao dịch.
Do Stop Loss có thể sử dụng Swing Pivot được xác nhận trước đó, khoảng Risk đôi khi có thể lớn.
Nếu muốn kiểm soát độ rộng Stop Loss theo điểm, có thể sử dụng Maximum Risk Points.
Tuy nhiên, giới hạn này chỉ được kiểm tra trước Entry và không thay đổi phương pháp tính Stop Loss.
Bước 7: Cấu hình Trade Control
| Thông số | Mặc định |
|---|---|
| Maximum Trades Per Day | 0 – Không giới hạn |
| Cooldown Bars | 0 |
| Trade Direction | Both |
Điểm đáng chú ý là CNPS 40 khác nhiều bot trước đó ở cách giới hạn giao dịch.
Maximum Trades Per Day mặc định bằng 0, tức chiến lược không giới hạn số Entry theo ngày bằng tham số này.
Cooldown Bars cũng bằng 0, tức không đặt thêm khoảng nghỉ nhiều nến sau khi thoát.
Tuy nhiên, chiến lược vẫn yêu cầu không có vị thế đang mở và kiểm tra thời điểm vừa đóng vị thế trước khi xét Entry mới.
Bước 8: Cấu hình thời gian giao dịch
| Thông số | Mặc định |
|---|---|
| Timezone | Asia/Ho_Chi_Minh |
| Entry Start | 09:00 |
| Last Entry | 14:30 |
| Force Close | 14:45 |
CNPS 40 sử dụng một cửa sổ Entry liên tục từ 09:00 đến 14:30.
Mã nguồn không có điều kiện tách riêng phiên sáng và phiên chiều.
Tuy nhiên, những khoảng thời gian không có nến giao dịch sẽ không phát sinh tín hiệu thực tế.
Bot còn yêu cầu thời điểm đóng nến phải trước Force Close.
Bước 9: Hiển thị biểu đồ
CNPS 40 hỗ trợ các thành phần chính:
| Thành phần | Hiển thị |
|---|---|
| VAH | Đường xanh dương |
| POC | Đường cam |
| VAL | Đường xanh dương |
| Long Entry | Tam giác xanh, nhãn L |
| Short Entry | Tam giác đỏ, nhãn S |
| Active Stop | Đường đỏ |
| Active Target | Đường xanh lá |
Mặc định:
- Show VAH/POC/VAL: Bật.
- Show Signal Markers: Tắt.
- Show Active SL/TP: Bật.
- Show Diagnostics: Tắt.
Các mức Profile sử dụng kiểu đường Stepline.
Điều này giúp quan sát sự thay đổi của các mức giá khi chiến lược hoàn tất kỳ Profile mới.
Bước 10: Sử dụng Diagnostics
Khi bật Show Diagnostics, CNPS 40 hiển thị bảng trạng thái gồm:
- Chart Timeframe.
- Profile Validity.
- VAH.
- POC.
- VAL.
- RSI.
- Relative Volume.
- Số HVN Zones.
- Số Naked POC Levels.
- Fade Long Setup.
- Fade Short Setup.
- Breakout Long Setup.
- Breakout Short Setup.
- Trades Today.
- Position.
Bảng Diagnostics giúp kiểm tra vì sao chiến lược chưa tạo tín hiệu.
Ví dụ:
- Profile = VALID.
- Fade Long = YES.
- Fade Short = NO.
- Breakout Long = NO.
- Breakout Short = NO.
Trong trường hợp này, bot đã phát hiện điều kiện nguồn Fade Long.
Tuy nhiên, Final Entry còn phụ thuộc vào Risk Validation, Trade Mode, Session, Cooldown và trạng thái vị thế.
Bước 11: Đánh giá trong Strategy Tester
CNPS 40 hỗ trợ kiểm thử chiến lược trong TradingView Strategy Tester.
Các chỉ số nên theo dõi:
- Net Profit.
- Maximum Drawdown.
- Profit Factor.
- Percent Profitable.
- Total Trades.
- Average Trade.
Để nghiên cứu chiến lược, người dùng có thể triển khai:
Thử nghiệm 1: Fade Only với Daily Profile 8 kỳ.
Thử nghiệm 2: Breakout Only với Daily Profile 8 kỳ.
Thử nghiệm 3: Trade Mode Both.
Thử nghiệm 4: Daily Profile so với Weekly Profile.
Thử nghiệm 5: Value Area 70% so với các mức khác.
Thử nghiệm 6: Rows Per Profile 40 so với 60 hoặc 80.
Thử nghiệm 7: Fade RSI 40/60 so với các mức khác.
Thử nghiệm 8: Breakout Volume Multiplier 1,5 so với 2,0.
Thử nghiệm 9: Bật và tắt Naked POC Target.
Thử nghiệm 10: Thay đổi Peak Threshold và Minimum Prominence của HVN.
Thử nghiệm 11: Bật Maximum Risk Points.
Thử nghiệm 12: Thay đổi Swing Pivot Length.
Thử nghiệm 13: Thay đổi ATR Stop Multiplier.
Thử nghiệm 14: Thiết lập Maximum Trades Per Day và Cooldown.
Theo source:
- 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: Tắ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 phục vụ kiểm thử mô phỏng.
Chúng 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 hợp đồng tương lai VN30.
7. Cách thiết lập cảnh báo tín hiệu giao dịch
CNPS 40 hỗ trợ cảnh báo thông qua các sự kiện khớp lệnh mô phỏng trên TradingView.
Để tạo cảnh báo:
- Mở biểu đồ có chiến lược CNPS40 V1.2 VP VALUE AREA FIXED CORE.
- Chọn Create Alert.
- Trong Condition, chọn chiến lược CNPS40.
- Chọn cảnh báo từ Order Fills.
- Trong Message, sử dụng
{{strategy.order.alert_message}}. - Chọn phương thức nhận thông báo và lưu.
7.1. Cảnh báo Fade Entry
| Thông điệp | Ý nghĩa |
|---|---|
| ENTRY_LONG_FADE_CNPS40 | Mở Long theo Fade |
| ENTRY_SHORT_FADE_CNPS40 | Mở Short theo Fade |
Các thông điệp này được sử dụng khi một Final Entry thuộc nhóm Fade được chấp thuận và lệnh tương ứng khớp trong mô phỏng.
7.2. Cảnh báo Breakout Entry
| Thông điệp | Ý nghĩa |
|---|---|
| ENTRY_LONG_BREAKOUT_CNPS40 | Mở Long theo Breakout |
| ENTRY_SHORT_BREAKOUT_CNPS40 | Mở Short theo Breakout |
Điểm đáng chú ý là CNPS 40 đã phân biệt hai nhóm Entry ngay trong Alert Message.
Nhờ đó, hệ thống nhận Webhook có thể nhận diện tín hiệu thuộc Fade hay Breakout mà không cần suy luận từ trạng thái chỉ báo.
7.3. Cảnh báo Stop Loss và Take Profit
| Thông điệp | Ý nghĩa |
|---|---|
| EXIT_LONG_TP_CNPS40 | Long đóng theo Take Profit |
| EXIT_LONG_SL_CNPS40 | Long đóng theo Stop Loss |
| EXIT_SHORT_TP_CNPS40 | Short đóng theo Take Profit |
| EXIT_SHORT_SL_CNPS40 | Short đóng theo Stop Loss |
Bot sử dụng strategy.exit() với giá Stop và Limit đã xác định.
Cảnh báo được phát sinh khi lệnh thoát tương ứng khớp trong mô phỏng.
Điều quan trọng là mã thông điệp Stop Loss/Take Profit không phân biệt riêng Fade và Breakout.
Nếu hệ thống bên ngoài muốn thống kê kết quả theo từng nhóm tín hiệu, cần lưu loại Entry trước đó để liên kết với sự kiện Exit.
7.4. Cảnh báo Force Close
CNPS 40 sử dụng:
SESSION_END_CNPS40
khi yêu cầu đóng toàn bộ vị thế cuối phiên.
Điều kiện Force Close được xác định tại mốc 14:45 theo Timezone cấu hình.
Chiến lược sử dụng:
strategy.close_all(immediately=true)
để yêu cầu đóng vị thế khi điều kiện được kích hoạt.
7.5. Disable SL/TP Alerts
CNPS 40 có tham số:
Disable SL/TP Alerts.
Mặc định:
False – Tắt.
Khi bật, bot vô hiệu hóa cảnh báo của những lệnh Stop Loss và Take Profit đượ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 hoặc Session End Alert.
Người dùng cần cấu hình phù hợp nếu kết nối với hệ thống nhận tín hiệu bên ngoài.
7.6. Những lưu ý khi tích hợp Webhook
Alert Message mặc định của CNPS 40 phân biệt được:
- Long Fade.
- Short Fade.
- Long Breakout.
- Short Breakout.
- Long TP/SL.
- Short TP/SL.
- Session End.
Tuy nhiên, những mã Alert này chưa chứa đầy đủ:
- Giá Entry thực tế.
- Giá Stop Loss.
- Giá Take Profit.
- Giá VAH/VAL/POC.
- Mục tiêu HVN hay Naked POC.
- Khối lượng hợp đồng.
- Khung thời gian.
- Thời điểm giao dịch.
Nếu tích hợp hệ thống giao dịch tự động, các thông tin này cần được bổ sung thông qua placeholder TradingView hoặc chỉnh sửa mã nguồn.
Ngoài ra, một Order Fill Alert trong Strategy Tester không đồng nghĩa lệnh tương ứng đã được khớp thực tế tại công ty chứng khoán.
Hệ thống nhận cảnh báo cần có cơ chế xác nhận trạng thái lệnh và vị thế độc lập.
Kết luận
CNPS 40 V1.2 VP VALUE AREA FIXED CORE là chiến lược giao dịch phái sinh kết hợp Volume Profile với hai phương pháp Fade và Breakout, hướng đến việc sử dụng các vùng giá có khối lượng phân bổ lớn làm cơ sở ra quyết định.
Điểm nổi bật của chiến lược là khả năng tự xây dựng Volume Profile từ dữ liệu OHLCV, xác định VAH, VAL, POC và phát triển hệ thống mục tiêu dựa trên HVN/Naked POC.
Với Fade, bot tìm những cơ hội khi giá quay lại Value Area sau khi vượt ra ngoài biên. RSI được sử dụng để lọc tín hiệu và POC là mục tiêu chốt lời.
Với Breakout, chiến lược yêu cầu giá đóng cửa cắt qua VAH hoặc VAL, đồng thời Volume lớn hơn trung bình 20 nến nhân với 1,5. Mục tiêu được lựa chọn từ HVN hoặc Naked POC gần nhất, nếu không có mức giá phù hợp thì sử dụng 1,8R.
Theo cấu hình mặc định, CNPS 40 sử dụng Daily Profile với 8 kỳ gần nhất, 40 hàng giá và Value Area 70%.
Phiên bản V1.2 cũng sửa thuật toán xác định VAH/VAL nhằm đảm bảo đúng thứ tự giá, đồng thời sử dụng cấu hình được định hướng để giảm khối lượng xử lý trên biểu đồ VN30 M1.
Tuy nhiên, Volume Profile trong source được tính bằng cách phân bổ khối lượng đều theo biên độ High–Low của mỗi nến. Vì vậy, đây là phương pháp ước lượng sự phân bố khối lượng, không phải dữ liệu Volume-at-Price chính xác tại từng mức giá.
Ngoài ra, việc tìm thấy HVN hoặc Naked POC gần nhất không đảm bảo mục tiêu Take Profit sẽ có Reward/Risk phù hợp.
Chiến lược cũng không bật giới hạn Minimum/Maximum Risk mặc định và không có cơ chế Break Even hoặc Trailing Stop.
Do đó, khi sử dụng CNPS 40, nhà đầu tư cần đặc biệt chú ý đến cách Volume Profile được tính, sự khác biệt giữa Fade và Breakout, điều kiện xác nhận Volume, cách xác định HVN/Naked POC và nguyên tắc đặt Stop Loss theo Pivot/ATR.
Người dùng nên kiểm thử riêng Fade Only, Breakout Only và Both trong TradingView Strategy Tester, so sánh các cấu hình Profile, Value Area, HVN, RSI và Risk Management trên nhiều trạng thái thị trường.
Theo dõi Phái Sinh Online để cập nhật thêm các hướng dẫn sử dụng bot giao dịch phái sinh, kiến thức Volume Profile, phân tích kỹ thuật và chiến lược giao dịch trên TradingView.
Lưu ý: Nội dung 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.





