Learn

Foundations to read and use FlowMapTrader.com — bubbles, heat, book, CVD, tape

Overview

Learn here is the foundation for FlowMapTrader.com — how to read bubbles, heat, COB / CVP / SVP, volume bars, BBO, VWAP, and the CVD strip on Binance Futures BTCUSDT. FlowMapTrader.com does not place orders. Open FlowMapTrader.com; use Desk only when you need signal cards or history.

  • Executed flow — bubbles / tape / CVD from aggTrade (what already filled)
  • Resting liquidity — heat, COB, BBO, Spread / OBI from the order book (what can be pulled)
  • Where size traded — CVP / SVP / POC and volume bars in the visible window
  • Absorption — hold at a level, then wait for reaction (Continuation / Fade / Chop)
  • Forced flow — liquidations (context only; not a FlowMapTrader.com layer)

Rule of thumb: bubbles + CVD = aggression that filled; heat + COB = resting book. Absorption only matters after the reaction. Desk OI / Funding are secondary context — this page stays on what you see on FlowMapTrader.com.

FlowMapTrader.com

Open / for a live orderflow map: time on the X-axis, price on the Y-axis, and executed trades as bubbles. Side rails show resting book (COB) and session volume-by-price (CVP). A CVD strip runs under the chart. Same Binance Futures BTCUSDT aggTrade + depth feeds as the dashboard — spatial view, not a separate signal engine.

Read left → right for time, bottom → top for price. Bubbles = what already filled. COB = what is resting now. Heat = where liquidity sat recently. CVD strip = running net taker buy − sell in the view.

Bubbles

Each bubble is an aggressive print from aggTrade:

  • X — fill time · Y — fill price
  • Size — quantity (larger print → larger bubble)
  • Color — green = taker buy (lift ask) · red = taker sell (hit bid)

Hover a bubble for a tooltip: side / qty @ price / time. Prints at or above the large threshold (default LARGE_TRADE_MIN_QTY, currently 5 BTC) get an amber halo and show LARGE BUY / LARGE SELL in the tooltip when the Large toggle is on.

Dense clusters at one price = repeated aggression into that level (absorption / hold candidates). A trail of bubbles climbing or falling with the price line = directional flow.

How to read the chart

Layer What it shows How to use
Price line Last trade path through visible bubbles Context for where prints sit relative to the move
Heat Recent resting liquidity by time × price bucket Bright bands = size that sat on the book; toggle Contrast to emphasize thick spots
PRICE Dense price ladder (aligned to heat/book buckets) Current last price highlighted; zoom/pan with the chart
COB Current order book size by price (bids green / asks red) Resting walls vs aggressive bubbles — same idea as desk OBI, but visual by level
CVP + POC Volume profile for the visible time window (buy/sell stacked); amber POC = highest-volume price in view Where the session traded most in this window — not the full day unless you zoom out
CVD strip Running cumulative delta for visible prints; value box on the right = latest CVD in view Rising green segments = net buying; falling red = net selling. Compare to bubble color and price direction (surge vs divergence)

Controls

  • Wheel — zoom time · Shift / Alt + wheel (or wheel over PRICE / COB) — zoom price
  • Left-drag — pan time + price (drag the chart)
  • Follow live — stick to the right edge · Reset view — clear manual time/price window
  • Min qty — hide small bubbles · Heat / CVP / Large — toggle layers

With the dashboard

  • Bubbles + CVD strip ↔ desk CVD / Tape (executed flow)
  • COB / heat ↔ OBI · book depth (resting intent)
  • Large bubbles ↔ Latest Signal Large lane (same size floor)

FlowMapTrader.com does not place trades and does not replace Absorption classification. Use it to see where size hit and where the book was thick — then confirm Cont / Fade on Desk if needed.

Liquidation

A forceOrder event — the exchange forcibly closes under-margined positions. The UI shows the latest liquidation, not a window total.

SELL @ price
Usually a long liquidation (exchange sells).
BUY @ price
Usually a short liquidation (exchange buys).

BTCUSDT can stay quiet for a long time — is normal. Small size (e.g. 0.6 BTC) matters less than clustered liquidations.

In FlowMapTrader.com: Squeeze rules need a recent liquidation plus a sharp price move and falling OI.

CVD — Cumulative Volume Delta

CVD measures who was the taker inside a time window:

CVD = buy_volume − sell_volume

  • Trade is not buyer-maker → taker buy (lifting the ask)
  • Trade is buyer-maker → taker sell (hitting the bid)

On the UI: CVD (30s) / CVD (60s) with B … / S … = buy / sell volume in the window (BTC units). API fields are cvd_30s / cvd_60s (not “short/long”, to avoid confusion with trade direction).

CVD Rough meaning
Large positive Net taker buying — executed buy pressure
Large negative Net taker selling
~0 Balanced / noise

How FlowMapTrader.com uses it

  • CVD_SURGE — CVD and price move the same way, above abs and % price floors (filters noise).
  • CVD_DIVERGENCE — price and CVD disagree (e.g. price down, CVD still positive → bullish divergence).
  • Strategy confirm — Pressure/Squeeze only pass when CVD (± OBI) agrees with direction.
  • Absorption classifier — CVD follow vs exhaust helps decide Continuation vs Fade after a hold.

Large CVD alone is not a trade. Always check price direction, OBI / COB walls, tape rhythm, and cooldown. CVD+ with tape weak is not a clean Cont — see Tape vs CVD. On BTCUSDT, CVD +9 is often noise; +85 in 30s is worth a look.

