1. Mô tả Chiến Lược High Timeframe Volume Profile
Chỉ báo chiếu vài cây nến khung thời gian cao hơn (HTF) gần nhất thành các nến tổng hợp thu nhỏ đặt cạnh giá hiện tại, mỗi nến kèm volume profile, POC và đường tham chiếu High/Low riêng
1.1 Concept của chỉ báo
Trader thường muốn biết "cây nến Daily (hoặc Weekly) hiện đang trông như thế nào?" trong khi vẫn đang theo dõi một biểu đồ khung thời gian thấp hơn (như M15 hay H1) - nhưng việc chuyển qua lại giữa các khung thời gian làm mất tập trung, còn nếu vẽ nguyên một cây nến HTF theo đúng độ rộng lịch sử thật thì sẽ khổng lồ trên khung thời gian thấp. Chỉ báo này giải quyết vấn đề đó bằng cách tổng hợp một phiên bản thu nhỏ của vài cây nến Khung Thời Gian Cao hơn (HTF) gần nhất và vẽ chúng dưới dạng hình khối gọn gàng nằm cạnh giá hiện tại - như một "bảng điều khiển HTF" thu nhỏ sống ngay trên biểu đồ thông thường của bạn.
- Thân nến tổng hợp, không phải nến thật: 4 cây nến hiển thị bên phải giá không phải là một phần của chuỗi nến thật - chúng là các box và đường được vẽ tay, đặt tại các toạ độ x được chiếu cố định, dựng từ dữ liệu OHLC mà chính script tự tổng hợp từ khung thời gian HTF bạn chọn.
- Mỗi nến mang theo volume profile riêng: đi kèm mỗi nến tổng hợp, một histogram ngang nhỏ thể hiện khối lượng giao dịch của khung thời gian gốc (thấp hơn) được phân bổ như thế nào trên dải giá của cây nến HTF đó, cộng thêm một Point of Control (POC) được làm nổi bật - mức giá duy nhất có khối lượng giao dịch nhiều nhất.
- Đường tham chiếu cũng xuất hiện trên chart thật: mức POC và High/Low của mỗi nến HTF không chỉ hiện cạnh hình tổng hợp - chúng còn được vẽ thành đường kéo dài trên đúng hành động giá lịch sử thật nơi cây nến HTF đó thực sự diễn ra, giúp bạn thấy chính xác các mức giá đó nằm ở đâu so với cấu trúc giá thật.
- Luôn cập nhật: cây nến HTF đang hình thành (chưa đóng cửa) được theo dõi và hiển thị sống động dưới dạng "Candle 1", cập nhật mỗi nến, bên cạnh tối đa 3 cây nến HTF đã đóng để làm bối cảnh tham chiếu.
1.2 Chức năng của chỉ báo
-
Nến HTF tổng hợp (tối đa 4, vẽ bên phải giá):
- Mỗi nến là một hình nến nhỏ (râu + thân) dựng từ open/high/low/close thật của chu kỳ HTF đó. Xanh lá (mặc định) nếu nến đóng cửa tăng, cam-đỏ (mặc định) nếu đóng cửa giảm.
- "Candle 1" luôn là nến HTF đang hình thành (sống, chưa đóng cửa); "Candle 2/3/4" là nến HTF đã đóng gần nhất thứ 1, thứ 2, thứ 3. Mỗi ô có thể hiện/ẩn độc lập.
- Các nến được sắp xếp từ trái sang phải theo thứ tự Candle 1 → 2 → 3 → 4, nghĩa là dashboard đọc từ mới nhất đến cũ nhất từ trái sang phải (ngược với cách một biểu đồ giá thông thường đọc).
- Một nhãn chữ nhỏ phía trên mỗi nến cho biết đây là ô nào và khung thời gian nào (VD: "C1 1D", "C2 4H").
- Histogram Volume Profile (theo từng nến, tuỳ chọn): một histogram ngang theo từng hàng nằm ngay bên trái mỗi nến tổng hợp, thể hiện bao nhiêu khối lượng giao dịch của cây nến HTF đó xảy ra tại mỗi mức giá. Bin có khối lượng nhiều nhất (Point of Control) được làm nổi bật bằng màu cam riêng biệt (mặc định).
- Đường & nhãn POC (tuỳ chọn): một đường (nét đứt mặc định, có thể đổi kiểu) vẽ tại mức giá POC, kéo dài từ nơi cây nến HTF đó thực sự bắt đầu trên chart thật cho tới vị trí tổng hợp của nó bên phải - cộng thêm một nhãn giá tuỳ chọn.
- Đường & nhãn High/Low (tuỳ chọn): hai đường nét chấm tại đỉnh và đáy thật của nến HTF, cũng kéo dài từ điểm bắt đầu lịch sử thật của nến đó tới vị trí tổng hợp của nó - cộng thêm nhãn giá "H"/"L" tuỳ chọn.
- Chớp nền khi có nến HTF mới: một hiệu ứng nổi bật nền toàn chiều rộng xuất hiện tại cây nến nơi một chu kỳ HTF mới bắt đầu, như một dấu hiệu trực quan nhanh trên chart thật.
- Alert: một alert duy nhất - "New HTF Candle" - bắn ra mỗi khi một chu kỳ HTF mới bắt đầu (tức là cây nến HTF trước đó vừa đóng cửa).
1.3 Cách dùng chỉ báo
- Theo dõi khung thời gian cao hơn mà không cần đổi chart: tiếp tục giao dịch trên khung thời gian thấp bạn thích trong khi "Candle 1" cho bạn thấy, theo thời gian thực, cây nến Daily hiện tại (hoặc bất kỳ HTF nào bạn chọn) đang hình thành ra sao.
- Dùng đường tham chiếu POC/High/Low như hỗ trợ/kháng cự thật: vì các đường này được vẽ trên đúng hành động giá lịch sử thật (không chỉ cạnh hình tổng hợp), chúng đánh dấu các mức giá thực sự bạn có thể theo dõi phản ứng trên khung thời gian giao dịch của mình.
- So sánh các nến HTF gần đây cạnh nhau: khi bật đủ 4 ô, bạn có ngay một cái nhìn trực quan về hướng, biên độ, và nơi khối lượng tập trung của vài cây nến HTF gần nhất - hữu ích để phát hiện một xu hướng đang hình thành hoặc sự dịch chuyển của nơi khối lượng đang tích tụ.
- Đọc hình dạng volume profile của từng nến: POC gần đỉnh dải giá của một nến gợi ý phần lớn giao dịch xảy ra gần vùng cao (kháng cự tiềm năng đang hình thành ở đó); POC gần đáy gợi ý điều ngược lại.
- Dùng alert "New HTF Candle" để biết chính xác khi nào một chu kỳ chuyển giao: hữu ích cho bất kỳ quy trình nào cần đánh giá lại đúng lúc mở phiên Daily/Weekly/v.v.
- Cho dashboard thêm không gian: tăng "Projection Offset" nếu các nến tổng hợp đang lấn vào vùng giá đang giao dịch, hoặc giảm "Profile Width" / tắt các ô nến không dùng nếu bạn muốn dashboard gọn hơn.
1.4 Cách hoạt động của chỉ báo
Đầu vào & vai trò
- tf ("Timeframe", bộ chọn khung thời gian, mặc định: "D" / Ngày): khung thời gian cao hơn mà các nến sẽ được tổng hợp từ đó. Ví dụ: đặt thành "240" (4 giờ) trong khi đang xem chart 15 phút, mỗi nến tổng hợp sẽ đại diện cho một chu kỳ 4 giờ được dựng từ các nến 15 phút gốc.
- offset ("Projection Offset (bars)", số nguyên, mặc định: 20, khoảng 5-100): số nến về bên phải của nến thật cuối cùng nơi nến tổng hợp đầu tiên ("Candle 1") được vẽ. Tăng → dashboard nằm xa vùng giá đang giao dịch hơn (ít rối mắt gần hành động giá). Giảm → dashboard nằm gần nến thật cuối cùng hơn.
- binsQty ("Profile Bins", số nguyên, mặc định: 20, khoảng 5-50): dải giá cao-thấp của mỗi nến HTF được chia thành bao nhiêu dải giá bằng nhau cho volume profile của nó. Ví dụ: một nến HTF trải từ $100-$120 với binsQty=20 tạo ra 20 bin, mỗi bin $1; POC khi đó chỉ có thể rơi vào điểm giữa của một trong 20 bin đó. Tăng → độ phân giải giá mịn hơn. Giảm → profile thô hơn, "cục" hơn.
- profileWidth ("Profile Width (bars)", số nguyên, mặc định: 15, khoảng 3-40): chiều dài ngang tối đa (tính bằng nến) mà box của bin có khối lượng lớn nhất được phép kéo dài; mọi bin khác được co giãn tỉ lệ ngắn hơn. Đồng thời trực tiếp điều khiển khoảng cách ngang giữa các ô nến kề nhau (khoảng cách ô = profileWidth + 8 nến), nên profile rộng hơn cũng đồng nghĩa khoảng cách giữa các nến tổng hợp lớn hơn.
- showPoc ("Show POC Line", boolean, mặc định: true): hiện/ẩn đường POC và nhãn của nó (nếu nhãn đang bật). Bin POC trong histogram vẫn được tô nổi bật màu cam bất kể cài đặt này.
- pocLineStyle ("POC Line Style", tuỳ chọn: Dashed / Solid / Dotted, mặc định: Dashed): kiểu hiển thị chỉ áp dụng cho đường POC - không ảnh hưởng đến đường High/Low, vốn luôn là nét chấm bất kể cài đặt này.
- showHiLo ("Show High / Low Levels", boolean, mặc định: true): hiện/ẩn các đường tham chiếu nét chấm High và Low (và nhãn của chúng, nếu nhãn đang bật) cho mỗi nến.
- showLabels ("Labels", boolean, mặc định: true): công tắc tổng cho mọi nhãn giá - POC, High, Low, và nhãn "C1/C2/C3/C4 {khung TG}" phía trên mỗi nến tổng hợp. Tắt tuỳ chọn này vẫn giữ nguyên các đường/box/nến hiển thị, chỉ là không có chữ.
- bullCol / bearCol: màu dùng cho thân nến tổng hợp tăng/giảm, các bin volume-profile (không phải POC), và các đường tham chiếu High/Low. Thuần tuý về hình thức.
- pocCol ("POC Color"): màu cho bin POC được làm nổi bật, đường POC, và chữ nhãn POC. Thuần tuý về hình thức.
- candle1_on / candle2_on / candle3_on / candle4_on (boolean, tất cả mặc định: true): hiện/ẩn độc lập từng ô trong 4 ô nến (đang hình thành, đã đóng gần nhất, đã đóng thứ 2, đã đóng thứ 3). Tắt một ô sẽ bỏ qua hoàn toàn việc vẽ nến, profile, và đường tham chiếu của ô đó ở mỗi nến.
Các khối logic chính
🎯 Flow 1: Những gì bạn thấy — Hai vùng đầu ra
- Vùng A - dashboard được chiếu: tối đa 4 hình nến tổng hợp nằm ở các vị trí cố định bên phải nến thật cuối cùng, mỗi nến đi kèm histogram volume profile gọn của riêng nó. Đọc từ trái sang phải là Candle 1 (sống) → Candle 2 (vừa đóng gần nhất) → Candle 3 → Candle 4, tức là mới nhất trước.
- Vùng B - đường tham chiếu trên chart thật: với mỗi nến hiển thị, đường POC và (tuỳ chọn) High/Low của nó không dừng lại ở hình tổng hợp - chúng kéo dài ngược về sau, phủ trực tiếp lên các nến lịch sử thật nơi cây nến HTF đó thực sự xảy ra, để bạn có thể đối chiếu các mức giá đó với cấu trúc chart thật.
- Cả hai vùng chỉ tồn tại/cập nhật trên nến gần nhất của biểu đồ (barstate.islast) - đây là một lớp phủ "trạng thái hiện tại" sống, không phải thứ được vẽ theo lịch sử từng nến một. Mỗi khi script tính lại trên nến mới nhất, các bản vẽ cũ bị xoá và vẽ lại hoàn toàn mới (xem Flow 2).
🧹 Flow 2: Kỹ thuật "Xoá & Vẽ lại"
- Vì dashboard này chỉ cần hiển thị trạng thái hiện tại (không phải lịch sử của các dashboard trước đó), script không bao giờ để các bản vẽ cũ chồng chất. Với các đối tượng đơn lẻ như râu nến, thân nến, đường POC, và đường High/Low, nó dùng một kỹ thuật Pine mà việc tạo một line/box/label mới cũng ngay lập tức tra và xoá bản trước đó được tạo tại đúng chỗ đó trong code - nên chỉ có phiên bản mới nhất tồn tại trên chart.
- Với histogram volume-profile (một mảng gồm nhiều box, mỗi bin một box), hàm thay vào đó xoá tường minh mọi box trong danh sách của nó và làm rỗng danh sách ở đầu mỗi lần chạy, rồi dựng lại từng bin một từ đầu.
- Lưu ý kỹ thuật: vì danh sách dùng để xoá histogram này được khai báo riêng bên trong hàm vẽ profile cho mỗi ô trong 4 ô nến, mỗi ô theo dõi (và chỉ xoá) box profile của riêng nó - histogram của Candle 1 được quản lý hoàn toàn độc lập với Candle 2/3/4.
🌱 Flow 3: Theo dõi các nến HTF
- Mỗi nến, đỉnh/đáy đang chạy của nến HTF đang hình thành được cập nhật liên tục (rtHigh/rtLow mở rộng để bao gồm đỉnh/đáy của nến mới).
- Ngay khi timeframe.change(tf) bắn ra (nến đầu tiên của một chu kỳ HTF mới, nghĩa là chu kỳ HTF trước đó vừa kết thúc), open/close/high/low của nến vừa hoàn thành cùng vị trí nến bắt đầu/kết thúc thật của nó được đẩy vào các mảng lưu trữ vĩnh viễn - và các biến theo dõi "đang hình thành" được reset để bắt đầu mới từ nến này.
- Đây chính là điều cho phép "Candle 2/3/4" luôn hiển thị nến HTF đã đóng gần nhất thứ 1/2/3 (đọc từ cuối các mảng lưu trữ), trong khi "Candle 1" luôn hiển thị nến đang sống, chưa hoàn thành (đọc từ các biến theo dõi đang chạy, không phải từ mảng).
🔧 Flow 4: Dựng Volume Profile cho một nến
- Kiểm tra điều kiện trước: nếu đỉnh/đáy của nến bị thiếu, quá phẳng (high ≤ low), hoặc phạm vi nến không hợp lệ, sẽ không có gì được vẽ cho nến đó.
- Gộp mỗi nến gốc theo giá đóng cửa: dải giá của nến được chia thành binsQty bin bằng nhau. Mỗi nến gốc (khung thời gian thấp hơn) nằm trong phạm vi bắt đầu/kết thúc thật của nến HTF này sẽ có toàn bộ khối lượng của nó cộng vào đúng một bin chứa giá đóng cửa của nến đó - khác với một số phương pháp volume-profile khác trải khối lượng của một nến vào mọi mức giá mà dải cao-thấp đầy đủ của nó chạm tới, chỉ báo này gộp toàn bộ khối lượng của mỗi nến vào đúng một bin, dựa theo giá đóng cửa. Ví dụ: binSize=$1, một nến đóng cửa ở $105.30 bên trong một cây nến trải từ $100-$120 đổ toàn bộ khối lượng vào bin bao phủ $105-$106.
- Tìm POC: bin có khối lượng tích luỹ lớn nhất được xác định; mức giá giữa của nó trở thành POC.
- Vẽ histogram: độ rộng box của mỗi bin được đặt tỉ lệ theo tỉ trọng khối lượng của nó so với bin lớn nhất, nhân với profileWidth, với tối thiểu 1 nến để mọi bin đều hiện rõ. Bin POC được tô màu riêng biệt (cam theo mặc định); mọi bin khác dùng màu tăng/giảm. Mọi bin mọc dần sang trái từ một điểm neo cố định cách thân nến tổng hợp 2 nến về bên trái.
- Vẽ các đường tham chiếu: nếu được bật, đường/nhãn POC và đường/nhãn High/Low được vẽ bắt đầu từ vị trí bắt đầu lịch sử thật của nến trên chart thật, kéo dài tới vừa qua vị trí của nến tổng hợp.
📐 Flow 5: Định vị 4 ô nến
- Toàn bộ bước này chỉ chạy khi barstate.islast đúng (nến sống/gần nhất).
- Khoảng cách ô được tính một lần là profileWidth + 8 nến. Vị trí X của Candle 1 là bar_index + offset; mỗi ô tiếp theo cộng thêm một khoảng cách nữa. Ví dụ: offset=20, profileWidth=15 → khoảng cách=23 nến → Candle 1 tại bar_index+20, Candle 2 tại bar_index+43, Candle 3 tại bar_index+66, Candle 4 tại bar_index+89.
- Với mỗi ô đang bật, dữ liệu OHLC phù hợp được lấy ra (biến theo dõi live cho Candle 1, hoặc lấy từ cuối các mảng lưu trữ cho Candle 2-4, bỏ qua hoàn toàn nếu chưa đủ số nến đã đóng), sau đó hình nến, volume profile của nó, và nhãn "C# {khung TG}" được vẽ theo Flow 2-4.
🔔 Flow 6: Alert
- Alert duy nhất "New HTF Candle" đơn giản là điều kiện timeframe.change(tf) - bắn ra đúng tại nến nơi một chu kỳ HTF mới bắt đầu (tương đương, thời điểm nến HTF trước đó hoàn tất).
Đầu ra & vai trò trong sử dụng
- Dashboard nến tổng hợp: một bản chụp nhanh, luôn cập nhật của 4 nến HTF gần nhất mà không cần rời khỏi khung thời gian đang làm việc.
- Volume profile + POC theo từng nến: cho thấy quan tâm giao dịch tập trung ở đâu trong mỗi chu kỳ HTF, và làm nổi bật mức giá "được tranh chấp" nhiều nhất.
- Đường tham chiếu trên chart thật: cùng các mức POC/High/Low được phủ trực tiếp lên hành động giá lịch sử thật, có thể dùng làm tham chiếu hỗ trợ/kháng cự trên khung thời gian giao dịch của bạn.
- Chớp nền & alert: cách nhanh, ít công sức để nhận biết chính xác khi nào một chu kỳ HTF mới bắt đầu.


