Retest Activity Range – Chiến Lược Code2trade

1. Retest Activity Range – Chiến Lược Code2trade

Chỉ báo neo một range giao dịch vào mỗi đợt đột biến khối lượng cục bộ, sau đó phân tích khối lượng tập trung ở đâu bên trong range đó và báo tín hiệu breakout/retest tại các mép của nó

1.1 Concept của chỉ báo

Hầu hết các chỉ báo range/vùng giá neo theo cấu trúc giá (một đỉnh dao động, một đáy dao động, một mẫu hình giá). Chỉ báo này neo theo chính hoạt động giao dịch: nó tìm những cây nến mà khối lượng (volume) - không phải giá - đột biến cao hơn hẳn khối lượng của các nến xung quanh. Ý tưởng là một đợt bùng nổ khối lượng đột ngột đánh dấu thời điểm mà một lượng lớn quan tâm giao dịch tập trung tại mức giá đó, khiến high/low của đúng cây nến đó trở thành một biên giới đáng theo dõi trong tương lai.

  • Một đợt đột biến khối lượng = một range mới: mỗi khi một cây nến "pivot khối lượng" mới được xác nhận, high và low của đúng cây nến đó trở thành trần và sàn cố định của một box range hoàn toàn mới, sau đó tồn tại (và tiếp tục kéo dài sang phải) cho tới khi đợt đột biến khối lượng tiếp theo thay thế nó.
  • Volume Profile tích hợp sẵn: khi một range đang hoạt động, khối lượng của mỗi cây nến được phân bổ vào các dải giá trải theo range (một volume profile thu nhỏ), giúp bạn thấy bên trong range hoạt động giao dịch tập trung ở đâu - và một đường Point of Control (POC) nét đứt đánh dấu đúng một dải giá có khối lượng lớn nhất.
  • Tín hiệu Breakout/Retest: hai kiểu tín hiệu có thể chọn theo dõi việc giá cắt qua high/low của range (Breakout) hoặc mở cửa vượt ra ngoài một mép rồi đóng cửa quay lại bên trong (Retest), mỗi loại đánh dấu bằng một tam giác nhỏ.
  • Tự điều chỉnh khi xác nhận: vì một pivot khối lượng chỉ có thể được xác nhận sau length nến kể từ khi nó xảy ra, chỉ báo sẽ replay ngược lại length nến gần nhất so với range vừa được xác nhận ngay khi nó được xác nhận - xem mục 1.4 để hiểu điều này có ý nghĩa gì với các tín hiệu gần "mép sống" của biểu đồ.

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

  • Box Range:
    • Một box trong suốt trải từ đỉnh tới đáy của cây nến pivot khối lượng, kéo dài từ cây nến đó theo thời gian cho tới hiện tại. Tô xanh lá (mặc định) nếu bản thân cây nến pivot đóng cửa tăng, tô đỏ (mặc định) nếu đóng cửa giảm. Cả hai màu đều có thể tuỳ chỉnh.
    • Ngay khi pivot khối lượng tiếp theo được xác nhận, mép phải của box trước đó bị cắt dừng lại chính xác nơi range mới bắt đầu, nên các range xuất hiện như những khối liên tiếp, không chồng lấn nhau.
  • Đường trung bình (Average Line): một đường ngang liền nét tại đúng điểm giữa của range (trung bình cộng high/low của cây nến pivot) - đóng vai trò là đường giữa nội bộ dùng để reset trạng thái tín hiệu (xem mục 1.4).
  • Đường Point of Control (POC): một đường ngang nét đứt liên tục di chuyển tới bất kỳ dải giá nào bên trong range đang tích luỹ khối lượng nhiều nhất tính đến hiện tại - mức giá "được tranh chấp" nhiều nhất bên trong range.
  • Volume Profile (tuỳ chọn): một histogram ngang theo từng hàng được vẽ bên trong range, bám sát mép phải của nó, thể hiện khối lượng tương đối đã giao dịch tại mỗi mức giá - thanh càng dài nghĩa là khối lượng giao dịch tại mức giá đó càng lớn.
  • Tam giác tín hiệu Breakout/Retest: một tam giác nhỏ ▲ bên dưới nến hoặc ▼ bên trên nến mỗi khi giá cắt qua mép của range theo Signal Mode đã chọn.