Buyer / seller rising or fading

Separate from net CVD and total-vol strength: compare each side’s 30s aggressive volume to ~CVD_SIDE_TREND_LOOKBACK_SEC ago (default 30s). If current ≥ lookback × CVD_SIDE_TREND_MULT (1.15) → rising; if ≤ lookback ÷ 1.15 → fading. UI shows e.g. buyer rising · seller fading only when the change is clear.

Spread · OBI

Derived from partial order-book depth — resting liquidity, not executed trades.

Spread

spread = best_ask − best_bid

The UI also shows bps = (spread / mid) × 10000. Tight spread → healthy liquidity. A sudden widen → thin or stressed book.

OBI — Order Book Imbalance

OBI = (bid_vol − ask_vol) / (bid_vol + ask_vol)

Computed on the full Book Depth ladder (same rungs as the card, after price-bucket aggregation). Range roughly [−1, +1]. The UI shows the classic signed value first, then appends lean as ~2× bid / ~3× ask (heavy ÷ light; OBI +0.33 ≈ 2×):

  • OBI → +1 — bids dominate (supports upside / absorbs sells)
  • OBI → −1 — asks dominate (sell wall / downside pressure)
  • ~0 — balanced

OBI is intent on the book and can be pulled. CVD is already executed. Positive CVD with deeply negative OBI often means buy flow hitting a sell wall — common after a surge before a pullback.

Tape · Levels · Prints

FlowMapTrader.com builds a lightweight footprint from the same aggTrade stream used for CVD. These feed the Absorption panel.

Tape = filled orders (đã khớp). Not candles. Not the order book. A print is one trade that already matched — it cannot be pulled. Book bids/asks are still waiting and can be cancelled. Metrics use a short lookback (default TAPE_WINDOW_SEC ≈ 30s).

Order book — waiting

  • Bids / asks sitting on the book
  • Not filled yet — can be cancelled (spoof)
  • Source of Spread / OBI

Tape — already filled

  • Each chip = 1 print = 1 fill
  • Already happened — cannot undo
  • Source of Tape / CVD / Levels

One print — illustrated

Tape is the time-ordered list of those fills (aggTrade). One market order that filled = one print:

Green = taker buy (filled). Red = taker sell (filled). Amber = pause — no fill.

Strong tape — prints keep landing (no pause):

buy 0.12 sell 0.05 buy 0.40

Weak tape — a gap > 500ms between fills:

buy 0.12 pause > 500ms sell 0.05

Strong sequence written out (all the same second — no pause):

Time Price Fill Read
16:28:01 78872.9 buy 0.12 Market buy (lift ask) — filled
16:28:01 78872.8 sell 0.05 Market sell (hit bid) — filled
16:28:01 78873.0 buy 0.40 Next print, same second — filled

That filled sequence is the tape. A 2s gap between prints would be a pause → weak tape, not this example.

Print metrics

In FlowMapTrader.com, each Binance aggTrade = 1 print. Classifier metrics on the last ~30s:

  • Print rate — prints per second inside the tape window (~30s). Steady rate → market still aggressive.
  • Pause — gap between prints longer than the pause threshold (default 500ms). Many pauses → market hesitating / weakening.
  • Volume decay (decay) — volume in the recent half of the tape window ÷ volume in the prior half.
    • > 1 — volume accelerating
    • ≈ 1 — steady
    • < 1 (e.g. < 0.7) — aggression fading (weak tape → Fade more valid after absorption)

Tape weak vs tape strong

After absorption, the classifier asks whether aggression is still printing, or has paused / faded. Weak does not mean “nobody bought” — it means they are not hitting steadily right now.

Flag True when
tape_weak Any of: decay < ABSORPTION_TAPE_DECAY_WEAK (default 0.7); pause_count ≥ 1 (gap > TAPE_PAUSE_MS, default 500ms); or print_count == 0
tape_strong All of: decay ≥ ABSORPTION_TAPE_DECAY_STRONG (default 1.0); no pause; at least one print

Tape vs CVD

Same fills, two questions. CVD asks who won on net size. Tape asks whether they are still firing.

CVD (30s / 60s) Tape (~30s)
Measures Buy volume − sell volume Print rate, pauses, volume decay
Question Who was heavier? Are they still hitting, or resting?
Can disagree CVD still + from earlier buying Last 30s already thin / paused

CVD+ and tape weak can happen together: the 60s window still shows net buying, but prints have thinned. Like a team that just attacked and is catching its breath — the scoreboard still leans their way; the next push is not confirmed. Cont playbook wants both.

Dirty Cont — cont_clean

Continuation can still fire when score cont ≥ 2 from CVD follow + price hold, even if tape is weak (tape does not get the Cont point). Execution then fails gate cont_clean — signal reason contains tape weak / tape_weak=true. Paper/live does not enter. Fade’s “not fully clean” CVD note does not dirty Cont.

Tape (UI row)

Summary of aggression over the tape window: print rate, pause count, buy aggression %, volume decay. Playbook mapping:

Tape read Meaning
Steady prints, few pauses Market still in control (continuation bias after hold)
Prints thin out / pauses Market weakening (fade becomes more valid)
On / off aggression Chop — no clear winner

Levels (footprint-lite)

