Video: How To Read Order Flow for Day Trading Beginner to Advanced
Creator: BrandonTrades
Original Video: Watch the original video
The Big Idea
Brandon’s process starts with a chart level and then asks whether order-book behavior supports the trade idea as price reaches it. Bookmap supplies another view of the market; it does not replace the setup.
The mental model is known level → displayed liquidity → behavior on approach → price response → decision. A bright band is an observation about displayed orders. A favorable reaction at a level is another observation. Neither is a trade by itself.
The presenter concentrates on three elements: the heatmap, significant liquidity, and the current order book, or COB. These describe related parts of the same book, so they should not be counted as three independent confirmations.
The central lesson is to make the trade hypothesis first, then inspect whether the market confirms or invalidates it. The research question is whether this added information improves decisions after accounting for missed trades, execution, and selection effects.
If You Remember Only One Thing
Resting liquidity shows what is displayed now. The reaction shows what happens when that liquidity is challenged.
60-Second Summary
- The order book contains displayed resting bids and offers at specific prices.
- The heatmap visualizes displayed liquidity and how it changes over time.
- Brighter or warmer bands indicate more displayed quantity under the selected color settings.
- The COB provides a current depth snapshot near price; its quantity is not a count of identifiable people.
- Brandon marks supply/demand, opening-range boundaries, premarket levels, or prior-day extremes before looking for order-flow confirmation.
- He asks where liquidity sits, how long it persists, whether it changes, and how price behaves when it reaches it.
- Large displayed bids are not an automatic buy; large offers are not an automatic short.
- The two narrated winners illustrate his interpretation, but do not establish a measurable probability advantage.
- Our Pine Script tests a narrow chart-reclaim baseline. It does not recreate depth, hidden orders, or absorption.
Start with the Difference Between Waiting Orders and Completed Trades
A resting bid is a displayed willingness to buy at a particular price; a resting offer is a displayed willingness to sell. They provide liquidity until filled, changed, or canceled. An aggressive order instead trades against available liquidity.
In a typical book, bids sit on the buying side and offers on the selling side. The video uses position above or below the current-price line as a quick visual guide. For precise interpretation, check the bid/ask side and timestamp rather than assuming the last traded price always divides the book perfectly.
Every completed trade has both a buyer and a seller. “Aggressive selling” identifies the side initiating execution into bids; it does not mean sellers exist without buyers.
| Information | What it describes | What it cannot establish alone |
|---|---|---|
| Resting depth | Displayed pending quantity at prices | That the quantity will remain or execute |
| Executed volume | Transactions that occurred | The unexecuted book or trader identities |
| Price response | Movement after orders interact | A unique explanation for the movement |
“500 Contracts” Does Not Mean “500 Traders”
The transcript sometimes calls depth values numbers of orders or people, and elsewhere describes contracts. These units are different. Displayed quantity can aggregate many orders, and one participant can submit several orders.
Bookmap’s column documentation describes pending-book values and contract-based scaling. For a futures quantity display, read 500 as displayed contract quantity under those settings-not automatically 500 distinct orders or people. Confirm the column, instrument, and unit before interpreting a number.
Read the Heatmap as a History of Displayed Depth
Brandon uses color intensity to locate concentrations of liquidity and track their persistence. The important question is not simply whether a band is bright, but whether it stays at the relevant price as the market approaches.
The heatmap and COB have different time emphasis: the heatmap preserves a visual history; the COB emphasizes the current snapshot. A thick historical band may no longer have the same quantity in the current book.
Colors are relative to configuration, scaling, and available data. A red band on one chart is not automatically comparable with red on another. Bookmap’s main-chart documentation describes the heatmap as current and historical order-book liquidity. Treat its color as a display of quantity, not a universal numeric threshold.
Four Questions to Ask Before the Touch
- Where is it? Is the displayed cluster actually near your previously marked level?
- How long has it persisted? A brief flash and a sustained cluster are different observations.
- How is it changing? Compare quantity at the same prices and timestamps, rather than relying only on a shifting color scale.
- What happens at contact? Does price reject, reclaim, stall, or trade through?
Depth can disappear through cancellation, execution, repricing, or a change in what the feed displays. A fading band alone does not tell you which occurred. To distinguish those explanations, align book updates with trade records.
Real-time information is still subject to feed, transmission, and display latency. More detail does not guarantee that your observed state is still available when your order reaches the market.
Why the Chart Level Comes First
Brandon names supply and demand zones, a 30-minute opening range, premarket extremes, and previous-day highs and lows as possible locations. He does not give complete mechanical rules for every type in this video.
Choosing a level before observing the favorable reaction reduces a common hindsight problem: drawing a zone around whatever later bounced. It also creates a fairer comparison between the chart-only setup and the same setup with an order-flow filter.
Our original example: suppose a demand area was recorded before price approached 100.00. A displayed bid cluster sits around 100.00, while comparatively little offer quantity is shown just above. That is a candidate to observe, not a finished long signal. Price may still trade through the bids, the bids may disappear, or offers may replenish as price rises.
If price instead trades below the area and promptly reclaims it while meaningful executions occur, you have a different event to investigate. The trade plan still needs an entry, invalidation rule, target, and size. The supplied transcript does not provide a complete risk model for the two trades.
Absorption Is an Interpretation of Interaction
In the NASDAQ example, Brandon describes aggressive selling, a dip through bids, and a rapid reclaim. He interprets this as evidence of a large or hidden buyer. That is an absorption hypothesis: substantial selling occurs without sustained downward progress.
To support that hypothesis, you need executed sell-side activity and the associated price path. The number resting before the event is insufficient. A rebound can also reflect sellers finishing their activity, bids replenishing, new buyers arriving, or several mechanisms together.
Our hypothetical tape example: 300 contracts execute into bids near 100.00 over ten seconds, but price moves only one tick lower before reclaiming 100.00. That is consistent with selling being met by buying interest. It does not identify one buyer, prove an iceberg order, or predict the size of the rebound.
A hidden-order inference should stay an inference unless the data and method can support something more specific. Ordinary one-minute OHLCV contains neither that ten-second path nor reliable aggressor-side labels.
What the Two Narrated Trades Demonstrate
The first example combines a previously marked demand area, displayed bids near that area, comparatively sparse offers above, and a hold followed by a rally. The second adds a fast dip and reclaim that the presenter interprets as absorption. He describes both entries as occurring near the eventual bottom of the day.
“Bottom of the day” is an outcome known later. It cannot be an entry condition. The decision-time information is the marked level, book state, executions if available, and reaction observed up to that moment.
The examples show how Brandon organizes observations. They do not supply every qualifying opportunity, losing trades, depth records, fill prices, costs, or a reproducible win rate. His statements that order flow creates an edge or raises probability remain claims to test.
Make the Liquidity Claim Measurable
Primary research question: among the same predefined chart setups, does persistent displayed liquidity plus a defined reaction improve net outcomes relative to the chart-only decision rule?
The following are our experimental definitions, not Brandon’s numerical rules:
| Concept | Possible recorded definition | Data needed |
|---|---|---|
| Large displayed cluster | Quantity summed within two ticks of the level exceeds the 90th percentile of such clusters in the previous 30 minutes | Timestamped depth snapshots with a fixed price-band rule |
| Persistent liquidity | The cluster exceeds that threshold in at least 80% of snapshots over the 30 seconds before contact | Defined snapshot frequency and synchronized clocks |
| Strengthening cluster | Last pre-contact quantity exceeds quantity ten seconds earlier by at least 25% | Quantity at the same fixed prices; cancellation/execution context |
| Reaction | After entering the band, price closes back above the marked level on a completed one-minute candle | Price bars plus event timestamps |
| Absorption candidate | High aggressor-sell volume near the level with limited downward movement, followed by a reclaim | Executed trades, aggressor classification, and a predefined movement/time threshold |
Freeze the thresholds using development data. Do not recompute them from the future reaction or choose only the clusters that later held. Specify sampling, missing-data rules, and exact signal time before testing.
The key comparison keeps levels, dates, instrument, entry timing, stop, target, costs, and size constant. Change only the filter. Count all eligible chart setups, including those the filter rejects. Otherwise, a higher win rate among fewer trades can conceal a lower total opportunity value.
A Pine Script Baseline Without Pretending to Recreate Bookmap
View Pine Script – Price-and-Volume Baseline
//@version=6
strategy("Known daily low reclaim: OHLCV baseline only", overlay=true,
initial_capital=1000000, currency=currency.USD,
pyramiding=0, default_qty_type=strategy.fixed, default_qty_value=1,
margin_long=100, margin_short=100,
commission_type=strategy.commission.cash_per_contract, commission_value=1.25,
slippage=2, process_orders_on_close=false,
calc_on_every_tick=false, calc_on_order_fills=false,
use_bar_magnifier=true)
// This DOES NOT read market depth, bid/ask executions, or Bookmap.
if not timeframe.isminutes or timeframe.multiplier != 1
runtime.error("Use standard one-minute candles.")
string tz = "America/New_York"
string window = input.session("0930-1100", "Signal window, New York time")
int atrLen = input.int(14, "ATR length", minval=1)
float stopATR = input.float(1.0, "Stop distance / previous ATR", minval=0.1, step=0.1)
float rr = input.float(2.0, "Target R", minval=0.5, step=0.5)
int maxHold = input.int(30, "Maximum holding bars", minval=1)
int units = input.int(1, "Units per trade", minval=1)
bool useVolume = input.bool(false, "Require high traded volume (NOT book depth)")
int volLen = input.int(20, "Prior volume average length", minval=1)
float volMultiple = input.float(1.5, "Volume multiple", minval=0.1, step=0.1)
// Previous COMPLETED daily low. The [1] offset is essential here.
// Daily session boundaries come from the symbol/feed; not necessarily RTH.
float previousLow = request.security(syminfo.tickerid, "1D", low[1],
gaps=barmerge.gaps_off, lookahead=barmerge.lookahead_on)
float priorATR = ta.atr(atrLen)[1]
float priorVolume = ta.sma(volume, volLen)[1]
int dayKey = year(time, tz) * 10000 + month(time, tz) * 100 + dayofmonth(time, tz)
int etMinute = hour(time, tz) * 60 + minute(time, tz)
bool newDay = bar_index == 0 or dayKey != dayKey[1]
var bool usedToday = false
var int lossTicks = na
var int profitTicks = na
if newDay
usedToday := false
bool inWindow = not na(time(timeframe.period, window + ":23456", tz))
bool regular = not na(time(timeframe.period, "0930-1600:23456", tz))
bool volumeOK = not useVolume or (not na(volume) and not na(priorVolume) and priorVolume > 0 and volume >= priorVolume * volMultiple)
bool reclaim = not na(previousLow) and low < previousLow and close > previousLow and close > open
bool eligible = inWindow and regular and etMinute < 959 and not usedToday and strategy.position_size == 0 and not na(priorATR) and priorATR > 0
if barstate.isconfirmed and eligible and reclaim and volumeOK
// Our ATR distance is frozen at submission; brackets anchor to actual fill.
lossTicks := math.max(1, int(math.ceil(priorATR * stopATR / syminfo.mintick)))
profitTicks := math.max(1, int(math.round(lossTicks * rr)))
strategy.entry("L", strategy.long, qty=units)
strategy.exit("LX", "L", loss=lossTicks, profit=profitTicks)
usedToday := true
if strategy.position_size > 0
strategy.exit("LX", "L", loss=lossTicks, profit=profitTicks)
int held = bar_index - strategy.opentrades.entry_bar_index(0)
if held >= maxHold
strategy.close("L", comment="Time exit")
// Full US sessions only; exclude early-close days or add a holiday calendar.
// If the final RTH bar is missing, close on the next observed later bar.
bool flatten = (regular and etMinute == 959) or (not regular and etMinute >= 960)
if flatten
strategy.cancel_all()
strategy.close_all(comment="Session end", immediately=true)
plot(previousLow, "Previous completed daily low", color=color.orange, linewidth=2)
The genuine depth hypothesis requires historical order-book and execution data not supplied here. It cannot be reconstructed from standard OHLCV candles. However, the video also names objectively testable chart levels and reclaim reactions, so we can implement that component as a starting point.
Baseline question: what happens after a bullish one-minute sweep and reclaim of the previous completed daily candle’s low during a predefined morning window, with and without a traded-volume filter?
This is a long-only chart study inspired by the level-and-reaction component. It is not an order-flow strategy, and success or failure would not establish whether Bookmap confirmation adds value.
| Source-derived idea | Our experimental definition | Implementation shortcut |
|---|---|---|
| Mark known chart levels | Previous completed daily candle’s low | One level type; daily-feed session boundaries may differ from regular-session boundaries |
| Observe a reclaim | One candle trades below the level, closes above, and closes above its open | Completed-bar market entry; no tick-level reaction timing |
| Use confirmation | Optional volume ≥1.5 times the prior 20-bar average | Traded volume is an activity filter, not resting bids or absorption |
| Have a trade plan | One prior ATR stop distance and a default 2R target, measured from the fill | These exits are ours; no claim they match Brandon’s undisclosed exits |
| Focus on selected opportunities | At most one submitted entry per New York calendar day | Only the first qualifying event is sampled; later opportunities are omitted |
Pine Script Research Strategy
This code tests one objective interpretation of the source’s concept. Any mechanical definitions introduced here are ours and are not necessarily the creator’s exact rules.
Use standard one-minute candles, a documented session, and a symbol with meaningful volume. The default paper capital is $1,000,000 with 100% margin to support a one-unit test without assuming retail futures leverage. This is an experimental funding choice, not an account-size recommendation or a broker-margin model. Check instrument point value, collateral, and unit size before interpreting results.
Default commission is an illustrative $1.25 per unit per filled order and slippage is two ticks. Set realistic costs and paper capital in Strategy Properties. Expand the complete script below; the copy button appears when clipboard support is available.
What This Code Actually Tests
The script requests the prior completed daily low using a one-bar offset. It does not use the current day’s eventual low. It then evaluates completed one-minute bars during the default 09:30–11:00 New York window on weekdays.
A qualifying candle must trade below the known low and close above it with a bullish body. If enabled, the volume condition compares the signal candle with the average of the preceding bars, excluding the signal itself. ATR also comes from the preceding bar.
The first qualifying entry submitted that day consumes the opportunity even if the emulator rejects the order. The strategy holds at most one long position, uses fixed units, and freezes its bracket distances. It closes after a maximum holding interval or at the full-session close.
Execution Assumptions
- Signal and fill: the completed signal bar submits a market order, normally filled on the next available tick, usually the next bar’s open. The intrabar reclaim price is not claimed as the entry.
- Fill-relative brackets: stop and target instructions are submitted with the entry as tick distances. They anchor to the simulated fill. R is approximate after tick rounding and changes further with exit slippage and costs.
- Gaps and thesis: the ATR bracket remains coherent relative to the fill, but a gap can make the original reclaim unattractive. The baseline does not reject those gaps, and the stop is not necessarily below the reclaim candle or marked level.
- Intrabar outcomes: Bar Magnifier is enabled. If lower-timeframe history is unavailable and both bracket prices occur inside a bar, outcomes may depend on broker-emulator path assumptions.
- Time exit: holding bars are counted from the entry fill bar. A time-exit market order normally executes on the next tick after submission.
- Session exit: the close of the 15:59 bar uses an immediate simulated liquidation. This is a closing-tick approximation; missing final bars can delay liquidation. Exclude early-close days or add a separate calendar rule.
- Sizing: fixed units are exposure, not fixed account risk. Approximate planned price risk is units × stop ticks × tick size × instrument point value, before costs and adverse fills.
- Daily data: daily-feed boundaries and continuous-futures rolls can affect the level. Document the symbol, session, contract, roll treatment, and adjustment settings.
The offset higher-timeframe pattern is documented in TradingView’s timeframe FAQ (paid link). The one-bar offset is essential; using the current daily low with lookahead enabled would leak future information.
Validation status: This script has not been compiled in TradingView or run against historical data here. No performance results are claimed. Its prior-day data timing, entry sampling, bracket persistence, exits, and written rule mapping have been reviewed.
What This Code Does Not Test
- Resting bids/offers, historical depth, cancellation rates, persistence, or COB quantities.
- Hidden buyers, iceberg orders, aggressor-side executions, or absorption.
- Brandon’s demand-zone drawings, exact entry timing, targets, stops, or discretionary judgment.
- The claim that Bookmap increases trade probability or confidence in a way that improves results.
- Every intraday setup, short trades, early-close sessions, or realistic brokerage margin and queue position.
Backtest Lab
Keep symbol, timeframe, session, sample dates, costs, and size fixed while changing one major parameter. Record trades, net expectancy, average win/loss, profit factor, maximum drawdown, holding time, and how often time exits occur. Preserve a later period for evaluation rather than repeatedly tuning on it.
| Experiment | Change only | What to investigate |
|---|---|---|
| Traded-volume filter | Off versus on, then multiples 1.0, 1.5, 2.0 | Does an activity filter change outcomes? Count eligible reclaims and skipped events, not only the win rate of executed trades. This does not test depth. |
| Risk distance | Stop distance 0.5, 1.0, 1.5 prior ATR | How sensitive is the reclaim model to exits? A different stop also changes target distance at fixed R, so label it a bracket-model comparison. |
| Target | 1R, 2R, 3R | Does the payoff choice dominate results? Keep the stop model fixed and report realized returns after costs. |
| Holding time | 10, 30, 60 bars | Does the reaction persist or decay? Compare time-exit frequency and drawdown as well as profit. |
The code does not export all eligible-event counts. Add counters or journal them before claiming performance per opportunity. Stable behavior across nearby values is more informative than one isolated profitable setting; no robustness has been established here.
The Separate Experiment That Actually Tests Order Flow
Replay or collect synchronized depth and execution data for every chart-only eligible event. Freeze the liquidity definitions before reviewing outcomes. Label each event as meeting or failing the filter using only information available at its recorded decision time.
Run the same entry and exit model for the chart-only set and the filtered subset. Report triggered trades, missed trades, net R per eligible event, net R per trade, drawdown, and uncertainty across independent days. Add the platform and data expense separately when estimating practical net benefit.
For persistence, compare clusters meeting the 30-second/80% rule with those failing it, while holding the reaction and level rules fixed. For absorption, perform a separate comparison using predefined aggressor-volume and movement thresholds. Changing persistence, absorption, and entry timing together would make their individual effects difficult to interpret.
If the filtered sample looks better, test it on untouched sessions. If it merely trades less often, determine whether reduced exposure alone explains the difference. Without synchronized depth records, leave this hypothesis unanswered.
Try It Yourself
Review 20 consecutive approaches to levels marked in advance. Pause before contact and record the level, current displayed quantity, recent persistence, and expected invalidation. Then reveal the reaction and record what changed.
Use this journal: instrument/contract | date/time | chart level and marking time | feed/session | bid/ask quantity and units | depth lookback | executions | reaction | signal time | entry/stop/target | fill/costs | skipped reason | outcome.
Classify each observation as displayed depth, executed activity, price response, or inference. That exercise prevents a plausible hidden-buyer story from becoming an unsupported fact.
Check Your Understanding
- Why does a large displayed bid not guarantee a bounce? It can change, cancel, or be consumed, and other participants can continue selling.
- Are the heatmap and COB independent confirmations? They summarize related order-book information at different time emphases.
- Does 500 displayed contracts identify 500 traders? No. Quantity, orders, and participants are different units.
- What supports an absorption hypothesis? Executed aggressive activity together with limited price progress and a defined reaction-not depth alone.
- Can “bottom of the day” be used to enter? No. That label depends on later prices.
- Does high one-minute volume reproduce liquidity persistence? No. It measures traded activity, not the history of resting depth.
- What would establish incremental value? A controlled, complete comparison of the same eligible chart setups, with synchronized data, consistent execution, costs, and untouched evaluation periods.
Final Takeaway
Brandon’s strongest organizing idea is chart first, order flow second: choose the location, observe displayed liquidity, and wait to see how the market responds. The useful skill is interpreting several observations together while distinguishing what is visible from what is inferred.
The transcript does not establish a quantified edge, identify hidden participants, or supply a complete executable trading system. Use the chart baseline to study the level-and-reaction component, then collect the data required to test whether depth information adds anything beyond it.
Risk Disclosure: This material is for educational and research purposes only and is not financial or investment advice. Trading can result in substantial losses; leverage can magnify them. Displayed liquidity can change before execution and does not guarantee a fill or price reaction. Backtests are hypothetical and depend on data quality, costs, sizing, gaps, intrabar assumptions, and order behavior. Platform expenses, latency, spreads, liquidity, market regime changes, and discretionary decisions can materially affect live results. Historical or hypothetical performance does not guarantee future results.
This article is an independent educational companion to the video and is not affiliated with, sponsored by, endorsed by, or authorized by BrandonTrades.