Isolated Scroll Container

1. Mô Tả Chiến Lược Volume Order Block - Strategy Code2trade

Kết hợp một Supertrend tuỳ biến để xác định xu hướng nền với các vùng Order Block co giãn theo ATR đặt tại swing pivot đã xác nhận, tô tỷ lệ Mua/Bán thật đo được trong đúng khung nến hình thành pivot, rồi lọc tín hiệu retest theo ngưỡng tỷ lệ khối lượng do người dùng đặt.

1.1 Khái Niệm Chỉ Báo

Chỉ báo này tin rằng một Order Block (vùng cây nến cuối cùng trước một cú đảo chiều mạnh) chỉ đáng tin khi hai điều kiện cùng xảy ra: (1) giá đang ở đúng pha xu hướng phù hợp với hướng của Order Block đó, và (2) khối lượng thật trong khung nến hình thành ra pivot đó nghiêng đủ mạnh về phía mua hoặc bán. Vì vậy chỉ báo trước tiên tự tính một phiên bản Supertrend riêng (dựa trên biên độ trung bình High-Low thay vì ATR chuẩn) để xác định thị trường đang ở pha tăng hay giảm. Chỉ khi có một swing pivot vừa được xác nhận đúng chiều với xu hướng hiện tại, chỉ báo mới dựng lên một vùng Order Block rộng đúng 1 lần custom_atr ngay tại cây nến pivot đó, rồi chia vùng này thành hai ô theo đúng tỷ lệ khối lượng Mua/Bán đã đo được trong khung nến hình thành pivot. Vùng Order Block này tồn tại duy nhất - không có danh sách nhiều vùng chồng lấp - và tự động bị xoá khi giá đóng cửa vượt hẳn qua phía đối diện của nó (phá vỡ hoàn toàn). Sau khi vùng đã hình thành, chỉ báo tiếp tục theo dõi để phát tín hiệu "retest" (giá quay lại chạm biên vùng rồi bật ra) nhưng chỉ khi tỷ lệ Mua/Bán đã ghi nhận lúc tạo vùng vượt qua một ngưỡng tối thiểu do người dùng đặt riêng cho từng phía.

  • Chỉ có MỘT vùng Order Block hoạt động tại một thời điểm: khi một pivot mới hợp lệ và không chồng lấp vùng đang có xuất hiện, vùng cũ lập tức bị "đóng băng" (cố định cạnh phải) và một vùng mới thay thế hoàn toàn - chỉ báo không giữ lịch sử nhiều Order Block cùng lúc như nhiều chỉ báo OB khác.
  • Tỷ lệ Mua/Bán bị "đóng băng" ngay lúc tạo vùng: con số % hiển thị trên vùng chỉ được tính đúng một lần từ khối lượng trong khung nến hình thành pivot, sau đó không bao giờ cập nhật lại nữa dù vùng vẫn tiếp tục kéo dài sang phải theo thời gian thực.
  • Ô "cùng hướng" với Order Block luôn được tô đậm hơn ô còn lại: ở một Order Block tăng, ô "Buy %" phía dưới luôn đậm hơn ô "Sell %" phía trên (và ngược lại ở Order Block giảm) - bất kể tỷ lệ khối lượng thực tế là bao nhiêu, đây thuần tuý là quy ước tô màu để mắt người dùng lập tức nhận ra phía "chính" của vùng.
  • "Pivot Strength" giữ hai vai trò cùng lúc: cùng một input pivot_len vừa quyết định phải chờ bao nhiêu nến mới xác nhận được một swing, vừa quyết định cửa sổ bao nhiêu nến được cộng dồn khi tính tỷ lệ Mua/Bán - tăng giá trị này làm Order Block xuất hiện chậm hơn NHƯNG đồng thời làm tỷ lệ % được tính trên một khung nến rộng hơn.

