1. Mô tả Chiến Lược Delta-Void Precision
Một volume profile "hai mặt": profile "void" (khoảng trống) bên trái làm nổi bật các dải giá thanh khoản thấp, và profile chuẩn bên phải kèm split buy/sell tích hợp, cộng thêm đường level cấu trúc tuỳ chọn cho high-volume node hoặc khoảng trống thanh khoản
1.1 Concept của chỉ báo
Một volume profile thông thường cho bạn biết giao dịch diễn ra nhiều nhất ở đâu. Chỉ báo này thêm vào hình ảnh gương: giao dịch hầu như không diễn ra ở đâu. Mỗi dải giá trong cửa sổ nhìn lại được đo cả tổng khối lượng lẫn khối lượng đó chia ra sao giữa áp lực mua và bán ước tính, sau đó được vẽ thành hai profile ở hai phía đối diện của chart - một cái mọc lớn theo khối lượng, cái kia mọc lớn theo sự vắng mặt của khối lượng.
- Hai profile, logic đối nghịch: thanh profile "chuẩn" bên phải mọc lớn hơn khi một dải giá có nhiều khối lượng hơn (cách đọc high-volume node cổ điển); thanh profile "đảo ngược/void" bên trái mọc lớn hơn khi một dải giá có ít khối lượng hơn - một dải gần như không có giao dịch tạo ra một thanh void đậm nét, trong khi một dải được giao dịch nhiều thu nhỏ dần về vô hình ở phía này.
- Split buy/sell không cần thêm thanh: thay vì vẽ hai thanh màu riêng cho khối lượng mua và bán, mỗi thanh profile chuẩn được chia bởi một đường thẳng đứng duy nhất đặt đúng tại ranh giới buy/sell ước tính, kèm phần trăm gắn nhãn ở mỗi bên.
- Một công tắc, hai cách đọc cấu trúc khác nhau: cùng một logic nhận diện kiểu pivot có thể hoặc làm nổi bật High Volume Node (hỗ trợ/kháng cự cổ điển từ giao dịch dày đặc) hoặc Volume Gap (chân không thanh khoản nơi giá có khả năng di chuyển xuyên qua nhanh chóng), tuỳ theo một lựa chọn "Level Display" duy nhất.
- Một bản chụp nhanh, không phải lịch sử chạy liên tục: toàn bộ profile được dựng lại từ đầu chỉ ở nến hiện tại - nó không tích luỹ hay giữ lại qua các nến theo cách một số chỉ báo profile khác làm.
1.2 Chức năng của chỉ báo
- Inverse (Void) Profile - bên trái: các box kéo dài thêm sang trái khi một dải giá càng trống, tô màu bằng gradient phai từ màu nền chart (không có void) tới màu void (void tối đa). Dải void sâu nhất được viền đậm, và bất kỳ dải void đủ lớn nào được gắn nhãn phần trăm gap của nó.
- Normal Profile - bên phải: các box volume profile cổ điển neo tại một điểm cố định phía trước giá, mọc dần về phía giá khi khối lượng của dải tăng lên, tô màu bằng gradient từ nền (khối lượng thấp) tới màu chuẩn (khối lượng cao, tại bin đỉnh).
- Buy/Sell Delta Split: một đường chia dọc duy nhất bên trong mỗi thanh profile chuẩn đủ rộng, chia nó tại phần trăm buy ước tính, kèm nhãn buy% màu xanh và sell% màu cam ở hai bên.
- Đường Level Cấu trúc (tuỳ chọn): các đường nét đứt full-width tại các đỉnh cục bộ theo khối lượng thô (High Volume Node) hoặc theo độ mạnh void (Volume Gap), mỗi đường gắn nhãn giá của nó.
1.3 Cách dùng chỉ báo
- Đọc phía trái như "nơi giá có thể di chuyển xuyên qua nhanh": một thanh void đậm nét đánh dấu một dải giá mà thị trường phần lớn đã bỏ qua trong cửa sổ nhìn lại - nếu giá quay lại vùng đó, tương đối ít quan tâm giao dịch đã thiết lập để làm chậm nó lại.
- Đọc phía phải như hỗ trợ/kháng cự cổ điển: các thanh profile chuẩn rộng nhất, đậm nhất đánh dấu nơi giao dịch tập trung nhiều nhất - vùng phản ứng tiềm năng.
- Dùng split buy/sell để đánh giá phe nào chiếm ưu thế trong một dải giá: một đường chia nằm xa về một phía của thanh nghĩa là khối lượng của dải đó nghiêng hẳn về mua hoặc bán (theo ước tính vị trí đóng cửa, không phải dữ liệu order flow đo được - xem mục 1.4).
- Chuyển "Level Display" cho khớp với thứ bạn đang tìm: "Highest Volume" cho mức S/R cổ điển, "Volume Gaps" để cụ thể đánh dấu các dải trống nhất, đói thanh khoản nhất, thành các đường tham chiếu.
- Tăng "Lookback Period" để có góc nhìn cấu trúc rộng hơn với cái giá là tính toán nặng hơn mỗi nến (xem mục 1.4); tăng "Number of Bins" để có độ phân giải giá mịn hơn với cái giá là các thanh riêng lẻ mỏng hơn, nhiễu hơn.
1.4 Cách hoạt động của chỉ báo
Đầu vào & vai trò
- lookback ("Lookback Period", số nguyên, mặc định: 400, tối thiểu 50): bao nhiêu nến gần đây được quét để dựng profile. Ví dụ: ở mức 400, dải giá và khối lượng của mọi bin đều suy ra thuần tuý từ 400 nến gần nhất, bỏ qua bất cứ gì cũ hơn. Cao hơn → góc nhìn vĩ mô hơn, "toàn bộ lịch sử gần đây". Thấp hơn → góc nhìn hẹp hơn, tập trung vào gần đây hơn. Vì cửa sổ này được quét lại hoàn toàn mỗi nến (xem lưu ý bên dưới), giá trị rất cao làm tăng tải tính toán.
- binCount ("Number of Bins", số nguyên, mặc định: 30, tối thiểu 10): dải giá cao-thấp được chia thành bao nhiêu dải bằng nhau. Cao hơn → độ phân giải giá mịn hơn, các thanh riêng lẻ mỏng hơn. Thấp hơn → dải thô hơn, "cục" hơn.
- profileWidth ("Max Profile Width (Bars)", số nguyên, mặc định: 50, tối thiểu 5): chiều dài ngang tối đa, tính bằng nến, mà thanh profile void hoặc chuẩn có thể đạt tới (bin đỉnh ở phía chuẩn, hoặc bin trống nhất ở phía void, đạt đúng độ rộng này).
- levelMode ("Level Display", tuỳ chọn: None / Highest Volume / Volume Gaps, mặc định: "Highest Volume"): những level cấu trúc nào được vẽ thành đường tham chiếu nét đứt - đỉnh cục bộ theo khối lượng bin thô (High Volume Node) hay đỉnh cục bộ theo độ mạnh void (Volume Gap). "None" tắt hoàn toàn các đường cấu trúc.
- invColor ("Inverse Peak (Left)", mặc định: xanh ngọc): màu của profile void tại độ mạnh void tối đa.
- normColor ("Normal Bin Base", mặc định: xanh dương): màu của profile chuẩn tại khối lượng tối đa (bin đỉnh).
- levelColor ("Level Color", mặc định: trắng trong suốt 30%): màu của các đường level cấu trúc nét đứt và nhãn giá của chúng.
- labelSize ("Global Text Size", tuỳ chọn: tiny/small/normal/large, mặc định: small): cỡ chữ cho mọi nhãn văn bản chỉ báo vẽ ra (nhãn % gap, % buy/sell, và nhãn giá level cấu trúc đều dùng chung cài đặt này).
- Profile là một bản chụp nhanh đầy đủ được dựng lại mỗi nến, không phải một lịch sử tích luỹ - các mảng bin bị làm rỗng và quét lại toàn bộ cửa sổ lookback từ đầu mỗi lần, và mọi box/line/label đã vẽ đều bị xoá và vẽ lại từ 0. Không có gì ở đây tồn tại lâu dài hay tích luỹ qua các nến theo cách một số chỉ báo kiểu profile khác làm.
- Split buy/sell là một ước tính, không phải dữ liệu order-flow/tick đo được - nó được suy ra thuần tuý từ việc giá đóng cửa của mỗi nến lịch sử nằm ở đâu trong dải cao-thấp của chính nến đó (đóng cửa gần đỉnh ≈ chủ yếu là áp lực mua ở nến đó, đóng cửa gần đáy ≈ chủ yếu là áp lực bán), một kỹ thuật xấp xỉ phổ biến vì dữ liệu tick buy/sell thật không khả dụng cho Pine Script.
- Các bin được gán chỉ dùng giá đóng cửa của mỗi nến (không phải toàn bộ dải cao-thấp của nó) - một phương pháp gộp đơn giản hơn so với các cách tiếp cận volume-profile trải khối lượng của một nến vào mọi mức giá mà dải của nó chạm tới.
Các khối logic chính
🎯 Flow 1: Những gì bạn thấy
- Một profile void mọc dần sang trái từ điểm bắt đầu cửa sổ lookback, một profile chuẩn kèm split buy/sell tích hợp mọc dần sang trái từ một điểm cố định phía trước giá, và (tuỳ chọn) các đường level cấu trúc nét đứt full-width - tất cả được dựng lại hoàn toàn chỉ ở nến hiện tại.
🧮 Flow 2: Chia Giá thành các Bin
- Đỉnh cao nhất và đáy thấp nhất trong lookback nến gần nhất xác định dải giá tổng thể, chia thành binCount dải bằng nhau.
- Lặp ngược qua từng nến trong lookback nến đó: toàn bộ khối lượng của mỗi nến được cộng vào đúng một dải chứa giá đóng cửa của nến đó, và một tỉ trọng khối lượng mua ước tính (dựa theo việc giá đóng cửa của nến đó nằm ở đâu trong dải cao-thấp của chính nó) được cộng vào một tổng khối lượng mua đang chạy riêng cho cùng dải đó.
- Dải có khối lượng tích luỹ nhiều nhất trở thành maxVol - tham chiếu "100%" mà cả hai profile đều co giãn dựa vào.
🕳️ Flow 3: Inverse (Void) Profile
- Với mỗi dải, "độ mạnh void" = maxVol trừ đi khối lượng của chính dải đó - một dải ở đỉnh có độ mạnh void bằng 0 (không vẽ thanh), một dải hoàn toàn trống có độ mạnh void bằng đúng maxVol (thanh void rộng nhất có thể).
- Thanh void đó được vẽ kéo dài sang trái từ điểm bắt đầu cửa sổ lookback, tô màu bằng gradient chỉ trở nên rõ rệt khi void lớn dần - một dải được giao dịch nhiều phai dần về vô hình ở phía này, trong khi một dải hầu như không được giao dịch nổi bật rõ rệt. Dải void sâu nhất trên toàn bộ các bin được viền đậm; các thanh void đủ rộng (trên 70% độ rộng tối đa) được gắn nhãn phần trăm gap của chúng.
📊 Flow 4: Normal Profile & Buy/Sell Delta Split
- Độ rộng thanh profile chuẩn của mỗi dải tỉ lệ theo tỉ trọng của nó trong maxVol, neo tại một vị trí x cố định (profileWidth nến phía trước nến hiện tại) và kéo dài sang trái về phía giá khi khối lượng tăng lên - hướng neo ngược lại với profile void.
- Bên trong một dải có bất kỳ khối lượng nào, một đường thẳng đứng duy nhất chia thanh tại tỉ trọng khối lượng mua ước tính: phần thanh giữa đường đó và điểm neo phải cố định đại diện cho khối lượng mua, phần giữa đường đó và mép trái của thanh đại diện cho khối lượng bán. Nếu thanh đủ rộng, nhãn buy% xanh và sell% cam được đặt ở hai bên đường chia đó.
📍 Flow 5: Nhận diện Level Cấu trúc
- Duyệt qua các bin nội bộ (bỏ qua bin đầu và cuối, vốn không có lân cận ở một bên), metric được chọn của mỗi bin - khối lượng thô cho chế độ "Highest Volume", hoặc độ mạnh void cho chế độ "Volume Gaps" - được so sánh với 2 bin lân cận trực tiếp ở cả hai bên.
- Một bin có metric được chọn cao hơn hẳn cả hai lân cận là một đỉnh cục bộ: một đường nét đứt được vẽ tại giá điểm giữa của bin đó, trải toàn bộ chiều rộng từ điểm bắt đầu cửa sổ lookback tới mép xa của profile chuẩn, gắn nhãn "HVN" hoặc "GAP" cộng mức giá.
🔄 Flow 6: Nhịp Vẽ Lại
- Mỗi nến, mọi box/line/label đã vẽ trước đó bị xoá và mảng theo dõi của chúng bị làm rỗng. Việc vẽ profile/level thực sự chỉ xảy ra khi barstate.islast đúng (nến hiện tại/gần nhất) - nên profile hiển thị luôn phản ánh một bản chụp nhanh đầy đủ, mới nhất tính đến bây giờ, không phải một chuỗi được vẽ theo lịch sử.
Đầu ra & vai trò trong sử dụng
- Profile void: làm nổi bật các dải giá thanh khoản thấp nơi giá đã di chuyển xuyên qua nhanh trong lịch sử.
- Profile chuẩn + delta split: cách đọc S/R theo khối lượng cao cổ điển, cùng một cảm nhận nhanh về phe nào (mua/bán) chiếm ưu thế ở mỗi dải.
- Đường level cấu trúc: một lớp mức tham chiếu duy nhất có thể chỉ vào hoặc "nơi giao dịch tập trung" hoặc "nơi thanh khoản mỏng", tuỳ theo thứ bạn đang tìm.


