Isolated Scroll Container

1. Mô tả Smart Money Volume Activity Strategy

Soi volume "nội nến" bằng cách kéo dữ liệu từ 1 khung thời gian nhỏ hơn (Lower Timeframe), tìm những cú volume bất thường (Z-score), rồi đoán xem cú volume đó là dấu vết của "Smart Money" (âm thầm) hay "Retail" (chạy theo giá) dựa trên VỊ TRÍ giá của nó nằm ở đâu trong thân nến.

1.1 Concept của chỉ báo

Ý tưởng gốc: 1 cây nến trên chart bạn đang xem thực chất được "ghép" từ rất nhiều cây nến nhỏ hơn ở 1 khung thời gian thấp hơn (VD: 1 nến 15 phút = 3 nến 5 phút gộp lại). Chỉ báo này "mổ xẻ" từng nến nhỏ bên trong đó để tìm những thời điểm khối lượng giao dịch (volume) tăng đột biến bất thường so với mức trung bình gần đây — dùng phương pháp thống kê Z-score (đo độ lệch so với trung bình theo đơn vị độ lệch chuẩn).

  • Phát hiện "cú volume lạ": mỗi nến nhỏ (LTF) trong nến lớn hiện tại được so với hàng trăm nến nhỏ trước đó — nếu volume của nó cao vượt trội (Z-score lớn), nó được đánh dấu là 1 "sự kiện" đáng chú ý.
  • Đoán "ai" tạo ra cú volume đó — dựa vào VỊ TRÍ, không phải danh tính thật: đây là phần "sáng tạo" cốt lõi của chỉ báo. Nếu giá đóng cửa của nến nhỏ đó rơi đúng vào giá đóng cửa cuối cùng của nến lớn (hoặc vọt ra ngoài thân nến lớn) → coi là Retail (đuổi giá công khai, đẩy giá tới tận điểm chốt). Nếu giá đóng cửa của nến nhỏ đó nằm "chìm" hẳn bên trong thân nến lớn, không đẩy được giá tới điểm chốt cuối cùng → coi là Smart Money (âm thầm hấp thụ/phân phối, không muốn lộ ý đồ bằng cách đẩy giá đi xa).
  • Theo dõi "còn đúng hay đã sai": mỗi cú volume lạ được vẽ thành 1 mức giá ngang (level) và bị coi là "còn hiệu lực" cho tới khi có 1 nến sau đó đóng cửa xuyên qua đúng mức giá này — chỉ báo tổng hợp volume của các level còn hiệu lực để so sánh "phe nào (Retail hay Smart Money) đang lời/lỗ nhiều volume hơn" ngay trên bảng P/L.

1.2 Chức năng của chỉ báo

  • Hiển thị:
    • Level ngang (mức giá): mỗi khi có 1 sự kiện volume lạ đủ điều kiện, chỉ báo vẽ 1 đoạn line ngang tại đúng giá đóng cửa của nến nhỏ đó, có hiệu ứng "phát sáng" (1 line lõi đậm + 1 line viền mờ hơn xung quanh). Line màu xanh ngọc/đỏ nếu là Smart Money, màu xám sáng/xám đậm nếu là Retail. Độ dày + độ đậm của line tỉ lệ thuận với độ mạnh của Z-score (Z càng lớn, line càng dày & càng rõ). Line tự kéo dài sang phải theo thời gian cho tới khi bị "xoá" (xem Luồng 4).
    • Bong bóng (bubble): mỗi nến (khung lớn) chỉ hiện 1 bong bóng tròn duy nhất tại sự kiện có |Z-score| mạnh nhất trong nến đó — kích thước chia 5 mức (tiny→huge) và độ mờ/đậm cũng theo |Z-score|, giúp lướt mắt nhanh thấy nến nào có "dấu vết" volume mạnh nhất mà không bị rối bởi nhiều bong bóng chồng nhau.
    • Bảng P/L (Profit/Loss): bảng 3 cột (Class / Profit / Loss) × 2 hàng (Retail / Smart), luôn hiện ở góc chart (mặc định trên-phải), chỉ tính toán lại ở nến cuối cùng. Ô nào có volume lớn hơn giữa Retail vs Smart (trong cùng cột Profit hoặc Loss) sẽ được tô đậm màu hơn.
  • Alert: Chỉ báo có 4 alertcondition(): "Retail Bull", "Retail Bear", "Smart Money Bull", "Smart Money Bear" — 4 alert này luôn hoạt động dựa trên việc CÓ sự kiện xảy ra hay không, hoàn toàn KHÔNG phụ thuộc vào input "Show" (who) đang lọc hiển thị gì, hay việc bật/tắt "Show Levels"/"Show Bubbles" (xem lưu ý kỹ thuật ở mục 1.4).