💡 Lưu ý: chỉ báo này không định nghĩa bất kỳ alertcondition() nào - các tam giác chỉ là dấu hiệu trực quan trên biểu đồ và không thể kết nối trực tiếp với alert của TradingView.

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

  • Coi high/low của mỗi range là vùng phản ứng: vì range được sinh ra từ một đợt bùng nổ khối lượng bất thường, trần và sàn của nó là ứng viên tự nhiên cho hỗ trợ/kháng cự tương lai - hãy theo dõi cách giá phản ứng khi quay lại kiểm tra chúng sau này.
  • Dùng đường POC như một mức "nam châm"/giá trị hợp lý: POC đánh dấu nơi giao dịch diễn ra nhiều nhất bên trong range; giá thường có xu hướng quay trở lại mức này sau khi đã di chuyển ra xa.
  • Đọc hình dạng Volume Profile: một profile phình to gần đỉnh range nghĩa là phần lớn giao dịch diễn ra ở vùng giá cao (sàn yếu, đã có phép thử mạnh ở trần); một profile phình to gần đáy gợi ý điều ngược lại; phần giữa mỏng với hai đầu phình to có thể gợi ý một range đã chứng kiến hai đợt đẩy giá riêng biệt.
  • Chọn Signal Mode phù hợp với phong cách của bạn: "Breakout" đánh dấu khi giá đóng cửa vượt hẳn ra ngoài high/low của range (vào lệnh theo động lượng, tiếp diễn xu hướng); "Retest" đánh dấu một cây nến mở cửa vượt ra ngoài mép nhưng đóng cửa quay lại bên trong (một cú đẩy giá thất bại quay về trong range, hữu ích cho phong cách vào lệnh fade/đảo chiều).
  • Đừng tin tuyệt đối các dấu hiệu trong length nến gần nhất: vì việc xác nhận một pivot khối lượng mới bị trễ length nến, các tín hiệu và ranh giới range gần những nến gần nhất vẫn có thể bị sửa đổi (xoá và vẽ lại) khi đợt đột biến khối lượng tiếp theo được xác nhận - hãy coi phần rìa ngoài cùng của biểu đồ là tạm thời cho tới khi nó "ổn định".

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

