Isolated Scroll Container

1. Mô Tả Chiến Lược SESSION VOLUME PROFILE

Dựng Volume Profile riêng cho từng phiên giao dịch (POC, Value Area High/Low) từ dữ liệu nến khung thời gian nhỏ hơn bên trong mỗi nến, đóng khung theo vùng cao-thấp của phiên, dựa trên loại phiên người dùng chọn (Tokyo, London, New York, Ngày, Tuần, Tháng, Quý, Năm).

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

Các công cụ Volume Profile thông thường chỉ hiện khối lượng giao dịch tại từng mức giá trên toàn bộ lịch sử biểu đồ hoặc trong một khung cửa sổ cố định. Chỉ báo này thay vào đó chia biểu đồ thành từng "phiên" (session) rời rạc - người dùng tự chọn thế nào là một phiên (phiên forex Tokyo/London/New York, hoặc theo lịch Ngày/Tuần/Tháng/Quý/Năm) - và dựng một Volume Profile riêng biệt, độc lập cho từng phiên, mỗi phiên có khung (box), Điểm Kiểm Soát (Point of Control - POC), và Value Area High/Low (VAH/VAL) của riêng nó. Cuộn ngược lịch sử sẽ thấy mỗi phiên quá khứ có 1 profile; phiên gần nhất chưa kết thúc có một profile "sống" (live), liên tục vẽ lại khi có nến mới.

  • Không phải khối lượng theo giá thực sự, mà là một phép xấp xỉ có tính đến bấc nến: để dựng profile của một phiên, script lấy các nến khung thời gian nhỏ hơn thuộc chính biểu đồ (qua request.security_lower_tf) xảy ra trong phiên đó, rồi phân bổ khối lượng của mỗi nến vào các vùng giá mà thân nến và bấc nến thực sự chồng lấn - khối lượng thân nến đi trọn vào phía xanh (tăng) hoặc đỏ (giảm) tuỳ theo hướng nến, còn khối lượng mỗi bấc nến được chia đôi 50/50 cho cả xanh lẫn đỏ (vì bấc nến, theo định nghĩa, đã bị giá đi qua theo cả 2 chiều).
  • Mọi thứ reset lại sau mỗi phiên: ranh giới các vùng giá, các mảng khối lượng xanh/đỏ đã tích luỹ, và bộ đệm dữ liệu nến nhỏ đều bị xoá sạch ngay khi một phiên mới bắt đầu, để profile của mỗi phiên chỉ được tính thuần tuý từ hoạt động giao dịch của chính phiên đó - không bị "rò rỉ" từ phiên trước.
  • Chế độ Open Interest tuỳ chọn: thay vì dùng khối lượng giao dịch, profile có thể được dựng từ mức thay đổi Open Interest giữa các nến (dùng mã ticker "_OI" tổng hợp của một symbol futures), với các mức thay đổi dương được cộng vào mảng xanh, mức thay đổi âm cộng vào mảng đỏ.
  • Một lớp phủ "Forex Sessions" riêng, không liên quan: độc lập với loại phiên đang dùng cho volume profile chính, chỉ báo còn có thể vẽ thêm các khung hình chữ nhật đơn giản (không có profile) quanh vùng giá thực của các phiên Tokyo/London/New York, thuần tuý làm tham chiếu trực quan cho việc các phiên chồng lấn nhau.

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

  • Bộ chọn Loại Phiên (Session Type): một danh sách chọn (sessionType) quyết định "phiên" là gì cho toàn bộ chỉ báo - Tokyo, London, New York (tính theo giờ UTC), hoặc Ngày/Tuần/Tháng/Quý/Năm (tính theo lịch). Chỉ 1 loại được dùng để dựng volume profile tại một thời điểm.
  • Khung Phiên (Session Box): một hình chữ nhật nét đứt trải dài theo đúng vùng cao-thấp thực tế của mỗi phiên, được vẽ khi phiên kết thúc (hoặc vẽ sống, với phiên hiện tại).
  • Biểu Đồ Cột Volume Profile: một biểu đồ cột ngang theo từng vùng giá, thể hiện khối lượng xanh (tăng) và đỏ (giảm) đã tích luỹ, vẽ bên phải khung phiên, theo 1 trong 3 chế độ hiển thị (xếp chồng tăng-rồi-giảm, tăng-rồi-giảm bố cục đảo ngược, hoặc đối xứng gương tăng-bên-phải/giảm-bên-trái quanh khung).
  • Đường POC (Point of Control): một đường ngang tại đúng vùng giá có khối lượng kết hợp (xanh+đỏ) lớn nhất trong phiên đó.
  • Đường VAH / VAL và Khung Value Area: đường Value Area High và Low đánh dấu dải giá, mở rộng ra từ POC, chứa một tỷ lệ phần trăm do người dùng chọn (VAwid, mặc định 70%) trên tổng khối lượng của phiên; một khung tô màu tuỳ chọn lấp đầy khoảng giữa VAH và VAL.
  • Vùng Đang Sống (Live Zone): phiên đang hình thành (chưa kết thúc) có profile riêng, liên tục bị xoá và vẽ lại ở mỗi nến mới, nên luôn phản ánh đúng hoạt động giao dịch mới nhất tính đến hiện tại.
  • Nhãn Phiên (Session Label): một nhãn chữ (tên loại phiên) đặt căn giữa phía trên khung của mỗi phiên.
  • Lớp phủ Forex Sessions (không có profile): các khung hình chữ nhật đơn giản tuỳ chọn quanh vùng cao-thấp thực của Tokyo/London/New York, độc lập với cài đặt sessionType chính - hữu ích để xem các phiên chồng lấn nhau bất kể phiên nào đang dùng cho profile.
  • Chế độ dữ liệu Open Interest: profile có thể dựng từ mức thay đổi Open Interest thay vì khối lượng giao dịch, với các symbol có cung cấp dữ liệu OI.