1.3 Cách dùng chỉ báo

  • Coi mỗi level Smart Money như 1 "vùng hấp thụ tiềm ẩn": khi giá quay lại gần 1 level Smart Money còn hiệu lực (chưa bị xoá), đó có thể là vùng hỗ trợ/kháng cự tiềm năng vì đã có 1 cú volume lớn "âm thầm" từng xảy ra đúng tại đó.
  • Dùng bong bóng để quét nhanh nến nào có "dấu vết" mạnh nhất mà không cần nhìn toàn bộ level dày đặc trên chart, đặc biệt hữu ích khi zoom xa.
  • Theo dõi bảng P/L để đọc "phe nào đang thắng": nếu volume Profit của Smart Money liên tục vượt trội hơn Retail, gợi ý dòng tiền lớn đang đặt cửa đúng hướng nhiều hơn đám đông ở khung giá hiện tại.
  • Lọc "Show" theo mục đích: chọn "Smart Money" khi chỉ muốn săn vùng hấp thụ tiềm ẩn, chọn "Retail" khi muốn theo dõi tâm lý đám đông đuổi giá, "Both" để có bức tranh đầy đủ.
  • Set alert theo từng loại (VD chỉ nhận "Smart Money Bull"/"Smart Money Bear") để không cần canh chart liên tục — lưu ý alert bắn theo MỌI sự kiện thật, không theo bộ lọc "Show" đang chọn trên chart.

1.4 Cách hoạt động của chỉ báo