Đầu vào & vai trò

  • length ("Pivot Length", số nguyên, mặc định: 10, tối thiểu 1): số nến cần có ở cả hai bên của một nến khối lượng để nó được xác nhận là "pivot khối lượng" (qua ta.pivothigh(volume, length, length)) - cây nến có khối lượng giao dịch vượt qua TẤT CẢ length nến bên trái VÀ TẤT CẢ length nến bên phải nó. Ví dụ: length=10 nghĩa là khối lượng của một nến phải cao nhất trong cửa sổ 21 nến (10 trước + chính nó + 10 sau) mới được xác nhận - và vì 10 nến "sau" phải đóng cửa xong trước, việc xác nhận luôn đến trễ 10 nến. Tăng → chỉ những đợt đột biến khối lượng thực sự đặc biệt mới đạt điều kiện (ít range hơn nhưng tồn tại lâu hơn, nhưng mỗi lần xác nhận phải replay/trễ nhiều nến hơn). Giảm → range xuất hiện thường xuyên hơn, tồn tại ngắn hơn, độ trễ xác nhận ít hơn.
  • signalMode ("Signal Mode", tuỳ chọn: Breakout / Retest, mặc định: Retest): chọn mẫu hình price-action nào sẽ kích hoạt tam giác ▲/▼. Breakout: giá đóng cửa của nến cắt từ bên trong range ra ngoài (một cú đẩy giá dứt khoát xuyên qua). Retest: nến mở cửa vượt ra ngoài một mép nhưng đóng cửa kết thúc quay lại bên trong range (giá đẩy ra ngoài rồi bị kéo lại trong cùng một nến). Ví dụ với trần range ở $100: một nến open=$98, close=$102 kích hoạt tín hiệu tăng kiểu Breakout; một nến open=$102, close=$99 kích hoạt tín hiệu tăng kiểu Retest (mở cửa trên $100, đóng cửa quay lại dưới mức đó).
  • showVp ("Show Volume Profile", boolean, mặc định: true): hiện/ẩn histogram khối lượng theo từng hàng bên trong range đang hoạt động/gần nhất. Tắt tuỳ chọn này không dừng việc theo dõi khối lượng ở nội bộ (đường POC vẫn hoạt động bình thường), nó chỉ ẩn các box histogram.
  • vpRows ("Profile Rows", số nguyên, mặc định: 10, khoảng 1-50): chiều cao của range được chia thành bao nhiêu dải giá ngang để tính volume profile và POC. Ví dụ: một range trải từ $100-$110 với vpRows=10 tạo ra 10 hàng, mỗi hàng $1; đường POC khi đó chỉ có thể rơi vào điểm giữa của một trong 10 hàng đó (VD: $100.5, $101.5, ...). Tăng → độ phân giải giá mịn hơn, POC chính xác hơn, nhưng vẽ nhiều box hơn (tốn nhiều hơn giới hạn số lượng box). Giảm → độ phân giải thô hơn, ít box hơn.
  • vpWidthPct ("Max Width %", số nguyên, mặc định: 20, khoảng 1-100): giới hạn thanh volume-profile dài nhất được phép kéo dài sang trái từ mép phải của range bao xa (tính theo % thời lượng đã trôi qua của range, tính bằng số nến). Ví dụ: một range đã tồn tại 50 nến với vpWidthPct=20 → thanh của hàng có khối lượng cao nhất tối đa dài 10 nến; mọi hàng khác được co giãn tỉ lệ ngắn hơn dựa theo tỉ trọng khối lượng của nó so với đỉnh. Tăng → các thanh profile rộng hơn, nổi bật hơn. Giảm → thanh mỏng hơn, kín đáo hơn, chiếm ít không gian biểu đồ hơn.
  • bullColor / bearColor: màu tô cho box range tuỳ theo cây nến pivot khối lượng gốc đóng cửa tăng hay giảm. Thuần tuý về hình thức.
  • bullLineColor / bearLineColor: màu của đường trung bình, đường POC, và (gián tiếp, vì dùng lại currentBoxColor) các thanh volume profile, khớp theo màu tăng/giảm của range. Thuần tuý về hình thức.
  • signalUpColor / signalDownColor: màu của tam giác tín hiệu ▲ và ▼. Thuần tuý về hình thức.

Các khối logic chính

🎯 Flow 1: Những gì bạn thấy — Range đang hoạt động, POC & Volume Profile

  • Tại bất kỳ thời điểm nào, luôn có một box range đang "sống": mép trái của nó cố định tại cây nến pivot khối lượng được xác nhận gần nhất, còn mép phải âm thầm kéo dài thêm một nến mỗi khi có một nến mới trôi qua (dù có pivot mới hình thành hay không), nên box luôn vươn tới đúng cây nến hiện tại.
  • Bên trong nó, đường trung bình liền nét đứng yên tại đúng điểm giữa high/low của cây nến pivot, trong khi đường POC nét đứt liên tục thay đổi vị trí để bám theo bất kỳ dải giá nào đang giữ khối lượng tích luỹ nhiều nhất - nó có thể di chuyển lên hoặc xuống khi càng nhiều nến bổ sung khối lượng vào các hàng khác nhau.
  • Nếu được bật, histogram volume profile cũng được vẽ lại mỗi nến: chiều dài mỗi thanh hàng được co giãn lại tương đối so với hàng có khối lượng nhiều nhất, và toàn bộ histogram luôn neo vào mép phải hiện tại của range.