1.3 Cách Dùng Chỉ Báo

  • Đọc POC như một mức "hút giá" / giá trị công bằng (fair value): đường POC đánh dấu nơi khối lượng giao dịch nhiều nhất trong phiên - giá thường có xu hướng quay trở lại mức này, và nó có thể đóng vai trò hỗ trợ/kháng cự trong phiên.
  • Đọc VAH/VAL như vùng giao dịch "được chấp nhận": giá đóng cửa nằm ngoài Value Area (trên VAH hoặc dưới VAL) cho thấy phiên đã giao dịch lệch khỏi nơi đa số khối lượng đồng thuận là giá trị công bằng - thường được hiểu là khởi đầu của một đợt mở rộng (extension) hoặc mất cân bằng, trong khi giá quay trở lại bên trong VAH/VAL cho thấy đợt mở rộng đó bị từ chối.
  • Chọn sessionType phù hợp với khung thời gian giao dịch của bạn: Ngày (Daily) cho các mức tham chiếu intraday/swing, Tuần/Tháng cho bối cảnh khung thời gian lớn hơn, hoặc Tokyo/London/New York để profile riêng từng phiên forex cụ thể.
  • Theo dõi tương quan màu sắc trên biểu đồ cột: một vùng giá bị chi phối bởi màu xanh cho thấy bên mua đang kiểm soát tại mức giá đó, màu đỏ cho thấy bên bán; một POC bị bao quanh bởi màu xen kẽ cho thấy đây là vùng giằng co/tranh chấp.
  • Điều chỉnh resolution theo biểu đồ của bạn: tăng lên để có profile chi tiết, mịn hơn (đánh đổi bằng việc số phiên hiển thị đầy đủ trên màn hình ít đi), giảm xuống để có cái nhìn thô hơn, dễ quét qua nhiều phiên cùng lúc.
  • Bật Forex Sessions độc lập khi muốn xem vùng chồng lấn của các phiên Tokyo/London/New York trên biểu đồ, bất kể loại phiên nào đang dùng cho volume profile chính.

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