1.2 Chức Năng Chỉ Báo

  • Đám Mây Xu Hướng (Trend Cloud) + Đường Trailing Stop: một đường Supertrend tuỳ biến bám sát giá, đổi màu xanh ngọc khi tăng và hồng đậm khi giảm, kèm phần tô nền mờ giữa giá đóng cửa và đường stop để đọc pha xu hướng chỉ bằng một cái liếc mắt.
  • Vùng Order Block Chia Đôi Theo Volume: một cặp box liền kề tại swing pivot gần nhất cùng chiều xu hướng, rộng đúng 1× ATR tuỳ biến, chia theo đúng tỷ lệ % khối lượng Mua/Bán đo được, có nhãn chữ hiển thị phần trăm ngay trên box.
  • Cơ Chế Tự Xoá Khi Vỡ Hoàn Toàn (tuỳ chọn): vùng Order Block tự động biến mất ngay khi một cây nến đóng cửa hoàn toàn ở phía đối diện của nó, không cần thao tác thủ công.
  • Tín Hiệu Retest Dạng Dấu Cộng (Cross): một dấu cộng nhỏ xuất hiện dưới/trên nến khi giá quay lại chạm biên vùng Order Block rồi bật ngược trở lại, chỉ được phát khi tỷ lệ Mua/Bán của vùng đó đạt ngưỡng tối thiểu người dùng đặt riêng.
  • Bộ Lọc Ngưỡng % Độc Lập Cho Mỗi Phía: "Min Buy %" và "Min Sell %" được cấu hình và bật/tắt tách biệt hoàn toàn cho tín hiệu retest tăng và tín hiệu retest giảm.

1.3 Cách Sử Dụng Chỉ Báo

  • Dùng đám mây xu hướng làm bộ lọc thiên hướng trước tiên - chỉ ưu tiên tìm lệnh mua khi đám mây đang xanh ngọc (thị trường tăng) và chỉ ưu tiên tìm lệnh bán khi đám mây đang hồng đậm (thị trường giảm), vì vùng Order Block chỉ được tạo cùng chiều với xu hướng này.
  • Đọc % Buy/Sell trên box như một chỉ số "ai đang kiểm soát" khung nến hình thành pivot - một Order Block tăng với "Buy: 80%" cho thấy phe mua áp đảo rõ rệt tại đúng cây nến tạo đáy, đáng tin hơn một Order Block chỉ có "Buy: 52%".
  • Chờ dấu cộng retest thay vì vào lệnh ngay khi vùng vừa xuất hiện - dấu cộng chỉ xuất hiện sau khi giá đã thực sự quay lại kiểm định biên vùng và bật ra, đồng thời đã qua bộ lọc % khối lượng tối thiểu.
  • Tăng "Min Buy %" / "Min Sell %" nếu tín hiệu retest ra quá nhiều và kém chất lượng - ngưỡng càng cao thì chỉ những Order Block có sự áp đảo khối lượng càng rõ rệt mới được phép phát tín hiệu.
  • Nhớ rằng chỉ có một Order Block tồn tại cùng lúc - nếu một swing pivot mới cùng chiều xuất hiện và không chồng lấp vùng cũ, vùng cũ sẽ bị thay thế ngay lập tức; đừng kỳ vọng nhìn thấy nhiều vùng lịch sử cùng lúc trên chart như một số chỉ báo OB khác.
  • Chỉ báo không có alert dựng sẵn - nếu muốn nhận thông báo tự động khi có tín hiệu retest, cần tự tạo alert kiểu "Any alert() function call" hoặc theo dõi trực quan trên chart vì kịch bản không định nghĩa alertcondition().

1.4 Cách Chỉ Báo Hoạt Động

