thinkorswim · supply & demand
Trade the zones, not the noise.
TradingStrawAlert is a custom thinkScript study paired with a defined process for trading supply-and-demand zones with options. You mark the zones each morning; it only alerts when a setup actually confirms on structure and volume — so entries come from a checklist, not a hunch.
- Confirmed zone alerts. Reject, bounce, and break signals that fire only with a directional candle, above-average volume, alignment to VWAP / open / 9EMA, and inside the live window.
- Dual-scenario brackets. One band carrying two pre-armed plans (reject → puts vs break → calls), showing each side's reward-to-risk up front and locking to whichever triggers first.
- True-ATR & Fib context. The day's range against the ticker's real daily ATR separates a weak target from a real one; a 50% fib ping flags where to take profit.
- Exit & invalidation alerts. A 9EMA-close exit, plus reclaim / supply-lost flags that call your thesis dead the moment a broken zone is reclaimed.
Reference
Where to go next
three tabs, one workflow
Every signal the study fires, what triggers it, and the action it implies.
Open Alerts →What the zones are, the four ways price interacts with them, and the ATR target-quality read.
Open Zones →The step-by-step: load the plan, read the chart, run the checklist, manage and exit.
Open the SOP →02
Read the chart
colors = the platform
Every line and label means the same thing here as on your screen. The top strip is the live readout; the bands are the zones; the lines are your references; the markers are the signals.
Status strip, decoded — ZONE MODE (zones loaded) · HTF bias and how many of 5 MAs agree · VPA (approach fading/steady + pop/no-pop) · Align L/S (how many of open/VWAP/9EMA each side holds) · Next demand / supply and its distance · 1D ATR + Day range = % of 1D ATR + zone room ×1D ATR.
03
Know the signals
what fires, what it means
The study only fires when its gates are already met — the right zone interaction, a directional candle, above-average volume, alignment, the correct 9EMA side, and inside the live 5-minute window. The marker tells you the setup; you still apply the entry checklist on the Daily SOP.
| Marker | Fires when | Means / action |
|---|---|---|
| ▼ S-REJ | price tags a supply, closes back below it | supply rejected → put toward the demand |
| ▲ L-BNC | price tags a demand, closes back above it | demand held → call toward the supply |
| ▲ L-BRK | price breaks & holds above a supply | breakout → call continuation up |
| ▼ S-BRK | price breaks & holds below a demand | breakdown → put continuation down |
| ◆ RETEST | a broken edge is wicked & rejected / held | lower-risk re-entry in the break's direction |
| PUT / CALL | a bracket band triggers its bear / bull branch | the pre-armed plan fired → take the named target |
| ■ 50% FIB | price reaches your 50% fib level | target / exit zone — watch for the turn |
| ▲ RECLAIM | broken demand reclaimed (full body back above) | puts thesis dead — stand down / flip bias |
| ▼ SUPPLY LOST | broken supply lost (full body back below) | calls thesis dead — stand down / flip bias |
| ■ EXIT | a 5m candle closes back across the 9EMA | trend break → close the trade |
Playbook
Supply & demand zones
the level of interest behind every trade
A zone is a price band where institutional buying (demand) or selling (supply) showed up before. You mark them each morning from the higher timeframes; the study watches them and only speaks when price interacts with one a specific way.
The four interactions
Price taps a demand zone and holds above it. Bullish — calls toward the supply above.
Price taps a supply zone and rejects below it. Bearish — puts toward the demand below.
Price breaks and holds above a supply band. Bullish continuation — calls.
Price breaks and holds below a demand band. Bearish continuation — puts.
Loading the zones
Punch each zone into a supply or demand slot as Top · Bottom · Timeframe (4H / 3H / 2H / 90m / 1H). Leave a slot at 0 to skip it. With at least one zone loaded, the study runs in ZONE MODE; with none, it drops to a generic 9EMA/VWAP fallback and the zone signals can't fire.
04
The ATR read
is this a real target — or has the day run out?
Zone-to-zone distance is not the ticker's true daily range. The Demand / Supply room = ×1D ATR label tells you which you're looking at:
Companion
VPA Scanner
volume-price analysis, on every bar
A second study that reads effort vs result on each candle — volume against a trimmed baseline, spread against average range — and tags the bar. Shape = candle type · color = volume · position = strength vs weakness.
01
Status row
reads the live bar, top-left of the chart
02
Markers on the candles
shape = the candle · color = the volume
hammer — strength (long lower wick).
shooting star — weakness (long upper wick).
doji — indecision (tiny body).
drive up — confirmed bullish move (effort = result).
drive down — confirmed bearish move.
Arrow color = volume tier
03
Bubbles
high-conviction events
| Bubble | Means |
|---|---|
| STOP VOL | selling climax — ultra vol closes off the low; bullish at lows |
| TOP VOL | buying climax — ultra vol rejected off the high; bearish at highs |
| ABSORB | big volume, tiny move — someone absorbing; trend stalling |
| NO DEMAND | wide rally on low volume — no buyers; move likely fails |
| NO SUPPLY | wide drop on low volume — no sellers; bullish into demand |
04
Buy / sell alerts
VPA BUY CALLS / BUY PUTS — pick the sensitivity
The scanner fires its own directional alerts. A bullish reversal (selling climax / no-supply / high-vol hammer) followed by a confirming up-drive prints VPA BUY CALLS; the mirror prints VPA BUY PUTS. The mode controls what counts:
05
The entry decision
signal ≠ permission
A marker is the trigger, not the trade. Run it through the mentor's checklist before you click — and let the 1D-ATR readout tell you whether the target is even worth taking.
06
Manage & exit
protect, then bank
Hold while price respects the 9EMA. Four things take you out — in priority order, top first.
✓
Daily quick-reference
the one-screen version — tape it next to the monitor
① Load
- Zones into supply/demand slots (Top · Bot · TF)
- Two-way band? set the bracket
- Want fib? set fibHigh / fibLow
- Confirm 5m · EXTO · study attached
② Confirm before entry
- HTF aligned
- ~4th 5m candle (waited 15 min)
- Above-avg volume on the candle
- R:R ≥ 3:1 to next zone
- Room ×1D ATR — real target?
③ Exit (priority)
- Reclaim / Supply Lost → thesis dead
- Target zone, or fib ~100% ATR + fading vol
- 5m close back across 9EMA
- else HOLD
④ Never
- Same band in a slot AND the bracket
- Enter the first candle / front-run a break
- Hold past a 20% option loss
- Take a weak-ATR target as a hard stop
Pre-market · 07
Rank it before the bell.
Decisiveness is built before 9:30 — not in the chaos at the open. Drop in the morning's scenarios; HTF bias breaks the ties, counter-trend plays get demoted, the 1–2 trade cap holds you honest, and your committed picks land in one panel you trade from.
Today's trades
0 / 2 committedReference · 06
The code, decoded.
The study in plain language — every alert, the logic behind it, and the action it implies. No thinkScript reading required. Think of it as the field manual for the engine that runs the rest of this site.
ZoneGuard / TradingStrawAlert · ~1,270 lines · 5-min execution01
The system
one engine, one equation
ZoneGuard watches the mechanical, chartable parts of the plan — your hand-drawn zones, the Trifecta (9EMA / VWAP / Open), higher-timeframe bias, and volume — and fires a buy-calls or buy-puts alert when a setup actually lines up. It doesn't place trades. It tells you the setup is here and what action it implies.
The alert engine — zone interactions, the REVERSAL CALL, brackets, exits.
A companion study that paints volume-price tags on every bar and fires its own VPA buy/sell signals.
The rule running through all of it: a level of interest (a zone) + stacked confirmations (Trifecta + structure + volume) = a trade. Every alert is a hardcoded version of that equation.
0 and it drops to a generic 9EMA/VWAP fallback — the zone alerts and the REVERSAL CALL can't fire. If the status reads "fresh-cross fallback," you forgot to punch in a zone.02
Vocabulary
the building blocks behind every signal
9EMA (momentum), VWAP (fair value), OP (the session open, magenta dashed). Above all three = bullish posture; below all three = bearish.
A 0–3 count of how many of the Trifecta price sits above (long) or below (short). 3/0 = above all three.
Higher-timeframe direction from SMA orientation (20/40/100) on the 1H/2H/4H. Shown as HTF: BULLISH (3 up / 2 dn).
Whether volume is fading into a level and whether it pops (expands) on the turn.
Distance to the next zone in multiples of the daily ATR — your runway and R:R sanity check.
A points tally (Q4, Q6…) grading how many confirmations stacked. Higher = cleaner.
03
The status strip
the live readout, decoded
The colored labels across the top of the chart are a live read of the current bar. Display only — they don't fire anything; they're your at-a-glance read of whether conditions favor a setup.
Reading it left to right — zones loaded · HTF bias and how many of 5 MAs agree · VPA (approach fading/steady + pop/no-pop) · which side of VWAP & 9EMA price sits · Align L/S (how many of open/VWAP/9EMA each side holds) · nearest zone and its distance · the day's true ATR, range used, and zone room in ATR multiples.
04
The alerts
what fires, what it means, what to do
Nine buy/sell entry alerts, plus management alerts. Every entry leads with the action — BUY CALLS or BUY PUTS — so it maps straight to your scenario cheat sheet, no translating long/short into calls/puts.
| Alert | Fires when | Means / action |
|---|---|---|
| ▲ LONG BOUNCE | price tags a demand zone and closes back above it | demand held → buy calls toward the supply |
| ▲ LONG BREAK UP | price breaks and holds above a supply zone | breakout → buy calls, continuation up |
| ▼ SHORT REJECT | price tags a supply and closes back below it | supply rejected → buy puts toward the demand |
| ▼ SHORT BREAK DN | price breaks and holds below a demand zone | breakdown → buy puts, continuation down |
| ◆ LONG RETEST | a broken supply now holds as support | old resistance → support → buy calls re-entry |
| ◆ SHORT RETEST | a broken demand now caps as resistance | old support → resistance → buy puts re-entry |
| ★ REVERSAL CALL | demand test → Open reclaim & hold → volume pop | the confirmed reversal → buy calls (see §05) |
| ▣ BRACKET CALL / PUT | a two-way band triggers its bull / bear branch | the pre-armed plan fired → take the named target |
| ■ EXIT CALLS / PUTS | a 5m candle closes back across the 9EMA | trend break → close the trade |
| ▲ DEMAND RECLAIMED | a failed breakdown reclaims demand | puts thesis dead — stand down / flip bias |
| ▼ SUPPLY LOST | a failed breakout loses supply | calls thesis dead — stand down / flip bias |
| ■ 50% FIB | price reaches your 50% fib level | target / exit zone — watch for the turn |
05
The REVERSAL CALL
a four-state machine — the flagship entry
Reverse-engineered from how the AMZN call was actually taken: wait for a candle above the Open, then let volume break above average. It runs as a state machine so the entry only fires when the full sequence completes — never on the first touch.
No demand-zone test yet. Nothing armed.
Price tested a demand zone. Waiting for the Open reclaim. Stays armed until the zone breaks or a new day.
A candle closed back above the Open and is holding there. Waiting for the volume pop.
Volume popped above the approach average with full 3/3 alignment → BUY CALLS. Latches; won't re-fire until a fresh test re-arms it.
On the chart
A gray "OP RECLAIMED — waiting for VPA pop" bubble marks the reclaim (off by default), then a cyan up-arrow + "REV CALL · vol Nx · OP reclaimed" marks the entry itself.
06
How volume is read
never raw — always relative
VPA only gates the REVERSAL CALL. In the other entries it feeds the quality score and the VPA tag, but doesn't block them.
07
Gates & exits
what must be true — and what takes you out
The filters before any entry
waitMinutesAfterOpen past 9:30 ET (currently 5; the plan's rule is 10–15).The exit
An exit fires when a 5-min candle closes fully across the 9EMA against your position. The thesis-invalidation alerts (DEMAND RECLAIMED / SUPPLY LOST) tell you the reason for the trade is gone — often before the 9EMA exit trips.
08
Message Center control
only the trades, not the noise
Every thinkScript Alert() that fires posts to the Message Center and plays a sound. Chart bubbles don't — they're purely visual. The master switch entryAlertsOnly (default yes) keeps the center clean:
The nine buy/sell entries — the BUY CALLS / BUY PUTS and bracket signals.
Exits, DEMAND RECLAIMED / SUPPLY LOST, bracket exits, and the 50% fib still draw their bubbles — no message, no ding.
Set entryAlertsOnly = no to send everything to the center again. Sound and message can't be separated in a study alert — silencing one silences both.
09
Inputs you'll touch
the knobs that matter day-to-day
no to backtest).10
Mapping to the plan
where each checklist item lives in the code
| Plan item | In the code |
|---|---|
| The four pre-market scenarios | the four zone entries (break-up / reject / bounce + reversal / break-down) |
| Trifecta (9EMA / VWAP / Open) | alignment count + mandatory-9EMA gate |
| HTF Bias Filter | the HTF label (gate optional via requireHTFAlignment) |
| Zone + 3 confirmations | the REVERSAL CALL: zone + Trifecta + VPA + Open reclaim |
| "Wait for candle close" | confirmOnBarClose (currently off) |
| No trading first 10–15 min | waitMinutesAfterOpen (currently 5) |
| Exit on 2 closes past 9EMA | currently 1 close — flagged divergence |
Left manual on purpose: the discipline checklist, journaling, news scan, watchlist curation, and the multi-timeframe charting workflow. Those are yours.
11
thinkScript gotchas
for when you edit it later
The state machine and every armed/fired latch use rec + the prior bar. No arrays exist in thinkScript.
A def must appear before it's used — that's why the REVERSAL block sits at the bottom.
Only the gray reclaim bubble looks forward (to sit left of the candle). It never affects an entry.
One stray ( breaks the whole compile — paren/bracket counts get checked after every change.
Alert text uses | separators — the parser chokes on literal parentheses and dashes.
The 100-SMA on 1H needs ~15 days and daily ATR ~3 weeks — keep ~1 month of chart data loaded.
12
One-screen cheat sheet
tape it next to the monitor
A zone + the Trifecta + a volume pop = a buy-calls or buy-puts alert.
Everything else is filtering, confirmation, and noise control.