Đầu vào & vai trò

  • sessionType ("Session Type", tuỳ chọn: Tokyo/London/New York/Daily/Weekly/Monthly/Quarterly/Yearly, mặc định: "Daily"): định nghĩa thế nào là 1 "phiên" - quyết định cả ranh giới khung lẫn khối lượng nào được gom vào từng profile.
  • showProf / showSbox / showPoc / showVA / showVAb / showCur / showLabels / showFx: các nút bật/tắt hiển thị độc lập cho lần lượt biểu đồ cột khối lượng, khung phiên, đường POC, đường VAH/VAL, khung Value Area tô màu, phiên đang hình thành/sống, nhãn chữ của phiên, và lớp phủ Forex Sessions không liên quan.
  • resolution ("Resolution", Số nguyên, mặc định: 30, tối thiểu 5): số vùng giá bằng nhau mà vùng cao-thấp của mỗi phiên được chia ra. Tăng → profile chi tiết, mịn hơn cho từng phiên, nhưng số phiên hiển thị đầy đủ trên biểu đồ cùng lúc ít đi. Giảm → profile thô hơn, nhiều phiên hiển thị hơn.
  • VAwid ("Value Area Volume %", Số nguyên, mặc định: 70, khoảng 1-100): tỷ lệ phần trăm tổng khối lượng của phiên phải được gói gọn giữa VAH và VAL. Ví dụ: 70% (quy ước tiêu chuẩn ngành) nghĩa là VAH/VAL mở rộng ra từ POC, từng vùng giá một, cho đến khi đủ 70% tổng khối lượng của phiên đó được bao trong vùng.
  • dispMode ("Bar Mode", tuỳ chọn: Mode 1/2/3, mặc định: "Mode 2"): quyết định cách bố trí các cột xanh/đỏ của biểu đồ cột cho mỗi vùng giá so với nhau và so với khung phiên (cạnh nhau, nối tiếp nhau, hoặc đối xứng gương ở 2 phía đối diện).
  • volType ("Profile Data Type", tuỳ chọn: Volume/Open Interest, mặc định: "Volume"): chuyển toàn bộ phép tính profile từ khối lượng giao dịch sang mức thay đổi Open Interest.
  • smoothVol ("Smooth Volume Data", Boolean, mặc định: false): thay khối lượng thô bằng EMA 5 chu kỳ của khối lượng trước khi đưa vào profile - hữu ích khi tài sản thỉnh thoảng có cú tăng vọt khối lượng cực đoan mà nếu không xử lý sẽ lấn át hẳn 1 vùng giá.
  • bullCol / bearCol / VAbCol / pocCol / vahCol / valCol / boxBg: màu cho lần lượt cột khối lượng tăng, cột khối lượng giảm, khung Value Area tô màu, đường POC, đường VAH, đường VAL, và nền khung phiên. Thuần tuý thẩm mỹ, kèm theo các input độ dày đường tương ứng cho POC/VAH/VAL/khung.
💡 Lưu ý về Forex Sessions: showFx vẽ các khung cho vùng thực của Tokyo (00:00-09:00 UTC)/London (07:00-16:00 UTC)/New York (13:00-22:00 UTC) hoàn toàn độc lập với sessionType - các khung này KHÔNG BAO GIỜ có volume profile, POC, hay VAH/VAL, chúng thuần tuý là các mốc đánh dấu vùng cao/thấp, phủ lên trên bất kỳ profile phiên chính nào đang hiển thị.

Các Khối Logic Chính

🎯 Luồng 1: Phát Hiện Bắt Đầu/Kết Thúc Phiên

  • Với các loại phiên theo lịch (Ngày/Tuần/Tháng/Quý/Năm), một phiên mới bắt đầu ngay khi trường lịch tương ứng thay đổi (VD dayofweek cho Daily) - với các loại này, "kết thúc" của phiên trùng với chính sự kiện "bắt đầu" của phiên kế tiếp (không có khoảng trống giữa 2 phiên).
  • Với Tokyo/London/New York, thời điểm bắt đầu và kết thúc là 2 ngưỡng giờ UTC riêng biệt (VD London bắt đầu khi giờ ≥ 7 UTC, kết thúc khi giờ ≥ 16 UTC) - có thể có một khoảng trống giữa lúc phiên này kết thúc và phiên kế tiếp bắt đầu.

📥 Luồng 2: Thu Thập Dữ Liệu Nến Nhỏ (Intrabar)

  • Mỗi nến, request.security_lower_tf lấy về các nến open/high/low/close/volume ở khung thời gian nhỏ hơn nằm bên trong nến đó, và updateIntra() nối chúng vào 5 mảng đang chạy (ltfOpen/ltfHigh/ltfLow/ltfClose/ltfVolume) tích luỹ liên tục trong suốt thời gian phiên hiện tại còn mở.

🧮 Luồng 3: Dựng Volume Profile (profileAdd / get_vol)

  • Khi một phiên cần được tính (lại), calcSession() trước tiên chia vùng cao-thấp của phiên đó (profHigh/profLow) thành resolution vùng giá bằng nhau, sau đó phát lại từng nến nhỏ đã lưu trong bộ đệm qua profileAdd().
  • Với mỗi nến, get_vol() tính xem một đoạn giá (thân nến, bấc trên, hoặc bấc dưới) chồng lấn về mặt hình học với một vùng giá cho trước bao nhiêu, tính theo tỷ lệ so với toàn bộ độ dài đoạn đó, rồi phân bổ đúng tỷ lệ khối lượng tương ứng vào vùng giá. Khối lượng thân nến đi trọn vào vpGreen (nếu nến tăng) hoặc vpRed (nếu nến giảm); khối lượng mỗi bấc nến được chia đôi 50/50 vào cả 2 mảng, vì giá đã đi qua đoạn bấc đó theo cả 2 chiều.
  • Ở chế độ Open Interest, bước chia bấc nến theo hình học này bị bỏ qua - một nến có mức thay đổi OI dương sẽ cộng nguyên giá trị vào vpGreen tại (các) vùng giá mà thân nến chồng lấn, nến có mức thay đổi âm cộng độ lớn của nó vào vpRed.