Các Input & Vai Trò

  • st_len ("Volatility SMA Length", mặc định: 50): số nến dùng để tính trung bình biên độ High-Low, đóng vai trò như một ATR tuỳ biến (custom_atr). Giá trị càng lớn thì đường trend càng mượt và phản ứng chậm hơn với biến động ngắn hạn; ví dụ nếu biên độ trung bình 20 nến gần nhất là 8 điểm nhưng đặt 50 thì con số dùng thực tế sẽ pha loãng với các nến biến động thấp hơn trước đó, kéo custom_atr xuống thấp hơn 8 điểm.
  • st_mult ("Multiplier", mặc định: 3.5, bước 0.1): hệ số nhân với custom_atr để đặt khoảng cách của dải trên/dưới so với giá src = hl2. Với custom_atr = 10 điểm, đặt 3.5 sẽ đưa dải cách giá 35 điểm; giảm xuống 2.0 chỉ còn cách 20 điểm - dải càng gần giá thì xu hướng càng đảo chiều thường xuyên hơn (đường trend "nhạy" hơn).
  • show_fill ("Show Trend Cloud Fill", mặc định: true): bật/tắt phần tô nền mờ giữa giá đóng cửa và đường trend_stop; tắt đi thì chỉ còn lại đường kẻ, không còn vùng tô màu nền.
  • cloud_bull_col / cloud_bear_col ("Bullish/Bearish Cloud Color", mặc định: #00ffcc / #ff007f): màu riêng cho đường + vùng tô khi xu hướng tăng và giảm, độc lập hoàn toàn với màu của Order Block.
  • pivot_len ("Pivot Strength", mặc định: 7, tối thiểu 1): số nến bắt buộc ở cả bên trái lẫn bên phải để xác nhận một đỉnh/đáy swing, đồng thời cũng là số nến được cộng dồn để tính tỷ lệ Mua/Bán. Đặt 7 nghĩa là phải chờ đúng 7 nến sau đỉnh/đáy mới biết đó có phải một pivot thật hay không, và cửa sổ tính volume sẽ trải dài 8 nến (từ nến pivot đến nến xác nhận).
  • bull_col / bear_col ("Bullish/Bearish OB Color", mặc định: #00ffcc / #ff007f): màu nền của cả hai box tạo nên một vùng Order Block, dùng chung cho cả ô Buy% và Sell% của cùng một vùng.
  • txt_col ("OB Text Label Color", mặc định: #e0e0e0): màu chữ của nhãn "Buy: X%" / "Sell: Y%" hiển thị bên trong box.
  • delete_on_break ("Delete OB on Complete Break", mặc định: true): bật/tắt việc tự xoá vùng Order Block khi giá phá vỡ hoàn toàn qua phía đối diện. Tắt đi thì vùng vẫn tiếp tục hiển thị và kéo dài sang phải ngay cả khi giá đã đi hẳn qua phía kia của nó.
  • show_bull_retest / show_bear_retest ("Bullish/Bearish Retest Signals", mặc định: true cho cả hai): bật/tắt độc lập việc vẽ dấu cộng tín hiệu retest cho mỗi chiều.
  • bull_vol_pct / bear_vol_pct ("Min Buy %" / "Min Sell %", mặc định: 50.0, khoảng 0-100, bước 5.0): ngưỡng % khối lượng tối thiểu mà vùng Order Block phải đạt được (đo lúc tạo vùng) thì tín hiệu retest phía đó mới được phép phát ra. Đặt Min Buy % = 70 nghĩa là chỉ những Order Block tăng có "Buy: 70%" trở lên mới cho phép hiện dấu cộng retest; một vùng chỉ "Buy: 55%" sẽ không bao giờ phát tín hiệu dù giá có quay lại kiểm định đúng cách.
  • bull_sig_col / bear_sig_col ("Color", mặc định: #00ffcc / #ff007f): màu riêng của dấu cộng tín hiệu retest tăng và giảm, tách biệt với màu của box Order Block.

Các Luồng Logic Chính

🎯 Flow 1: Những Gì Bạn Nhìn Thấy

  • Một đường trend_stop kèm vùng tô mờ đổi màu theo xu hướng, một cặp box Order Block (Sell% và Buy%) tại swing pivot gần nhất cùng chiều xu hướng, và các dấu cộng nhỏ xuất hiện dưới/trên nến mỗi khi giá quay lại kiểm định biên vùng thành công và đạt ngưỡng % khối lượng đã đặt.

📈 Flow 2: Supertrend Tuỳ Biến (Xác Định Xu Hướng Nền)

  • custom_atr = trung bình cộng st_len nến gần nhất của (High-Low). Dải trên = hl2 + st_mult×custom_atr, dải dưới = hl2 - st_mult×custom_atr, cả hai đều "dính" theo kiểu Supertrend cổ điển: dải dưới chỉ được phép tăng lên hoặc reset khi nến trước đóng cửa dưới dải dưới cũ, dải trên chỉ được phép giảm xuống hoặc reset khi nến trước đóng cửa trên dải trên cũ. Xu hướng lật sang tăng khi giá đóng cửa vượt hẳn qua dải trên (trong khi đường trend_stop đang bám dải trên), và lật sang giảm khi giá đóng cửa xuống dưới dải dưới (trong khi đường đang bám dải dưới) - đường trend_stop luôn là dải dưới khi xu hướng tăng và dải trên khi xu hướng giảm.

🔍 Flow 3: Xác Nhận Pivot & Cửa Sổ Khối Lượng

  • ta.pivotlow/ta.pivothigh chỉ xác nhận một swing sau khi đã trôi qua đúng pivot_len nến ở cả hai phía - nghĩa là tại thời điểm chỉ báo "biết" có một pivot, nến pivot thật đã lùi về phía sau pivot_len nến (p_idx = bar_index - pivot_len). Đồng thời, hàm nội bộ get_window_volume_ratio(pivot_len) quét từ nến hiện tại lùi lại đúng pivot_len nến (tức trải đúng từ nến pivot đến nến xác nhận), cộng volume của mọi nến tăng (close≥open) vào buy_vol và mọi nến giảm vào sell_vol, rồi trả về tỷ lệ buy_vol/(buy_vol+sell_vol).

🧱 Flow 4: Tạo Hoặc Thay Thế Vùng Order Block

  • Khi xu hướng đang tăng và vừa có một pivot đáy được xác nhận, vùng ứng viên được đặt ob_top = min(open, close) tại đúng nến pivot, và ob_bot = ob_top - custom_atr (đối xứng cho pivot đỉnh khi xu hướng giảm: ob_bot = max(open, close), ob_top = ob_bot + custom_atr). Vùng ứng viên này được so với vùng đang hoạt động qua is_overlapping(): nếu hai vùng chồng lấp nhau dù chỉ một phần, ứng viên bị bỏ hẳn và vùng cũ giữ nguyên không đổi. Nếu không chồng lấp, vùng cũ (nếu có) bị đóng băng bằng cách khoá cạnh phải tại nến pivot mới, và một vùng hoàn toàn mới được dựng lên bắt đầu từ chính nến pivot đó.
  • Ngay khi vùng mới được tạo, buy_ratio được tính qua Flow 3 và dùng để chia vùng thành hai box theo split_price = active_bot + (active_top-active_bot)×buy_ratio: box phía trên mang nhãn "Sell: X%", box phía dưới mang nhãn "Buy: Y%" (Order Block tăng) hoặc ngược lại cho Order Block giảm. Dù tỷ lệ % là bao nhiêu, box nằm ở phía "đúng hướng" với chiều Order Block (Buy cho vùng tăng, Sell cho vùng giảm) luôn được tô đậm hơn (độ trong suốt 75%) so với box còn lại (độ trong suốt 85%) - đây thuần là quy ước hiển thị, không phụ thuộc vào giá trị % thực tế.

♻️ Flow 5: Mở Rộng Theo Thời Gian Thực & Xoá Khi Vỡ Hoàn Toàn

  • Mỗi nến, miễn còn tồn tại, cạnh phải của cả hai box được kéo về đúng bar_index hiện tại - đây là lý do vùng Order Block trông như đang "sống" và tự nới dài sang phải theo thời gian thực thay vì đứng yên tại độ rộng lúc tạo. Nếu delete_on_break được bật, mỗi nến chỉ báo cũng kiểm tra "vỡ hoàn toàn": với Order Block tăng, vỡ khi giá thấp nhất (low) của nến đã nằm hẳn dưới cạnh đáy vùng; với Order Block giảm, vỡ khi giá cao nhất (high) đã nằm hẳn trên cạnh đỉnh vùng. Khi điều kiện này đúng, cả hai box bị xoá ngay lập tức và không có vùng nào hoạt động cho đến khi một pivot hợp lệ tiếp theo xuất hiện.

✅ Flow 6: Lọc Tín Hiệu Retest

  • Tín hiệu retest tăng cần TẤT CẢ cùng đúng trên một nến đã đóng cửa: giá thấp nhất ( low) cắt lên trên cạnh đỉnh vùng ( ta.crossover(low, active_top) - nghĩa là nến trước đó còn xuyên xuống dưới cạnh đỉnh, nến này đã bật hẳn lên trên), nến hiện tại KHÔNG phải nến vừa xác nhận một pivot đáy mới (tránh trùng với Flow 4), tỷ lệ Buy đã ghi nhận lúc tạo vùng phải đạt tối thiểu bull_vol_pct, xu hướng KHÔNG vừa mới đổi chiều ngay trên nến này, và nến phải đã đóng cửa hoàn toàn ( barstate.isconfirmed, chống vẽ lại tín hiệu trên nến đang chạy realtime). Tín hiệu retest giảm đối xứng hoàn toàn ở phía ngược lại, dùng ta.crossunder(high, active_bot) và ngưỡng bear_vol_pct.
Ghi chú triển khai - Supertrend dùng biên độ High-Low thay vì ATR chuẩn: custom_atr là trung bình cộng đơn giản (SMA) của (High-Low), KHÔNG phải True Range chuẩn (vốn có tính cả khoảng gap so với giá đóng cửa phiên trước). Với các thị trường ít gap như crypto sự khác biệt thường nhỏ, nhưng với các cặp có gap mở phiên rõ rệt (forex đầu tuần, cổ phiếu qua đêm), custom_atr có thể đo thấp hơn biến động thực tế so với ATR chuẩn.
Ghi chú triển khai - vùng Order Block không có bộ nhớ lịch sử: biến lưu vùng đang hoạt động (active_top_box, active_bot_box...) đều là biến đơn (var), không phải mảng/danh sách. Khi một vùng mới hợp lệ thay thế vùng cũ, vùng cũ chỉ đơn giản bị đóng băng cạnh phải trên chart (KHÔNG bị xoá khỏi chart, vẫn nhìn thấy như một hình chữ nhật tĩnh) nhưng biến chương trình không còn tham chiếu tới nó nữa - nếu muốn quay lại tương tác (ví dụ kiểm tra retest) với một Order Block cũ hơn thì kịch bản không hỗ trợ.

Đầu Ra & Vai Trò Sử Dụng

  • Đám mây xu hướng + đường trend_stop: bộ lọc thiên hướng tổng quát, quyết định chỉ báo sẽ tìm Order Block tăng hay giảm tại thời điểm đó.
  • Cặp box Order Block (Sell%/Buy%): vùng giá tiềm năng để theo dõi retest, với nhãn % cho biết mức độ áp đảo khối lượng ngay tại nến hình thành pivot.
  • Dấu cộng tín hiệu retest: điểm xác nhận trực quan rằng giá đã quay lại kiểm định vùng và bật ra, đã qua đủ bộ lọc xu hướng + % khối lượng + không trùng nến tạo pivot.
  • Cảnh báo: không có - kịch bản này không định nghĩa alertcondition() lẫn lệnh gọi alert() động nào, dù các biến buy_retest/sell_retest đã được tính sẵn đầy đủ.
Zoom/Pan Layered Image
Background Overlay
− +

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