1. Mô tả Chiến Lược FVG Engine
Phát hiện, xếp hạng và hiển thị các vùng mất cân bằng giá (FVG) mạnh nhất trên biểu đồ theo điểm chất lượng động
1.1 Concept của chỉ báo
Fair Value Gap (FVG) – hay còn gọi là vùng mất cân bằng giá – là lý thuyết xuất phát từ Smart Money Concept (SMC). Ý tưởng cốt lõi: khi giá di chuyển quá mạnh và quá nhanh theo một chiều, nó để lại một khoảng trống trên biểu đồ (một "lỗ hổng" giữa hai cây nến), nơi không có giao dịch thực sự xảy ra. Thị trường có xu hướng quay lại lấp đầy khoảng trống đó sau – giống như việc giá "sửa lỗi" sự mất cân bằng cung/cầu mà nó đã tạo ra.
Chỉ báo này đi xa hơn: thay vì chỉ vẽ mọi FVG xuất hiện (dẫn đến biểu đồ bị ngập tràn ô màu), nó chấm điểm chất lượng từng vùng FVG dựa trên 4 yếu tố (kích thước vùng, khối lượng giao dịch, xu hướng thị trường, sức mạnh nến hình thành), sau đó chỉ hiển thị những vùng điểm cao nhất. Đây là lý do có chữ "Ranked" (xếp hạng) trong tên chỉ báo.
Niềm tin cơ bản: Không phải FVG nào cũng như nhau – một vùng FVG hình thành khi khối lượng lớn, giá đang trong xu hướng rõ, và nến bứt phá mạnh sẽ đáng tin cậy hơn nhiều so với một FVG hình thành trong điều kiện bình thường.
1.2 Chức năng của chỉ báo
- Vẽ vùng FVG (ô màu trên biểu đồ): Mỗi vùng FVG được vẽ thành một hình chữ nhật màu xanh ngọc (bullish – tăng) hoặc hồng đỏ (bearish – giảm), kéo dài sang phải theo thời gian để dễ theo dõi.
- Thanh sức mạnh Bull/Bear bên trong mỗi ô: Mỗi vùng FVG được chia đôi theo chiều dọc – nửa trên là thanh bear, nửa dưới là thanh bull – hiển thị % sức mạnh tương ứng (ví dụ: 73% bull / 27% bear).
- Nhãn văn bản thông minh trong ô FVG: Mỗi ô hiển thị một đánh giá bằng chữ như "Strong Bullish Imbalance", "Bearish Bias", "Weak Bullish (Bear Pressure)"... giúp đọc nhanh chất lượng vùng.
- Xếp hạng và lọc: Chỉ hiển thị tối đa maxZones (mặc định 10) vùng FVG điểm cao nhất. Các vùng điểm thấp bị ẩn đi (không xóa, chỉ ẩn).
- Alert (6 loại): Cảnh báo khi có FVG mới, khi FVG leo lên top 1, khi giá chạm vùng, và khi vùng bị lấp đầy hoàn toàn.
1.3 Cách dùng chỉ báo
- Xác định vùng hỗ trợ/kháng cự tiềm năng: Các ô FVG màu xanh ngọc phía dưới giá hiện tại là vùng hỗ trợ tiềm năng (giá có thể quay xuống lấp đầy). Các ô hồng đỏ phía trên giá là vùng kháng cự tiềm năng.
- Ưu tiên vùng có điểm cao: Vì chỉ báo chỉ hiển thị top maxZones vùng mạnh nhất, bất kỳ ô nào còn hiển thị đều đã qua "bộ lọc chất lượng". Vùng nào còn trụ vững qua nhiều thanh nến (không bị lấp) và chưa bị đẩy ra khỏi top thường là vùng đáng chú ý nhất.
- Đọc nhãn văn bản để đánh giá thiên kiến: "Strong Bullish Imbalance" → vùng mua mạnh, kỳ vọng giá nảy lên khi chạm. "Weak Bullish (Bear Pressure)" → dù là bullish FVG nhưng áp lực bán đang lớn hơn, cần thận trọng khi long.
- Theo dõi thanh % bull/bear để đọc sức mạnh nội tại: Nếu ô bullish FVG nhưng thanh bear chiếm 60%+ → vùng đang suy yếu, tín hiệu long kém tin cậy hơn.
- Dùng Alert "Bullish/Bearish FVG Touch" để bắt điểm vào lệnh khi giá quay về test lại vùng FVG, kết hợp với xác nhận từ price action hoặc chỉ báo khác.
- Alert "FVG Fully Mitigated" báo hiệu vùng đã bị lấp đầy hoàn toàn – cần cập nhật lại bản đồ hỗ trợ/kháng cự.
1.4 Cách hoạt động của chỉ báo
Đầu vào & vai trò- maxZones (Số nguyên, mặc định 10, từ 1–20): Số lượng vùng FVG tốt nhất được hiển thị trên biểu đồ. Chỉ báo lưu nhiều hơn nhưng chỉ tô màu và hiện nhãn cho top N vùng. Nếu giảm xuống 3 → chỉ thấy 3 ô đậm nhất; nếu tăng lên 20 → nhiều ô hơn nhưng bao gồm cả vùng yếu hơn.
- maxStored (Số nguyên, mặc định 50, từ 10–200): Số FVG tối đa được lưu trong bộ nhớ tại một thời điểm. Khi vượt ngưỡng này, vùng có điểm thấp nhất bị xóa hẳn. Tăng giá trị này cho phép theo dõi lịch sử xa hơn nhưng tốn tài nguyên hơn.
- volLength (Số nguyên, mặc định 20): Độ dài trung bình khối lượng (Volume SMA) dùng làm mốc so sánh. Nến hình thành FVG có khối lượng gấp đôi trung bình 20 nến → volScore = 2.0 → cộng điểm mạnh. Nếu chỉnh xuống 5 → trung bình tính ngắn hơn, dễ đạt volScore cao hơn.
- trendLength (Số nguyên, mặc định 50): Độ dài EMA xác định xu hướng. Nếu giá đóng cửa trên EMA-50 khi hình thành bullish FVG → xu hướng thuận → trendScore = 1.0 → cộng 20 điểm. Chỉnh nhỏ hơn (ví dụ 20) → nhạy cảm hơn với xu hướng ngắn hạn.
- showBars (Tick chọn, mặc định bật): Bật/tắt hiển thị thanh bull/bear bên trong ô FVG. Tắt đi cho biểu đồ gọn hơn.
- showBlockText (Tick chọn, mặc định bật): Bật/tắt nhãn chữ ("Strong Bullish Imbalance"...) trong ô FVG.
- strengthTextSize / blockTextSize (Lựa chọn: auto/tiny/small/normal/large/huge): Cỡ chữ cho phần trăm sức mạnh và nhãn văn bản trong ô.
- bullColor / bearColor (Màu sắc): Màu nền ô FVG và thanh sức mạnh. Mặc định xanh ngọc (bull) và hồng đỏ (bear).
- alertNewBull / alertNewBear / alertTopRank / alertBullTouch / alertBearTouch / alertFullyMitigated (Tick chọn): Bật/tắt từng loại cảnh báo độc lập với nhau.
🔷 Flow 1 – Phát hiện FVG (3 nến liên tiếp)
Mỗi thanh nến mới, chỉ báo kiểm tra mẫu hình 3 nến:
- Bullish FVG (tăng): low[0] > high[2] — Giá thấp nhất của nến hiện tại cao hơn giá cao nhất của nến cách 2 thanh. Khoảng trống giữa hai nến đó là vùng FVG tăng. Ví dụ: nến cách 2 có high = 100, nến hiện tại có low = 102 → khoảng từ 100 đến 102 là bullish FVG.
- Bearish FVG (giảm): high[0] < low[2] — Giá cao nhất của nến hiện tại thấp hơn giá thấp nhất của nến cách 2 thanh. Ví dụ: nến cách 2 có low = 100, nến hiện tại có high = 98 → khoảng từ 98 đến 100 là bearish FVG.
Nến "ở giữa" (nến số 1) là nến bứt phá mạnh, còn nến số 2 (cũ nhất trong 3 nến) và nến số 0 (hiện tại) định ra biên trên và biên dưới của vùng FVG.
🔷 Flow 2 – Tính điểm chất lượng (Quality Score)
Khi phát hiện FVG mới, chỉ báo tính ngay điểm chất lượng ban đầu dựa trên công thức:
qualityScore = fvgSize × 100 + volScore × 10 + trendScore × 20 − mitigation × 50
Trong đó mitigation = 0.0 khi vừa mới tạo (chưa bị lấp). Điểm sẽ suy giảm thêm
age × 0.1 theo từng nến tiếp theo.
| Thành phần | Cách tính | Ý nghĩa |
|---|---|---|
| fvgSize × 100 | Độ rộng vùng FVG (đơn vị giá) × 100 | FVG càng rộng → giá bứt phá càng mạnh → điểm càng cao |
| volScore × 10 | volume / volumeMA(20). Nếu volume gấp đôi trung bình → volScore = 2.0 → +20 điểm | Khối lượng cao xác nhận độ tin cậy của sự mất cân bằng |
| trendScore × 20 | = 1.0 nếu FVG cùng chiều xu hướng EMA, = 0 nếu ngược chiều | FVG thuận xu hướng đáng tin cậy hơn FVG ngược xu hướng |
| − mitigation × 50 | Tỉ lệ vùng đã bị lấp (0.0 → 1.0) | Vùng bị lấp một phần sẽ bị trừ điểm – mất dần độ tin cậy |
| − age × 0.1 | Số nến đã trôi qua kể từ khi FVG hình thành | Vùng cũ dần mất điểm theo thời gian nếu chưa được kiểm tra lại |
🔷 Flow 3 – Tính điểm sức mạnh Bull/Bear (Strength Score)
Song song với quality score, chỉ báo tính một điểm sức mạnh tổng hợp 0–100 để phân chia thanh bull/bear:
| Thành phần | Điểm tối đa | Cách tính |
|---|---|---|
| Gap Strength (sức mạnh khoảng trống) | 40 điểm | min(fvgSize / ATR(14), 2.0) / 2.0 × 40 — FVG rộng hơn 2× ATR đạt tối đa |
| Volume Strength (sức mạnh khối lượng) | 30 điểm | min(volScore, 2.0) / 2.0 × 30 — Khối lượng gấp đôi trung bình đạt tối đa |
| Trend Strength (sức mạnh xu hướng) | 20 điểm | trendScore × 20 — Chỉ có 0 hoặc 20 (thuận/không thuận xu hướng) |
| Candle Strength (sức mạnh thân nến) | 10 điểm | |close − open| / max(high − low, mintick) × 10 — Nến marubozu đạt ~10 điểm |
Tổng điểm (0–100) là mainStrength. Sau đó:
- Nếu là bullish FVG: bullStrength = mainStrength, bearStrength = 100 − mainStrength
- Nếu là bearish FVG: bearStrength = mainStrength, bullStrength = 100 − mainStrength
Ví dụ: FVG tăng với mainStrength = 73 → bullStrength = 73%, bearStrength = 27%.
🔷 Flow 4 – Cập nhật và theo dõi Mitigation (mức độ bị lấp đầy)
Mỗi thanh nến mới, chỉ báo duyệt qua toàn bộ danh sách FVG đang lưu và kiểm tra xem giá có "chạm" vào vùng đó không:
- Bullish FVG bị chạm khi: low <= fvg.top (giá thấp nhất nến hiện tại đã đi vào vùng)
- Bearish FVG bị chạm khi: high >= fvg.bottom (giá cao nhất nến hiện tại đã đi vào vùng)
Khi bị chạm, tính tỉ lệ đã lấp đầy: ví dụ bullish FVG từ 100 đến 105 (rộng 5 điểm). Giá thấp nhất chạm tới 102 → fillDistance = 105 − 102 = 3 → mitigation = 3/5 = 0.6 (60%). Khi mitigation ≥ 1.0 (100%) → vùng bị xóa hoàn toàn khỏi biểu đồ và danh sách.
🔷 Flow 5 – Sắp xếp, lọc và hiển thị
Sau khi cập nhật xong, toàn bộ danh sách FVG được sắp xếp giảm dần theo qualityScore. Sau đó:
- Nếu số lượng lưu > maxStored: xóa (pop) vùng điểm thấp nhất khỏi bộ nhớ
- Duyệt từng vùng theo thứ tự xếp hạng: vị trí index < maxZones → hiển thị đầy đủ; vị trí ≥ maxZones → tô màu trong suốt (ẩn đi, không xóa)
🔷 Flow 6 – Nhãn văn bản thông minh (Smart Label)
Với mỗi vùng FVG đang hiển thị, nhãn chữ được chọn theo bảng sau:
| Loại FVG | Điều kiện | Nhãn hiển thị |
|---|---|---|
| Bearish FVG | bearStrength ≥ 70 | Strong Bearish Imbalance |
| bearStrength ≥ 55 | Bearish Bias | |
| bullStrength > bearStrength | Weak Bearish (Bull Pressure) | |
| Còn lại | Neutral Bearish | |
| Bullish FVG | bullStrength ≥ 70 | Strong Bullish Imbalance |
| bullStrength ≥ 55 | Bullish Bias | |
| bearStrength > bullStrength | Weak Bullish (Bear Pressure) | |
| Còn lại | Neutral Bullish |
- Ô màu FVG (box trên biểu đồ): Hiển thị vùng mất cân bằng, kéo dài sang phải 25 nến để dễ nhìn. Xanh ngọc = bullish (hỗ trợ tiềm năng), hồng đỏ = bearish (kháng cự tiềm năng).
- Thanh sức mạnh bull/bear: Hai thanh ngang bên trong mỗi ô, hiển thị % của từng phe. Thanh bull ở nửa dưới ô, thanh bear ở nửa trên. Độ dài thanh tỉ lệ với % sức mạnh.
- Nhãn văn bản: Chuỗi chữ góc phải ô FVG cho biết đánh giá tổng hợp (Strong/Bias/Weak/Neutral) để đọc nhanh không cần nhìn %.
- 6 loại Alert: New Bullish FVG, New Bearish FVG, New Top-Ranked FVG, Bullish FVG Touch, Bearish FVG Touch, FVG Fully Mitigated — mỗi loại bật/tắt độc lập.