🎯 Luồng 4: POC và Value Area

  • pocLevel() quét khối lượng kết hợp vpGreen + vpRed của từng vùng giá, và trả về mức giá trung điểm của vùng nào có tổng khối lượng lớn nhất - đây chính là POC.
  • valueLevels(poc) sau đó đi ra từ vùng chứa POC, từng bước một theo cả 2 hướng (lên phía VAH, xuống phía VAL), cộng dồn khối lượng của mỗi vùng giá mới được thêm vào, cho đến khi tổng cộng dồn đạt đủ VAwid% tổng khối lượng của phiên - ranh giới của vùng cuối cùng được thêm vào trở thành VAH và VAL.

🖌️ Luồng 5: Vẽ - Phiên Đã Kết Thúc vs Phiên Đang Sống

  • drawNewZone() chạy ngay khi một phiên kết thúc (zoneEnd = true) và vẽ khung, biểu đồ cột, POC, VAH/VAL, và khung Value Area của phiên đó vĩnh viễn tại đúng vị trí lịch sử của nó - các hình vẽ này không bao giờ bị động vào lại.
  • drawCurZone() xử lý phiên đang mở (chỉ khi showCur bật): mỗi nến mới nó xoá các hình vẽ "sống" trước đó do chính nó tạo ra (đường, khung, nhãn) và vẽ lại từ đầu dựa trên khối lượng tích luỹ mới nhất, để profile đang hình thành luôn phản ánh đúng nến gần nhất. Ngay khi phiên đó kết thúc, các hình vẽ tạm thời này bị xoá vĩnh viễn (nhường chỗ cho phiên bản vĩnh viễn do drawNewZone() vẽ).

🔄 Luồng 6: Reset Giữa Các Phiên

  • resetProfile() kích hoạt mỗi khi một phiên mới bắt đầu - nó đưa vpGreen/vpRed về 0 và xoá sạch cả 5 mảng bộ đệm nến nhỏ, để profile của phiên kế tiếp được dựng thuần tuý từ hoạt động giao dịch của chính nó.

🌍 Luồng 7: Khung Phiên Forex (lớp phủ độc lập)

  • Bất kể sessionType là gì, script vẫn theo dõi riêng mức cao/thấp thực đang chạy của cửa sổ Tokyo/London/New York hiện tại mọi lúc; ngay khi ngưỡng giờ UTC kết thúc của từng phiên bị vượt qua (và showFx đang bật), drawForexBox() vẽ một khung nét đứt đơn giản (không có profile) trải theo đúng vùng cao-thấp thực tế của phiên đó.

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

  • Khung phiên: cho biết ngay vùng cao/thấp của mỗi phiên thuộc loại đã chọn.
  • Đường POC: mức giá được giao dịch nhiều nhất trong mỗi phiên - một mức hỗ trợ/kháng cự/"hút giá" tiềm năng.
  • Đường VAH/VAL + khung Value Area: dải giá "giá trị công bằng" mà mỗi phiên đã giao dịch trong đó; giá đóng cửa ngoài dải này là dấu hiệu tiềm năng của mất cân bằng/mở rộng.
  • Biểu đồ cột khối lượng: trực quan hoá chính xác cách khối lượng mua/bán phân bổ theo giá trong mỗi phiên.
  • Vùng Đang Sống: cái nhìn liên tục cập nhật về phiên vẫn đang mở, không cần chờ phiên đóng lại.
  • Lớp phủ Forex Sessions: tham chiếu vùng chồng lấn giữa các phiên, độc lập với cài đặt profile chính.
💡 Lưu ý về trường hợp biên "vùng cuối mảng": nếu vùng giá có khối lượng lớn nhất của một phiên lại rơi đúng vào vùng cuối cùng (giá thấp nhất) trong mảng, pocLevel() sẽ không có "vùng kế tiếp" để nội suy ra trung điểm và trả về na cho phiên đó - nghĩa là POC (và kéo theo cả VAH/VAL, vốn phụ thuộc vào việc xác định vùng chứa POC) đôi khi có thể bị undefined ở một số phiên. Đây là hành vi vốn có của chỉ báo gốc, không phải điều phát sinh từ phân tích 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