Trades are bucketed into price ticks (default 0.1 for BTCUSDT). Each level tracks buy volume, sell volume, delta ((buy − sell), and print count.

The UI shows top levels by |delta| — hot zones where market aggression clustered.

Example: level 64000.0 with prints=3 and large positive delta means three fills around that price were mostly taker buys.

Absorption

Absorption = limit orders absorb market orders so price is held at a level. It does not mean reversal by itself.

Central question: after absorption, does the market still have force? Answer with Tape + Volume + CVD + Price reaction — not with the absorption event alone.

Two sides

BUY absorption
Large taker buy delta at a level, but price does not break meaningfully above → limit sellers are holding (resistance-style hold).
SELL absorption
Large taker sell delta at a level, but price does not break meaningfully below → limit buyers are holding (support-style hold).

How FlowMapTrader.com detects it

Detection is tape footprint-lite only — filled aggTrade buckets, not the resting order book. Idea: at one price level, takers hit hard (large signed delta) but price does not break through → treat as absorbed (limit side temporarily winning).

  1. Bucket trades into price ticks (~ LEVEL_WINDOW_SEC=30s, tick = PRICE_TICK_SIZE default 0.1).
  2. Each bucket: buy/sell volume, delta = buy − sell, print count. Keep top levels by |delta|.
  3. Require enough aggression: |delta| ≥ ABSORPTION_MIN_ABS_DELTA (default 15) and prints ≥ ABSORPTION_MIN_PRINTS (default 3).
  4. Last price still near the level (≤ ABSORPTION_NEAR_TICKS, default 5 ticks).
  5. BUY absorption (delta > 0): market buys dominate, but price does not push more than ABSORPTION_MAX_BREAK_TICKS (default 2) above the level.
  6. SELL absorption (delta < 0): market sells dominate, but price does not break more than that buffer below the level.
  7. Among valid levels, pick the strongest |delta|. Publish AbsorptionDetectedEvent with status waiting_reactiondo not trade yet. Edge + cooldown reduce spam when metrics flicker around thresholds.

Detection alone does not send Telegram. Only Continuation / Fade after classification may alert (and Telegram can further filter by BB near/outside bands).

After absorption — three outcomes

Outcome Read FlowMapTrader.com signal
Continuation Reloading — tape still strong, CVD follows aggression, price does not reject hard. Market still wins. ABSORPTION_CONTINUATION_LONG / _SHORT
Fade Limit wins — tape weakens / pauses, price rejects away from the level (bounce or dump). Valid fade only here. ABSORPTION_FADE_LONG / _SHORT
Chop Mixed tape / CVD / price — no edge. UI only, no Telegram.

Mapping examples:

  • SELL absorption then bounce + weak tape → ABSORPTION_FADE_LONG
  • BUY absorption then dump + weak tape → ABSORPTION_FADE_SHORT
  • Same-side aggression continues after the hold → Continuation in that direction.

How Cont / Fade is scored

After detect, the classifier watches a short window (tape, CVD, price move) and scores two sides (max 3 each):

Cont (+1 each) Fade (+1 each)
Tape strong Tape weak / pause
CVD still follows the absorption aggressors CVD exhausts / flips against them
Price holds (no hard reject) Price rejects away from the level

Winner needs score ≥ 2 and strictly greater than the other side — e.g. cont 2 > fade 1 → Continuation. Cont can win on CVD + price hold while tape is still weak — that is a dirty Cont. Telegram / EXEC checklist then fail cont_clean (detail tape weak); paper/live does not fill. See Tape · Levels · Prints.

How trustworthy is detection?

Treat absorption as a desk hint, not a standalone entry. Prefer setups with clear hold + strong delta/prints, Cont/Fade that is clean, and supportive context (BB near/outside, CVD aligned). Be skeptical in quiet markets (fixed thresholds can false-trigger), mid-band locations, thin tape, spoofy books, or when the tip says “not clean”.

Telegram alerts use a short decision-brief layout (setup → BB/EMA/CVD → meaning/tip). Dashboard History still stores fuller reason text.

Orderflow glossary

Market order
Fills immediately at the best available price — attacks price.
Limit order
Rests on the book — holds / blocks price until filled or pulled.
Market buyer / seller
Taker who lifts the ask / hits the bid — creates a print.
Limit buyer / seller
Passive resting on the bid / ask — absorbs market sells / buys.
Tape
Time-ordered list of executed prints (aggTrades) — not candles, not the order book. Shows the rhythm of aggression.
Tape window
Short lookback for tape metrics (default ~30s). Not a book depth window.
Tape weak
Prints thinning, a pause (> 500ms), or no prints in the tape window. Aggression is resting — not “CVD is wrong”.
Tape strong
Volume at least holding (decay ≥ 1), no pause, still printing — reload / continuation-quality tape.
cont_clean
Execution gate for Continuation: fail if reason has tape weak. Dirty Cont (CVD+ / price hold, weak tape) is desk-only.
Print
One filled trade on the tape (one aggTrade in FlowMapTrader.com).
Pause
Clear gap on the tape — market hesitation / weakness.
Decay (volume decay)
Recent-half volume ÷ prior-half volume in the tape window. < 1 = fading aggression.
Order book
Resting bids/asks (depth). Source of Spread / OBI — can be spoofed or pulled. Opposite of tape fills.
Delta
Buy volume − sell volume at a price level or in a window.
CVD
Cumulative volume delta — which taker side pressed harder.
Absorption
Limits absorb market aggression; price is held — not auto-reversal.
Reloading
Limits hold temporarily so market can continue (continuation).
Exhaustion
Market aggression fades on its own (volume/prints die out).
Fade
Trade against the absorbed market side after a clear price reject.
Continuation
Price resumes after the pause/hold — market never truly lost.

FlowMapTrader.com signals — reading types

Type Idea Needs
BULLISH_PRESSURE Long accumulation Price↑ + OI↑ + funding≤0 + CVD confirm
BEARISH_PRESSURE Short accumulation Price↓ + OI↑ + funding≥0 + CVD confirm
LONG_SQUEEZE Longs forced out Sharp price↓ + OI↓ + SELL liq
SHORT_SQUEEZE Shorts forced out Sharp price↑ + OI↓ + BUY liq
CVD_SURGE Flow + price aligned |CVD| large + |Δprice| ≥ min
CVD_DIVERGENCE Flow ≠ price direction |CVD| + |Δprice| enough, opposite signs
ABSORPTION_CONTINUATION_* Hold then market still wins Absorption + strong tape/CVD + no hard reject
ABSORPTION_FADE_* Hold then limit wins Absorption + weak tape and/or price reject

Confidence scales with how far past the gate you are (~0.5 just clears → 1.0 near ~3× strength). Edge trigger, cooldown, and clear-hold cut spam when metrics flicker around thresholds. Absorption detection alone never pages Telegram — only classified Continuation / Fade do.

How to read live (checklist)

  1. Feed connected? Depth events → Spread/OBI show numbers. Liquidation may still be .
  2. CVD 30s vs 60s — same sign = sustained flow; sharp mismatch = the short window is turning.
  3. Tape / Levels — executed flow only (~30s window): print rate, pauses, decay — not the order book. Check which price buckets hold large |delta|. CVD+ with tape weak = dirty Cont; wait for cont_clean.
  4. FlowMapTrader.com — where did size hit on the time×price plane? Clusters vs COB walls; CVD strip vs price direction; Large bubbles vs desk Large lane.
  5. Absorption cardwaiting reaction means watch; wait for Continuation / Fade / Chop before acting.
  6. OBI — book intent; same sign as CVD = agreement; opposite = conflict (be careful).
  7. Signal History — read as a sequence (surge then divergence, or absorption then fade), not isolated alerts. Use pager when the list is long.
  8. Context / Detail — Context is the human read; Detail is raw metrics. Prefer Context first, then verify Detail.

Limits — do not over-read

  • Not buy/sell advice; no order execution.
  • BTCUSDT futures only; short windows (30–60s for tape/CVD, ~30s for levels).
  • Footprint-lite levels are not a full liquidity heatmap — no sticky-limit reload visualization. FlowMapTrader.com heat/COB is a lighter resting-book view of recent liquidity.
  • OBI / depth can be spoofed; CVD depends on exchange taker classification.
  • Absorption ≠ reversal. Detect uses tape buckets only (no true resting-limit view). Fade only after reaction; Chop means no trade. Fixed delta/print thresholds are heuristics — quieter or hotter regimes change reliability.
  • Liquidation on the UI is last event, not a heatmap.
  • AI Analysis is off by default — narrative is separate from rules.

Back to the Desk to match live numbers with the sections above, or open FlowMapTrader.com for the spatial view.

Tổng quan

FlowMapTrader.com lấy FlowMapTrader.com làm bề mặt chính — lens orderflow realtime cho Binance Futures BTCUSDT. Không đặt lệnh. Mở / cho desk không gian; dùng /desk cho panel Market / Signal.

  • FlowMapTrader.com — bề mặt chính: bubble giao dịch, heat thanh khoản, COB / CVP, volume bars, và dải CVD (cùng nguồn aggTrade + depth với desk)
  • Desk — Market (giá / OI / Funding / Liq), book depth, tape, OBI, và tín hiệu absorption / large trade
  • Giá & vị thế — Price, Open Interest, Funding
  • Dòng buộc — Liquidation (force order)
  • Dòng đã khớp — CVD, Tape, Levels từ aggTrade (không phải order book)
  • Ý định trên sổ — Spread & OBI từ order book (độ sâu)
  • Absorption — phát hiện giá bị giữ, rồi chờ phản ứng

Tape/CVD = đã khớp. OBI/Spread = lệnh treo (có thể bị kéo). Absorption chỉ thú vị sau phản ứng — Continuation, Fade, hoặc Chop. FlowMapTrader.com là góc nhìn không gian của dòng đã khớp.

FlowMapTrader.com

Mở / để xem bản đồ orderflow realtime: trục X = thời gian, trục Y = giá, lệnh đã khớp hiện thành bubble. Cột bên phải: sổ lệnh hiện tại (COB) và volume theo giá trong cửa sổ (CVP). Dưới chart là dải CVD. Cùng feed Binance Futures BTCUSDT aggTrade + depth với dashboard — góc nhìn không gian, không phải engine tín hiệu riêng.

Đọc trái → phải theo thời gian, dưới → trên theo giá. Bubble = đã khớp. COB = đang treo. Heat = thanh khoản từng nằm gần đây. Dải CVD = net taker mua − bán tích lũy trong vùng nhìn thấy.

Bubble là gì

Mỗi bubble là một print aggressive từ aggTrade:

  • X — thời điểm khớp · Y — giá khớp
  • Kích thước — quantity (print lớn → bubble lớn)
  • Màu — xanh = taker mua (lift ask) · đỏ = taker bán (hit bid)

Hover bubble để xem tooltip: phe / qty @ giá / giờ. Print ≥ ngưỡng large (mặc định LARGE_TRADE_MIN_QTY, hiện 5 BTC) có viền amber và hiện LARGE BUY / LARGE SELL trên tooltip khi bật toggle Large.

Cụm dày tại một giá = aggression lặp vào level đó (ứng viên absorption / hold). Chuỗi bubble đi lên/xuống cùng price line = dòng theo hướng.

Cách đọc chart

Lớp Cho thấy gì Cách dùng
Price line Đường giá theo các bubble trong view Ngữ cảnh: print nằm ở đâu so với sóng giá
Heat Thanh khoản treo gần đây theo thời gian × bucket giá Vùng sáng = size từng nằm trên sổ; chỉnh Contrast để nhấn chỗ dày
PRICE Thang giá dày (khớp bucket heat/book) Highlight giá cuối; zoom/pan cùng chart
COB Size order book hiện tại theo giá (bid xanh / ask đỏ) Tường treo vs bubble aggressive — cùng ý với OBI desk, nhưng nhìn từng level
CVP + POC Volume profile trong cửa sổ thời gian đang xem (mua/bán xếp chồng); POC amber = giá khớp nhiều nhất trong view Nơi session giao dịch nhiều trong cửa sổ này — không phải cả ngày trừ khi zoom rộng
CVD strip Delta tích lũy của print trong view; box bên phải = CVD mới nhất Đoạn xanh đi lên = mua net; đỏ đi xuống = bán net. So với màu bubble và hướng giá (surge vs divergence)

Điều khiển

  • Wheel — zoom thời gian · Shift / Alt + wheel (hoặc wheel trên PRICE / COB) — zoom giá
  • Kéo trái — pan thời gian + giá (kéo chart)
  • Follow live — dính mép phải · Reset view — xóa cửa sổ thời gian/giá thủ công
  • Min qty — ẩn bubble nhỏ · Heat / CVP / Large — bật/tắt lớp

Ghép với dashboard

  • Bubble + CVD strip ↔ CVD / Tape trên desk (dòng đã khớp)
  • COB / heat ↔ OBI · book depth (ý định treo)
  • Bubble large ↔ lane Large trên Latest Signal (cùng sàn size)

FlowMapTrader.com không đặt lệnh và không thay phân loại Absorption. Dùng để nhìn chỗ size đánh vào và chỗ sổ dày — rồi xác nhận lại trên card desk.

Liquidation

Sự kiện forceOrder — sàn cưỡng chế đóng vị thế thiếu margin. UI chỉ hiện liquidation gần nhất, không phải tổng trong cửa sổ.

SELL @ price
Thường là long bị thanh lý (sàn bán).
BUY @ price
Thường là short bị thanh lý (sàn mua).

BTCUSDT có thể im lâu — thấy là bình thường. Size nhỏ (vd. 0.6 BTC) kém quan trọng hơn cụm liquidation.

Trong FlowMapTrader.com: rule Squeeze cần liquidation gần đây + giá chạy mạnh + OI giảm.

CVD — Cumulative Volume Delta

CVD đo phe taker trong một cửa sổ thời gian:

CVD = buy_volume − sell_volume

  • Trade không buyer-maker → taker mua (lift ask)
  • Trade buyer-maker → taker bán (hit bid)

Trên UI: CVD (30s) / CVD (60s) kèm B … / S … = khối lượng mua / bán trong cửa sổ (đơn vị BTC). Field API là cvd_30s / cvd_60s.

CVD Ý nghĩa thô
Dương lớn Net taker mua — áp lực mua đã khớp
Âm lớn Net taker bán
~0 Cân / nhiễu

FlowMapTrader.com dùng CVD thế nào

  • CVD_SURGE — CVD và giá cùng chiều, vượt ngưỡng |CVD| và % giá (lọc nhiễu).
  • CVD_DIVERGENCE — giá và CVD lệch chiều (vd. giá giảm, CVD vẫn dương → bullish divergence).
  • Strategy confirm — Pressure/Squeeze chỉ qua khi CVD (± OBI) cùng hướng.
  • Absorption classifier — CVD follow vs exhaust giúp quyết Continuation hay Fade sau khi giá bị giữ.

CVD lớn một mình không phải lệnh. Luôn xem % giá, OBI, nhịp tape, độ dày volume, cooldown. CVD+ mà tape weak không phải Cont sạch — xem Tape khác CVD. Trên BTCUSDT, CVD +9 thường là nhiễu; +85 trong 30s mới đáng chú ý.

Buyer / seller mạnh dần hay yếu dần

Khác CVD net và volume tổng: so sánh volume aggressive 30s từng phe với ~CVD_SIDE_TREND_LOOKBACK_SEC trước (mặc định 30s). Hiện tại ≥ lookback × CVD_SIDE_TREND_MULT (1.15) → mạnh dần; ≤ lookback ÷ 1.15 → yếu dần. UI chỉ hiện khi đổi rõ, ví dụ buyer mạnh dần · seller yếu dần.

Spread · OBI

Lấy từ partial order-book depth — thanh khoản đang treo, không phải trade đã khớp.

Spread

spread = best_ask − best_bid

UI còn hiện bps = (spread / mid) × 10000. Spread hẹp → sổ khỏe. Mở đột ngột → sổ mỏng / stress.

OBI — Order Book Imbalance

OBI = (bid_vol − ask_vol) / (bid_vol + ask_vol)

Tính trên toàn bộ Book Depth ladder (cùng các nấc trên card, sau khi gom bucket giá). Khoảng gần [−1, +1]. UI hiện số OBI có dấu trước, rồi append lệch ~2× bid / ~3× ask (bên nặng ÷ bên nhẹ; OBI +0.33 ≈ 2×):

  • OBI → +1 — bid chiếm ưu (đỡ giá / hấp thụ sell)
  • OBI → −1 — ask chiếm ưu (tường bán / áp lực xuống)
  • ~0 — cân

OBI là ý định trên sổ, có thể bị kéo lệnh. CVD là đã khớp. CVD dương + OBI âm sâu thường là buy flow đập vào tường bán — hay thấy sau surge trước khi hồi.

Tape · Levels · Prints

FlowMapTrader.com dựng footprint nhẹ từ cùng stream aggTrade dùng cho CVD. Các metric này nuôi panel Absorption.

Tape = lệnh đã khớp (filled). Không phải nến. Không phải order book. Một print là một lệnh đã khớp xong — không hủy được. Bid/ask trên sổ vẫn đang treo, có thể bị kéo. Metric nhìn cửa sổ ngắn (mặc định TAPE_WINDOW_SEC ≈ 30s).

Order book — lệnh treo

  • Bid / ask đang ngồi trên sổ
  • Chưa khớp — có thể hủy (spoof)
  • Nguồn Spread / OBI

Tape — lệnh đã khớp

  • Mỗi chip = 1 print = 1 lần khớp
  • Đã xảy ra — không hoàn được
  • Nguồn Tape / CVD / Levels

Minh họa một print

Tape là danh sách những lần khớp đó theo thời gian (aggTrade). Một market order đã khớp = một print:

Xanh = taker mua (đã khớp). Đỏ = taker bán (đã khớp). Vàng = pause — không có khớp.

Tape mạnh — print nối tiếp (không pause):

mua 0.12 bán 0.05 mua 0.40

Tape yếu — khoảng lặng > 500ms giữa hai lần khớp:

mua 0.12 pause > 500ms bán 0.05

Dãy tape mạnh viết ra (cùng giây — không pause):

Giờ Giá Khớp Đọc
16:28:01 78872.9 mua 0.12 Market buy (lift ask) — đã khớp
16:28:01 78872.8 bán 0.05 Market sell (hit bid) — đã khớp
16:28:01 78873.0 mua 0.40 Print kế, cùng giây — đã khớp

Chính dãy đã khớp đó là tape. Nếu hai print cách 2 giây thì đó là pause → tape yếu, không phải ví dụ này.

Metric print

Trong FlowMapTrader.com, mỗi aggTrade Binance = 1 print. Classifier đo trên ~30s gần nhất:

  • Print rate — số print / giây trong tape window (~30s). Đều → market còn hung hăng.
  • Pause — khoảng cách giữa hai print lớn hơn ngưỡng (mặc định 500ms). Nhiều pause → market do dự / yếu.
  • Volume decay (decay) — volume nửa gần của tape window ÷ volume nửa trước.
    • > 1 — volume đang tăng tốc
    • ≈ 1 — ổn định
    • < 1 (vd. < 0.7) — lực yếu dần (tape yếu → Fade hợp lệ hơn sau absorption)

Tape weak vs tape strong

Sau absorption, classifier hỏi: aggression còn in print hay đã pause / teo? Weak không nghĩa là “không còn ai mua” — nghĩa là họ không đánh đều ngay lúc này.

Cờ True khi
tape_weak Một trong: decay < ABSORPTION_TAPE_DECAY_WEAK (mặc định 0.7); pause_count ≥ 1 (gap > TAPE_PAUSE_MS, mặc định 500ms); hoặc print_count == 0
tape_strong Tất cả: decay ≥ ABSORPTION_TAPE_DECAY_STRONG (mặc định 1.0); không pause; còn ít nhất một print

Tape khác CVD thế nào

Cùng fills, hai câu hỏi. CVD hỏi ai nặng hơn trên khối lượng đã khớp. Tape hỏi họ còn đang đánh không.

CVD (30s / 60s) Tape (~30s)
Đo Buy volume − sell volume Print rate, pause, volume decay
Câu hỏi Ai nặng hơn? Còn bắn đều hay đang nghỉ?
Có thể lệch CVD vẫn + từ lực mua trước đó 30s gần nhất đã thưa / pause

CVD+ và tape weak có thể cùng lúc: cửa sổ 60s vẫn mua net, nhưng print đã thưa. Giống đội vừa tấn công xong rồi đứng thở — sổ điểm còn nghiêng, đợt tới chưa chắc còn đẩy. Playbook Cont cần cả hai.

Cont bẩn — cont_clean

Continuation vẫn có thể fire khi điểm cont ≥ 2 từ CVD follow + giá hold, dù tape yếu (tape không được điểm Cont). Execution lúc đó fail gate cont_cleanreason chứa tape weak / tape_weak=true. Paper/live không vào lệnh. Note Fade “not fully clean” (CVD chưa exhaust) không làm bẩn Cont.

Tape (dòng trên UI)

Tóm tắt sức trong tape window: print rate, số pause, % buy aggression, volume decay. Map playbook:

Đọc tape Ý nghĩa
Print đều, ít pause Market còn chủ động (thiên continuation sau khi giữ giá)
Print thưa / có pause Market yếu dần (fade hợp lệ hơn)
Lúc mạnh lúc yếu Chop — chưa có bên thắng

Levels (footprint-lite)

Trade được gom vào bucket giá theo tick (mặc định 0.1 với BTCUSDT). Mỗi level có buy volume, sell volume, delta (buy − sell), và print count.

UI hiện top level theo |delta| — vùng nóng nơi market đánh dồn.

Ví dụ: level 64000.0 với prints=3 và delta dương lớn = ba lần khớp quanh giá đó chủ yếu là taker mua.

Absorption

Absorption = limit order hấp thụ market order khiến giá bị giữ tại một level. Nó không tự động nghĩa là đảo chiều.

Câu hỏi trung tâm: sau absorption, market còn đủ lực không? Trả lời bằng Tape + Volume + CVD + phản ứng giá — không chỉ bằng sự kiện absorption.

Hai phía

BUY absorption
Delta mua lớn tại level nhưng giá không break rõ lên trên → limit sell đang giữ (kiểu kháng cự).
SELL absorption
Delta bán lớn tại level nhưng giá không break rõ xuống dưới → limit buy đang đỡ (kiểu hỗ trợ).

FlowMapTrader.com detect thế nào

Detect chỉ dùng tape footprint-lite — bucket từ aggTrade đã khớp, không phải order book đang treo. Ý tưởng: tại một price level, taker đánh mạnh (delta lớn) nhưng giá không phá được qua level → coi như bị absorb (phe limit tạm thắng).

  1. Gom trade vào tick giá (~ LEVEL_WINDOW_SEC=30s, tick = PRICE_TICK_SIZE mặc định 0.1).
  2. Mỗi bucket: buy/sell volume, delta = buy − sell, số prints. Giữ top level theo |delta|.
  3. Cần đủ lực: |delta| ≥ ABSORPTION_MIN_ABS_DELTA (mặc định 15) và prints ≥ ABSORPTION_MIN_PRINTS (mặc định 3).
  4. Giá cuối vẫn gần level (≤ ABSORPTION_NEAR_TICKS, mặc định 5 tick).
  5. BUY absorption (delta > 0): market buy áp đảo nhưng giá không đẩy quá ABSORPTION_MAX_BREAK_TICKS (mặc định 2) phía trên level.
  6. SELL absorption (delta < 0): market sell áp đảo nhưng giá không phá quá buffer đó phía dưới level.
  7. Trong các level hợp lệ, chọn |delta| mạnh nhất. Publish AbsorptionDetectedEvent với waiting_reactionchưa trade. Edge + cooldown giảm spam khi metric nhấp nháy quanh ngưỡng.

Riêng bước detect không gửi Telegram. Chỉ Continuation / Fade sau classify mới có thể alert (Telegram còn có thể lọc thêm theo BB near/outside).

Sau absorption — ba kết quả

Kết quả Cách đọc Tín hiệu FlowMapTrader.com
Continuation Reloading — tape còn mạnh, CVD follow lực tấn công, giá không reject mạnh. Market vẫn thắng. ABSORPTION_CONTINUATION_LONG / _SHORT
Fade Limit thắng — tape yếu / pause, giá reject khỏi level (bounce hoặc dump). Chỉ fade ở đây mới hợp lệ. ABSORPTION_FADE_LONG / _SHORT
Chop Tape / CVD / giá lẫn lộn — không edge. Chỉ UI, không Telegram.

Ví dụ map:

  • SELL absorption rồi bounce + tape yếu → ABSORPTION_FADE_LONG
  • BUY absorption rồi dump + tape yếu → ABSORPTION_FADE_SHORT
  • Phe tấn công tiếp tục sau khi giữ giá → Continuation cùng hướng.

Cont / Fade được chấm điểm thế nào

Sau detect, classifier quan sát cửa sổ ngắn (tape, CVD, price move) và chấm hai phía (mỗi bên tối đa 3 điểm):

Cont (+1 mỗi điều kiện) Fade (+1 mỗi điều kiện)
Tape strong Tape weak / pause
CVD vẫn theo phe aggression của absorption CVD exhaust / đảo ngược phe đó
Giá hold (không reject mạnh) Giá reject khỏi level

Bên thắng cần điểm ≥ 2 và cao hơn bên kia — ví dụ cont 2 > fade 1 → Continuation. Cont có thể thắng nhờ CVD + giá hold trong khi tape vẫn yếu — đó là Cont bẩn. Telegram / EXEC checklist fail cont_clean (detail tape weak); paper/live không fill. Xem Tape · Levels · Prints.

Detect có đáng tin không?

Coi absorption là gợi ý bàn orderflow, không phải lệnh vào lệnh. Ưu tiên khi hold rõ + delta/prints mạnh, Cont/Fade sạch, và có context hỗ trợ (BB near/outside, CVD cùng hướng). Thận trọng khi thị trường êm (ngưỡng cố định dễ ảo), mid-band, tape mỏng, book spoof, hoặc tip báo “chưa sạch”.

Alert Telegram dùng layout decision-brief ngắn (setup → BB/EMA/CVD → ý nghĩa/gợi ý). History trên dashboard vẫn lưu reason đầy đủ hơn.

Thuật ngữ orderflow

Market order
Khớp ngay tại giá tốt nhất — tấn công giá.
Limit order
Đặt sẵn trên sổ — giữ / cản giá đến khi khớp hoặc hủy.
Market buyer / seller
Taker lift ask / hit bid — tạo print trên tape.
Limit buyer / seller
Lệnh treo trên bid / ask — hấp thụ market sell / buy.
Tape
Danh sách print đã khớp theo thời gian (aggTrade) — không phải nến, không phải order book. Cho biết nhịp aggression.
Tape window
Cửa sổ nhìn lại ngắn cho metric tape (mặc định ~30s). Không phải cửa sổ depth sổ lệnh.
Tape weak
Print thưa, có pause (> 500ms), hoặc không print trong tape window. Aggression đang nghỉ — không phải “CVD sai”.
Tape strong
Volume ít nhất giữ (decay ≥ 1), không pause, còn print — tape kiểu reload / continuation.
cont_clean
Gate execution cho Continuation: fail nếu reason có tape weak. Cont bẩn (CVD+ / giá hold, tape yếu) chỉ để desk, không vào lệnh.
Print
Một giao dịch đã khớp trên tape (một aggTrade trong FlowMapTrader.com).
Pause
Khoảng ngắt rõ trên tape — market do dự / yếu.
Decay (volume decay)
Volume nửa gần ÷ nửa trước trong tape window. < 1 = lực yếu dần.
Order book
Bid/ask treo (depth). Nguồn Spread / OBI — có thể spoof hoặc kéo lệnh. Ngược với fills trên tape.
Delta
Buy volume − sell volume tại một level hoặc trong một cửa sổ.
CVD
Cumulative volume delta — phe taker nào nhấn mạnh hơn.
Absorption
Limit hấp thụ lực market; giá bị giữ — không tự đảo chiều.
Reloading
Limit giữ tạm để market tiếp tục (continuation).
Exhaustion
Market tự hết lực (volume / print yếu dần).
Fade
Trade ngược phe market đã bị hấp thụ sau khi có reject giá rõ.
Continuation
Giá đi tiếp sau pause/hold — market chưa thua thật.

Tín hiệu FlowMapTrader.com — cách đọc type

Type Ý tưởng Cần
BULLISH_PRESSURE Long accumulation Giá↑ + OI↑ + funding≤0 + CVD confirm
BEARISH_PRESSURE Short accumulation Giá↓ + OI↑ + funding≥0 + CVD confirm
LONG_SQUEEZE Long bị ép Giá↓ mạnh + OI↓ + SELL liq
SHORT_SQUEEZE Short bị ép Giá↑ mạnh + OI↓ + BUY liq
CVD_SURGE Flow + giá cùng chiều |CVD| lớn + |Δgiá| ≥ min
CVD_DIVERGENCE Flow ≠ hướng giá |CVD| + |Δgiá| đủ, dấu ngược nhau
ABSORPTION_CONTINUATION_* Giữ giá rồi market vẫn thắng Absorption + tape/CVD mạnh + không reject mạnh
ABSORPTION_FADE_* Giữ giá rồi limit thắng Absorption + tape yếu và/hoặc price reject

Confidence tăng theo mức vượt ngưỡng (~0.5 vừa qua cổng → 1.0 gần ~3× sức). Edge trigger, cooldown và clear-hold giảm spam khi metric nhấp nháy quanh ngưỡng. Riêng absorption detect không gửi Telegram — chỉ Continuation / Fade sau classify mới alert.

Cách đọc realtime (checklist)

  1. Feed connected? Có depth → Spread/OBI có số. Liquidation vẫn có thể là .
  2. CVD 30s vs 60s — cùng dấu = lực kéo dài; lệch mạnh = cửa sổ ngắn đang đảo.
  3. Tape / Levels — chỉ dòng đã khớp (cửa sổ ~30s): print rate, pause, decay — không phải order book. Xem bucket giá nào giữ |delta| lớn. CVD+ mà tape weak = Cont bẩn; chờ cont_clean.
  4. FlowMapTrader.com — size đánh vào đâu trên mặt phẳng thời gian×giá? Cụm vs tường COB; CVD strip vs hướng giá; bubble Large vs lane Large trên desk.
  5. Card Absorptionwaiting reaction nghĩa là đang quan sát; chờ Continuation / Fade / Chop trước khi hành động.
  6. OBI — ý định trên sổ; cùng dấu CVD = đồng thuận; ngược dấu = xung đột (cẩn thận).
  7. Signal History — đọc theo chuỗi (surge rồi divergence, hoặc absorption rồi fade), không xem từng alert rời. Dùng pager khi danh sách dài.
  8. Context / Detail — Context là cách đọc dễ hiểu; Detail là số thô. Ưu tiên Context, rồi đối chiếu Detail.

Giới hạn — đừng over-read

  • Không phải lời khuyên mua/bán; không thực thi lệnh.
  • Chỉ BTCUSDT futures; cửa sổ ngắn (30–60s cho tape/CVD, ~30s cho levels).
  • Levels footprint-lite không phải heatmap thanh khoản đầy đủ — không hiện sticky-limit reload. FlowMapTrader.com heat/COB là góc nhìn sổ lệnh / thanh khoản gần đây, dạng nhẹ hơn.
  • OBI / depth có thể bị spoof; CVD phụ thuộc cách sàn gắn nhãn taker.
  • Absorption ≠ đảo chiều. Detect chỉ dùng tape bucket (không thấy limit đang treo thật). Fade chỉ sau phản ứng; Chop = không trade. Ngưỡng delta/print cố định là heuristic — thị trường êm hoặc nóng hơn sẽ đổi độ tin cậy.
  • Liquidation trên UI là event cuối, không phải heatmap.
  • AI Analysis mặc định tắt — narrative tách khỏi rule.

Quay lại Desk để đối chiếu số realtime với các mục trên, hoặc mở FlowMapTrader.com cho góc nhìn không gian.