Đầu vào & vai trò

  • zLen ("Period (Chart Bars)", số nguyên, mặc định 50, tối thiểu 5): số nến khung lớn (HTF) dùng làm "bộ nhớ" volume nền để tính trung bình/độ lệch chuẩn cho Z-score. Tăng lên → nền thống kê ổn định hơn nhưng phản ứng chậm hơn với thay đổi biến động gần đây; giảm xuống → nhạy hơn nhưng dễ bị nhiễu bởi vài nến bất thường gần đây.
  • thAbs ("Threshold (|Z|)", số thập phân, mặc định 2, bước 0.1): ngưỡng Z-score tối thiểu để 1 nến nhỏ được tính là "sự kiện". Tăng lên → ít sự kiện hơn nhưng mỗi sự kiện "chắc" hơn (chỉ giữ lại các cú volume cực đoan nhất).
  • ltf_ ("Lower Timeframe Value", chọn khung thời gian, mặc định "5" phút): khung thời gian nhỏ hơn dùng để "mổ" từng nến lớn ra thành nhiều nến con — VD chart 15 phút + LTF 5 phút → mỗi nến lớn có 3 nến con để soi.
  • who ("Show", lựa chọn Smart Money / Retail / Both, mặc định Both): lọc CHỈ ảnh hưởng tới level/bubble/bảng P/L đang hiển thị — KHÔNG ảnh hưởng tới việc phát hiện sự kiện hay bắn alert phía sau.
  • levels (bật/tắt, mặc định BẬT): hiện/ẩn toàn bộ level ngang.
  • bubbles (bật/tắt, mặc định BẬT): hiện/ẩn bong bóng.
  • showPLTable (bật/tắt, mặc định BẬT): hiện/ẩn bảng P/L.
  • table_size (Tiny/Small/Medium/Large, mặc định Small): cỡ chữ bảng P/L.
  • plTablePosition (9 vị trí, mặc định "top right"): vị trí đặt bảng P/L trên chart.
  • bullColor / bearColor (mặc định #00ffbb xanh ngọc / #ff1100 đỏ): màu sự kiện tăng/giảm thuộc nhóm Smart Money, dùng cho cả level, bong bóng lẫn ô bảng P/L.
  • retailbullcol / retailbearcol (mặc định #9c9c9c xám sáng / #4a4a4a xám đậm): tương tự nhưng cho nhóm Retail.

Các khối logic chính

📥 Luồng 1 — Lấy dữ liệu volume nội nến & dựng nền thống kê (mọi nến)

  • request.security_lower_tf lấy về 3 mảng volume/close/open của TẤT CẢ nến nhỏ (LTF) nằm bên trong nến lớn hiện tại — số lượng nến nhỏ mỗi nến lớn gọi là res_size (VD 15 phút / LTF 5 phút → res_size=3).
  • Mảng vols (tồn tại xuyên suốt lịch sử chart) được "đẩy" thêm res_size giá trị volume của nến hiện tại vào đầu mỗi nến, rồi cắt bớt phần cũ để chỉ giữ tối đa zLen × res_size giá trị gần nhất — đây chính là "kho dữ liệu nền" dùng để tính trung bình (avg) và độ lệch chuẩn (stdev) cho Z-score.
  • Ví dụ cụ thể: zLen=50, LTF 5 phút trên chart 15 phút (res_size=3) → kho nền giữ tối đa 150 giá trị volume 5 phút gần nhất (tương đương 50 nến 15 phút).

🔍 Luồng 2 — Phát hiện "sự kiện volume lạ" bằng Z-score (mọi nến)

  • Với từng nến nhỏ trong nến lớn hiện tại: zscore = (volume nến nhỏ đó − trung bình kho nền) ÷ độ lệch chuẩn kho nền.
  • Nến nhỏ được đánh dấu "sự kiện" nếu zscore > thAbs.
  • Ví dụ cụ thể: kho nền có avg=100, stdev=50. Nến nhỏ có volume=450 → zscore=(450−100)/50=7.0 → vượt xa thAbs=2 → được đánh dấu sự kiện mạnh. Nến nhỏ có volume=120 → zscore=0.4 → không đủ ngưỡng, bỏ qua.

🏷️ Luồng 3 — Phân loại Smart Money / Retail & hướng tăng-giảm (mọi sự kiện)

  • isBull = giá đóng cửa nến nhỏ > giá mở cửa nến nhỏ đó (nến con tăng hay giảm).
  • lvlPrice = giá đóng cửa của nến nhỏ đó — đây sẽ là mức giá vẽ level.
  • Phân loại theo vị trí trong thân nến LỚN: nếu lvlPrice trùng đúng giá đóng cửa của nến lớn hiện tại, HOẶC lvlPrice nằm ngoài/đúng biên thân nến lớn → Retail. Nếu lvlPrice nằm chìm hẳn bên trong thân nến lớn (không chạm biên nào) → Smart Money.
  • 4 cờ sự kiện retailBullBar/retailBearBar/smartBullBar/smartBearBar được set true ngay khi phát hiện, dùng làm gốc cho 4 alert — hoàn toàn không quan tâm input "who" đang lọc gì hay "levels"/"bubbles" có đang bật hay không.

📏 Luồng 4 — Vẽ & xoá level ngang (mọi nến)

  • Nếu levels bật VÀ class của sự kiện được "who" cho phép hiển thị → vẽ 2 line chồng nhau tại lvlPrice: 1 line "lõi" đậm hơn + 1 line "viền phát sáng" mờ hơn bao quanh. Độ dày & độ đậm cả 2 line tỉ lệ thuận với |Z-score| (cắt ngưỡng 1-10).
  • Ví dụ cụ thể: |Z|=7 → độ dày lõi=5, viền=6, độ mờ nền ~27% (khá đậm/rõ). |Z|=2 (vừa đủ ngưỡng) → độ dày lõi=viền=1, độ mờ nền ~71% (khá mờ, gần như chỉ là 1 line mảnh).
  • Mỗi nến, TẤT CẢ level đang tồn tại được kéo dài đầu bên phải tới nến hiện tại (line trông như đang "chạy" theo thời gian).
  • Level bị xoá hẳn khi có 1 nến SAU đó (nến_index > nến tạo ra level, VÀ nến đó đã đóng cửa xác nhận) có khoảng thân nến (từ min(open,close) đến max(open,close)) chứa đúng giá của level — tức giá đã "quay lại chạm" mức đó bằng chính thân nến.
  • Tối đa lưu 150 level cùng lúc (đúng giới hạn max_lines_count=150 của Pine); vượt quá thì level cũ nhất bị xoá trước, bất kể còn hiệu lực hay không.

🔵 Luồng 5 — Bong bóng: chỉ giữ sự kiện mạnh nhất mỗi nến (mọi nến)

  • Trong số các sự kiện của nến hiện tại (đã lọc theo "who"), chỉ giữ lại 1 sự kiện có |Z-score| lớn nhất.
  • Vẽ 1 shape tròn tại đúng giá đó, cỡ chia 5 bậc theo |Z-score| làm tròn & cắt ngưỡng 1-10 (≤2=tiny, 3-4=small, 5-6=normal, 7-8=large, >8=huge), độ mờ cũng tỉ lệ theo |Z-score|.

📊 Luồng 6 — Bảng P/L (chỉ tính ở nến cuối cùng)

  • Duyệt qua TẤT CẢ level ĐANG CÒN HIỆU LỰC (chưa bị xoá ở Luồng 4): so giá đóng cửa mới nhất với giá level gốc — level tăng (typ=1) được coi "đang lời" nếu close ≥ giá level; level giảm (typ=-1) được coi "đang lời" nếu close ≤ giá level.
  • Cộng dồn volume GỐC (lúc tạo level) của mỗi level còn hiệu lực vào 1 trong 4 ô: Retail Profit / Retail Loss / Smart Money Profit / Smart Money Loss.
  • Trong mỗi cột (Profit hoặc Loss), class nào có tổng volume lớn hơn giữa Retail vs Smart Money sẽ được tô nền đậm hơn (dễ nhìn ra "phe nào đang chiếm ưu thế").

Đầu ra & vai trò trong sử dụng

  • Level ngang: đánh dấu các mức giá từng có volume bất thường, còn "sống" cho tới khi bị giá xuyên qua — dùng làm vùng tham chiếu hỗ trợ/kháng cự tiềm năng.
  • Bong bóng: điểm nhấn nhanh cho nến có dấu vết volume mạnh nhất, hữu ích khi lướt nhiều nến cùng lúc.
  • Bảng P/L: thước đo tổng quan "phe nào (Retail/Smart Money) đang có nhiều volume đúng hướng hơn" tính tới thời điểm hiện tại.
  • 4 Alert: tự động hoá việc theo dõi từng loại sự kiện mà không phụ thuộc bộ lọc hiển thị đang chọn.
💡 Lưu ý kỹ thuật quan trọng:
  • Ngưỡng Z chỉ tính 1 chiều: dù tooltip ghi "Minimum absolute Z-score" (ngưỡng theo giá trị tuyệt đối), code thực tế chỉ kiểm tra zscore > thAbs (KHÔNG dùng math.abs()). Nghĩa là chỉ những nến nhỏ có volume ĐỘT BIẾN CAO mới được tính là sự kiện; nến nhỏ có volume THẤP BẤT THƯỜNG (Z-score âm rất sâu) không bao giờ được đánh dấu, dù về mặt thống kê đó cũng là 1 dạng "bất thường".
  • Level chỉ bị xoá khi chính THÂN nến sau đó chứa đúng giá level: nếu giá "nhảy cóc" qua 1 level (gap qua, không có nến nào có thân chứa đúng giá đó) thì level này sẽ KHÔNG bao giờ bị xoá theo cách bình thường — nó tiếp tục nằm trong bảng P/L (thường rơi vào cột Loss) cho tới khi bị đẩy ra do vượt giới hạn lưu trữ 150 level, chứ không phải vì "đã bị xác nhận sai".
  • "Smart Money" ở đây là suy luận theo VỊ TRÍ giá trong thân nến, không phải dữ liệu định danh dòng tiền thật: chỉ báo không có cách nào biết ai thực sự đứng sau lệnh — nhãn Smart Money/Retail chỉ là 1 giả định heuristic (dựa trên việc volume lạ có đẩy được giá tới điểm chốt cuối cùng của nến lớn hay bị "giấu" bên trong thân nến).
Zoom/Pan Layered Image
Sơ đồ logic chỉ báo Smart Money Volume Activity
− +

Chỉ báo trên vừa hoá thành BOT TRADE — chỉ 1 click AI

📊Chỉ báo gốc
→
🤖AI convert 1-click
→
⚙️Bot tự trade 24/7