🌱 Flow 2: Range mới ra đời như thế nào — Nhận diện Pivot theo Khối lượng

  • Mỗi nến, ta.pivothigh(volume, length, length) kiểm tra xem cây nến lùi lại length nến có phải là nến có khối lượng giao dịch cao nhất trong số length nến trước nó và length nến sau nó (nến hiện tại là nến cuối cùng trong số các nến "sau" đó) hay không. Chỉ khi điều đó đúng thì một range mới mới được kích hoạt - đây là một phép so sánh khối lượng, hoàn toàn độc lập với hướng giá hay mức giá.
  • Khi một pivot khối lượng mới được xác nhận, pivotHigh = high[length] và pivotLow = low[length] (đúng high/low của cây nến đột biến đó, không phải một range tích luỹ) trở thành trần và sàn cố định của range mới, và isBull = close[length] ≥ open[length] quyết định màu tăng/giảm của box.

🔧 Flow 3: Chốt Range trước đó

  • Trước khi vẽ bất cứ thứ gì mới, chỉ báo chốt lại những gì đã có: nếu một volume profile đang được theo dõi, nó nhận một lệnh gọi updateVpBoxes() cuối cùng để histogram của nó đóng băng đúng tại vị trí pivot mới thay vì tiếp tục kéo dài; box của range trước đó cùng các đường trung bình/POC của nó đều bị cắt mép phải về đúng vị trí đó, để range cũ và mới gặp nhau gọn gàng, không chồng lấn.
  • Bất kỳ tam giác tín hiệu nào đã được đặt tạm thời (ở chế độ real-time, trước khi pivot này được xác nhận) tại một vị trí nến giờ đây rơi vào bên trong lãnh thổ của range vừa được xác nhận sẽ bị xoá - chúng sẽ được tính lại hoàn toàn mới ở Flow 4 bên dưới, lần này đo theo đúng ranh giới range cuối cùng, chính xác thay vì ranh giới cũ (giờ đã bị thay thế).

🔄 Flow 4: Replay ngược lại length nến gần nhất

  • Ngay khi high/low/trung bình cố định của range mới đã biết, chỉ báo lặp ngược lại qua length nến dẫn tới (và bao gồm) nến hiện tại và đánh giá lại từng nến một như thể range đã tồn tại suốt từ đầu:
  • Reset đường giữa: bất cứ khi nào giá đóng cửa của một nến đang replay cắt qua đường trung bình (từ phía nào cũng được), state tín hiệu nội bộ được reset về trung lập - đây là điều cho phép một tam giác ▲ hoặc ▼ mới bắn lại sau này ngay cả khi cùng hướng với tín hiệu trước đó, miễn là giá đã chạm đường giữa ở giữa hai lần.
  • Kiểm tra tín hiệu: với mỗi nến đang replay, điều kiện Breakout hoặc Retest (theo signalMode, xem phần Đầu vào ở trên) được kiểm tra so với pivotHigh/pivotLow cố định của range. Nếu điều kiện đúng và state chưa đang thể hiện đúng hướng đó, một nhãn tam giác được đặt tại đúng vị trí lịch sử thật của nến đó và được theo dõi trong một danh sách để có thể dọn dẹp sau này nếu cần.
  • Tích luỹ volume profile: khối lượng của mỗi nến đang replay được phân bổ vào các dải giá của range (xem Flow 6) để profile và POC phản ánh đúng sự phân bổ khối lượng thực tế ngay từ đầu range, chứ không chỉ từ thời điểm nó được xác nhận.
  • Sau khi replay xong, đường POC và (nếu bật) các box volume-profile được cập nhật thêm một lần nữa để phản ánh mọi thứ đã tích luỹ tính đến hiện tại, tới đúng nến hiện tại.

⏱️ Flow 5: Tiếp diễn Real-time (không có pivot mới ở nến này)

  • Ở mỗi nến không có pivot khối lượng mới được xác nhận, box của range đang hoạt động cùng các đường trung bình/POC của nó chỉ đơn giản kéo dài thêm một nến sang phải - giữ cho phần hiển thị luôn đồng bộ với biểu đồ trực tiếp.
  • Đúng logic reset đường giữa, kiểm tra tín hiệu, và tích luỹ khối lượng như ở Flow 4 được áp dụng chỉ cho nến hiện tại (không cần replay, vì không có gì mới cần đối chiếu lại) - nên tín hiệu và volume profile được cập nhật sống, từng nến một, giữa các lần pivot được xác nhận.

📊 Flow 6: Cỗ máy Volume Profile

  • Phân bổ khối lượng một nến (addVolume): chiều cao của range được chia thành vpRows dải giá bằng nhau. Khối lượng của một nến được rải vào mọi dải mà dải giá cao-thấp của nó chạm tới, tỉ lệ theo mức độ chồng lấn của dải giá đó. Ví dụ: các hàng của range cao $1 mỗi hàng, một nến có low=$102/ high=$104 (dải giá $2) và volume=500 - dải $102-$103 nhận 50% dải giá của nến → 250 khối lượng, và dải $103-$104 nhận 250 còn lại. Một nến có high và low giống hệt nhau (một mức giá duy nhất được giao dịch) thay vào đó đổ toàn bộ khối lượng vào đúng một dải chứa mức giá đó.
  • Tìm POC (updatePoc): sau khi tích luỹ, dải giá đang giữ tổng khối lượng lớn nhất được xác định, và đường POC được di chuyển tới đúng mức giá giữa của dải đó.
  • Vẽ histogram (updateVpBoxes): với mỗi dải, khối lượng tích luỹ của nó được so với khối lượng của dải lớn nhất để ra tỉ lệ 0-100%; tỉ lệ đó được nhân với chiều dài thanh tối đa cho phép (vpWidthPct% của thời lượng đã trôi qua của range) để ra độ rộng box của dải đó, sau đó được vẽ kéo dài sang trái từ mép phải hiện tại của range.

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

  • Box Range: đầu ra chính - một vùng được neo theo khối lượng mà trần/sàn của nó có thể đóng vai trò hỗ trợ/kháng cự.
  • Đường trung bình: đường giữa của range, chủ yếu là tham chiếu nội bộ cho việc khi nào tín hiệu được phép bắn lại, nhưng cũng hữu ích về mặt trực quan như "tâm điểm" của range.
  • Đường POC: mức giá duy nhất có hoạt động giao dịch nặng nhất trong range - một mức "nam châm"/giá trị hợp lý tiềm năng.
  • Volume profile: một bản phân tích trực quan về việc hoạt động giao dịch tập trung ở đâu bên trong range.
  • Tam giác ▲/▼: dấu hiệu trực quan cho breakout hoặc retest tại các mép của range (chỉ là dấu hiệu trên biểu đồ - không có alert tích hợp, xem mục 1.2).
💡 Lưu ý về repaint gần mép sống: vì một pivot khối lượng chỉ có thể được xác nhận sau length nến kể từ khi nó xảy ra, mọi thứ được vẽ trong cửa sổ đuôi đó - ranh giới range, volume profile, và bất kỳ tam giác tín hiệu nào - đều là tạm thời và có thể bị xoá/vẽ lại khi pivot tiếp theo được xác nhận và ranh giới range thực sự được biết đến. Đây là một thiết kế có chủ đích, tự nhất quán (không phải lỗi), nhưng nó có nghĩa là length nến gần nhất của đầu ra nên được coi là "đang ổn định" chứ chưa phải kết quả cuối cùng.
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