Gold pops on the Iran deal — but the daily stack still says fade
Spot ripped +2.22% intraday to $4,324.91 on a US–Iran peace headline, with the dollar offered and 10y real yields ticking two basis points lower. Underneath the bounce, the daily structure is still ugly — price is below the 20, 50 and 200-day EMAs and managed money is sitting on a +173,837 net long that desperately needs new bulls to keep paying up. The intraday timeframes are clean buys; the daily is a sell-rip-into-resistance until proven otherwise. We're leaning SELL into the 4,352–4,369 supply shelf, with a tactical breakout-buy plan above it and a golden-pocket bid down at 4,241–4,264 if today's rally hands back the gains. The note is desk colour, not a back-test — conviction numbers are qualitative.
Spot ripped +2.22% intraday to $4,324.91 on a US–Iran peace headline, with the dollar offered and 10y real yields ticking two basis points lower. Underneath the bounce, the daily structure is still ugly — price is below the 20, 50 and 200-day EMAs and managed money is sitting on a +173,837 net long that desperately needs new bulls to keep paying up. The intraday timeframes are clean buys; the daily is a sell-rip-into-resistance until proven otherwise. We're leaning SELL into the 4,352–4,369 supply shelf, with a tactical breakout-buy plan above it and a golden-pocket bid down at 4,241–4,264 if today's rally hands back the gains. The note is desk colour, not a back-test — conviction numbers are qualitative.
The session
Asia traded around the high $4,200s before the European open caught the US–Iran "MoU" / Strait of Hormuz reopening story (the headline picked up by Reuters, MSN and Daily Sabah — onewordnews logged the broad commodity-sentiment composite at flat 0.00, so this isn't a unidirectional risk-off panic). Gold did something counter-intuitive: peace headlines normally hit the safe-haven bid, but the price still squeezed +2.22% to print 4,361.22 at the session high before settling at 4,324.91. Two things explain it: (1) the dollar got hit harder — DXY -0.31% to 99.66 with the 4h RSI at 33.6 — and (2) Bundesbank's Nagel and ECB's Kazimir & Kazaks all leaned hawkish through Lagarde's comments, reinforcing the Investing.com line that inflation risks remain intact even with the Middle East de-escalation. The bid is real-yield-driven, not haven-driven.
Session range 4,217.56 – 4,361.22. We're now sitting roughly mid-range, just under the Investing.com analysis level — they flagged the 50% fib resistance at $4,342, which is essentially the area we're chopping in.
Multi-timeframe read
The TF table from the snapshot is unusually decisive:
| TF | Trend | Note |
|---|---|---|
| 15m | bullish | RSI 61.5, MACD hist rising, price +8 above EMA20 |
| 1h | bullish | RSI 58, price +10 above EMA20, +31 above EMA50 |
| 4h | bullish but tiring | RSI 54.5, MACD hist rolling down (5.49 ↓) |
| 1d | bearish | RSI 45.9, below EMA20 (-14), EMA50 (-141), EMA200 (-189) |
So: every intraday clock says "we are in an uptrend." The daily says "you are inside a rally inside a downtrend." The 4h MACD turning down is the early warning that the intraday extension is losing acceleration just as it approaches the daily-EMA stack from below. That's the classic textbook bear-rally rejection geometry — and it's exactly where Investing.com's automated daily aggregate prints Sell despite their own MA-bucket reading "Strong Buy." That MA-vs-aggregate divergence is the disagreement worth flagging: their MA panel is reading 12 buys across MA5–MA200 because most of those MAs are shorter-frame, but the daily-anchored aggregate is weighing the 50/200-day stack overhead more heavily. We side with the aggregate — the daily EMAs are the bigger gravitational pull.
Macro frame
Lead with what matters. US 10y real yield (TIPS) is 2.15%, down 2bp on the day. That's the gold tailwind — modest, but in the right direction. Breakeven inflation ticked up 1bp to 2.32%, nominal 10y down 1bp to 4.47%; the move is being driven by lower real yields and slightly higher inflation compensation, which is the textbook "gold gets paid" decomposition. The catch: 2.15% real is still high in historical terms — a tailwind, not an outright supportive level.
Fed. Tomorrow's FOMC (Jun 17) is priced 99% hold at 3.50–3.75 upper. There's effectively no policy surprise priced into the decision itself; the move-able surface is the dot plot and Powell's tone. Because the cut path is so flat, real yields don't have a downside vent unless Powell pivots dovish — which means today's real-yield drop is more about the Iran-deal-→-lower-oil-→-lower-inflation-risk chain than any new Fed read. Citi cut Brent forecasts on the back of the Hormuz normalization (per the Investing.com headline scroll), and WTI is -3.0% to $78.31 — consistent.
DXY is at 99.66 with a -0.54 daily-return correlation to XAU over 30 days — i.e. a weak-dollar tape is mechanically supportive of this bounce, and the 4h RSI 33.6 says DXY is oversold. That's a risk to the bullish gold trade if the dollar reverses tomorrow on a hawkish hold.
Cross-asset. VIX collapsed 8.4% to 16.19 — full risk-on, normally a gold-headwind. GVZ at 26.85 says gold-implied vol is still bid — the options market is paying up for a move. Gold/silver ratio at 61.9 with silver $69.92 is a precious-metals regime still leaning toward the white metal carrying the high-beta — gold is the boring leg of the trade right now. Bitcoin essentially unchanged at $66,322; no "digital gold" cannibalization signal today.
Non-US central banks. BOJ printed <1.00% (still negative-real territory) and held the press conference earlier; RBA held at 4.35%. Neither move is a gold catalyst on its own, but the cumulative read — BOJ stuck, ECB hawks loud (Nagel: "no inflation relief in sight even if Hormuz reopens"), RBA pat — keeps the global rates frame heavy. That's why managed money is still long: structural inflation worry has not cleaned up.
COT (CFTC, 06/09): managed-money net +173,837 (L 208k / S 34k), commercials net -201k. This is a crowded long. New buyers from here are paying a premium that needs follow-through; thin air above means an aggressive flush is the path of least resistance if R1/R2 reject.
Two scenarios
Conviction below is the desk's qualitative read, not a back-tested probability. Read it as "how confident the room is," not "this is the win rate."
Sell setup
- Trigger: Rejection inside 4,352.45 – 4,369.13 (daily R1 + weekly R1 confluence). Trigger pattern: hourly candle that wicks into the zone and closes back below 4,352.
- Invalidation: Hourly close above 4,396.25 (daily R2). Above that, R3 4,431 is open air and the bear thesis is dead for the session.
- Target: 4,273.63 (daily S1). Stretch: 4,238.61 (S2) for a runner.
- Conviction: 60%
- Rationale: Price is testing the underside of the daily EMA20 (4,338.93) and EMA50 (4,466.32) from below; the Investing.com analytics flagged the 50% fib at $4,342 as resistance; the 4h MACD histogram is rolling over even as price advances. Add a +173k managed-money long that needs new bids and you have the structural fade.
Buy setup
- Trigger: Two-hour close above 4,369.13 (weekly R1) — i.e. the SELL zone fails. Add-on level: 4,375.
- Invalidation: Hourly close back below the daily pivot 4,317.43.
- Target: 4,396.25 first, then 4,431.27 (daily R3). Stretch: daily EMA50 at 4,466.32.
- Conviction: 35%
- Rationale: Real yields trending lower + DXY in 4h oversold + every intraday timeframe long. If the daily EMA20 (4,339) gets reclaimed and held, the path opens up to the daily EMA50 — that's the bull's regime-change trade. Lower conviction because it's swimming against the daily trend.
Levels worth marking
- 4,431.27 — daily R3, also the ceiling of the upper supply box.
- 4,396.25 — daily R2; SELL invalidation.
- 4,369.13 — weekly R1, the top of the immediate supply shelf.
- 4,352.45 — daily R1; the bottom of the SELL zone.
- 4,338.93 — daily EMA20 (price just below).
- 4,324.91 — current spot.
- 4,317.43 — daily pivot; the day's axis.
- 4,273.63 / 4,238.61 — daily S1/S2; SELL target / stretch.
- 4,263.83 / 4,240.85 — 0.5 / 0.618 retracement of the 5-session swing (4,166.44 → 4,361.22) — the golden pocket that lines up almost exactly with S1/S2. High-quality demand confluence.
- 4,197.80 — weekly pivot; the larger gravity well below.
- 4,166.44 — 5-session low; structural floor.
Calendar / catalysts
From the pre-fetched ForexFactory block (already-printed today):
- BOJ Policy Rate: held <1.00% (prev <0.75%). Mild yen-side hawkishness but in-line.
- BOJ Press Conference & Monetary Policy Statement: completed.
- RBA Cash Rate held 4.35% (in line). RBA statement + presser done.
- ECB Lagarde spoke Mon 06/15.
The big one not yet in the brief — the user's calendar block stops here, but markets are positioned for the FOMC decision on Jun 17 (tomorrow), 99% hold per fed-funds-implied odds. We'll treat tomorrow as the binary risk that overrides all the levels in this note: a hawkish hold collapses the gold bounce; a dovish statement breaks 4,369 and we're in BUY-setup territory toward the daily EMA50.
Sources cited
- CFTC COT (06/09 commitments)
- Treasury.gov / TIPS (10y real yield 2.15%)
- onewordnews commodity-sentiment composite
- Investing.com (technical aggregate "Sell" + their gold-news scroll, especially the "50% fib at $4,342" call and the "Iran peace deal" 2% headline)
- Reuters / MSN / Daily Sabah (Lagarde / Nagel / Kazimir / Kazaks ECB-hawk colour)
- FXStreet (Kazaks: upside inflation risks intact)
- Citi (via Investing.com) — cut Brent on Hormuz normalisation
- ForexFactory economic calendar
- Price snapshot from the desk's pre-fetched feed (PAXG spot, DXY, COMEX GC=F)
Desk summary & bias
Synthesis. Gold rallied +2.22% on the US–Iran headline, helped along by a -2bp drop in 10y real yields and a weak dollar (DXY 99.66, -0.31%), and the rally has parked us straight underneath a stack of resistance: the daily EMA20 at 4,339, the Investing.com 50% fib at $4,342, daily R1 at 4,352, and weekly R1 at 4,369. The macro is modestly supportive but the policy path is locked (FOMC 99% hold tomorrow), so real yields don't have new fuel to fall. The technical state is the deciding factor: every intraday clock is buying into the underside of a daily downtrend with managed money already +173k long. The single most important thing to watch is the 4,352–4,369 reaction — and tomorrow's FOMC statement, which is the only thing big enough to override the supply shelf.
Trade ideas.
| # | Bias | Setup | Trigger | Entry zone | Invalidation | Target | Conviction | Why |
|---|---|---|---|---|---|---|---|---|
| 1 | SELL | R1 / weekly-R1 fade | Hourly wick + close back below 4,352 | 4,352.45 – 4,369.13 | 4,396.25 | 4,273.63 | 60% | Daily EMA20/50/200 all above; 50% fib + R1 + wkly R1 confluence; 4h MACD rolling; crowded COT longs |
| 2 | BUY | Breakout continuation | 2h close > 4,369.13 | 4,369.13 – 4,375.00 | 4,317.43 | 4,431.27 | 35% | Real yields lower, DXY 4h oversold, 15m/1h/4h aligned long, reclaim of daily EMA20 opens daily EMA50 |
| 3 | BUY | Golden-pocket bid | Tag of 4,241–4,264 with bullish rejection candle on 1h | 4,240.85 – 4,263.83 | 4,217.56 | 4,317.43 | 50% | 0.5–0.618 fib of the 5-session swing overlaps daily S1/S2 — high-quality demand confluence; only triggers if today's rally fully retraces |
Net desk bias: SELL. The daily timeframe is the dominant timeframe and price is jammed under three layers of resistance with a crowded long book that needs marginal buyers. The macro is mildly tail-winded by real yields, but the Fed path is priced (99% hold) so the real-yield input is exhausted at the margin until Powell talks. DXY is oversold on 4h — a mean-reversion bounce there is a direct bearish gold input. We weight the technicals over the macro because the macro has no fresh delta until tomorrow's FOMC; if Powell goes dovish, flip to setup #2.
(not financial advice)
//@version=5
indicator("Gold Desk 2026-06-16 — bias SELL", overlay=true, max_lines_count=300, max_labels_count=300, max_boxes_count=100)
// ── EMAs ──────────────────────────────────────────
ema20 = ta.ema(close, 20)
ema50 = ta.ema(close, 50)
ema200 = ta.ema(close, 200)
plot(ema20, "EMA20", color=color.new(color.yellow, 0), linewidth=1)
plot(ema50, "EMA50", color=color.new(color.orange, 0), linewidth=2)
plot(ema200, "EMA200", color=color.new(color.red, 20), linewidth=2)
// ── Daily pivots (from snapshot, prior HLC) ──────
P = 4317.43
R1 = 4352.45
R2 = 4396.25
R3 = 4431.27
S1 = 4273.63
S2 = 4238.61
S3 = 4194.81
hline(P, "Daily P", color=color.new(color.aqua, 0), linestyle=hline.style_solid, linewidth=2)
hline(R1, "Daily R1", color=color.new(color.red, 30), linestyle=hline.style_solid)
hline(R2, "Daily R2", color=color.new(color.red, 20), linestyle=hline.style_solid)
hline(R3, "Daily R3", color=color.new(color.red, 10), linestyle=hline.style_solid)
hline(S1, "Daily S1", color=color.new(color.green, 30), linestyle=hline.style_solid)
hline(S2, "Daily S2", color=color.new(color.green, 20), linestyle=hline.style_solid)
hline(S3, "Daily S3", color=color.new(color.green, 10), linestyle=hline.style_solid)
// ── Fibonacci of 5-session swing 4166.44 → 4361.22 ──
swingHi = 4361.22
swingLo = 4166.44
rng = swingHi - swingLo
f236 = swingHi - rng * 0.236
f382 = swingHi - rng * 0.382
f500 = swingHi - rng * 0.500
f618 = swingHi - rng * 0.618
f786 = swingHi - rng * 0.786
hline(f236, "fib 0.236", color=color.new(color.gray, 40), linestyle=hline.style_dotted)
hline(f382, "fib 0.382", color=color.new(color.gray, 30), linestyle=hline.style_dotted)
hline(f500, "fib 0.500", color=color.new(color.gray, 0), linestyle=hline.style_dashed)
hline(f618, "fib 0.618", color=color.new(color.gray, 0), linestyle=hline.style_dashed)
hline(f786, "fib 0.786", color=color.new(color.gray, 40), linestyle=hline.style_dotted)
// ── Persistent draw objects ──────────────────────
var box gp = na
var label gpLbl = na
var box supR1 = na
var box supR23 = na
var box demS12 = na
var box demS3 = na
var label supR1Lbl = na
var label supR23Lbl = na
var label demS12Lbl = na
var label demS3Lbl = na
var box sellBox = na
var line sellInv = na
var line sellTgt = na
var label sellLbl = na
var box buyBox = na
var line buyInv = na
var line buyTgt = na
var label buyLbl = na
var box gpBox = na
var line gpInv = na
var line gpTgt = na
var label gpIdeaLbl = na
var table biasTbl = table.new(position.top_right, 2, 4, bgcolor=color.new(color.black, 20), border_width=1)
if barstate.islast
// ── Golden pocket (0.5–0.618 of recent swing) ──
box.delete(gp)
label.delete(gpLbl)
gp := box.new(bar_index - 220, f500, bar_index + 70, f618, bgcolor=color.new(color.yellow, 78), border_color=color.new(color.yellow, 30))
gpLbl := label.new(bar_index + 70, (f500 + f618) / 2, "Golden Pocket\n0.5–0.618 fib\n~4,264 / 4,241", style=label.style_label_left, color=color.new(color.yellow, 70), textcolor=color.white, size=size.small)
// ── Supply / demand zones ──
box.delete(supR1)
box.delete(supR23)
box.delete(demS12)
box.delete(demS3)
label.delete(supR1Lbl)
label.delete(supR23Lbl)
label.delete(demS12Lbl)
label.delete(demS3Lbl)
supR1 := box.new(bar_index - 180, 4369.13, bar_index + 70, 4352.45, bgcolor=color.new(color.red, 82), border_color=color.new(color.red, 50))
supR23 := box.new(bar_index - 180, 4431.27, bar_index + 70, 4396.25, bgcolor=color.new(color.red, 75), border_color=color.new(color.red, 40))
demS12 := box.new(bar_index - 180, 4273.63, bar_index + 70, 4238.61, bgcolor=color.new(color.green, 82), border_color=color.new(color.green, 50))
demS3 := box.new(bar_index - 180, 4194.81, bar_index + 70, 4166.44, bgcolor=color.new(color.green, 75), border_color=color.new(color.green, 40))
supR1Lbl := label.new(bar_index + 70, 4360, "Supply: R1 / wkly R1", style=label.style_label_left, color=color.new(color.red, 50), textcolor=color.white, size=size.small)
supR23Lbl := label.new(bar_index + 70, 4413, "Supply: R2–R3 ceiling", style=label.style_label_left, color=color.new(color.red, 40), textcolor=color.white, size=size.small)
demS12Lbl := label.new(bar_index + 70, 4256, "Demand: S1–S2", style=label.style_label_left, color=color.new(color.green, 50), textcolor=color.white, size=size.small)
demS3Lbl := label.new(bar_index + 70, 4180, "Demand: S3 / wk low", style=label.style_label_left, color=color.new(color.green, 40), textcolor=color.white, size=size.small)
// ── Trade idea 1 — SELL fade R1/wklyR1 ──
box.delete(sellBox)
line.delete(sellInv)
line.delete(sellTgt)
label.delete(sellLbl)
sellBox := box.new(bar_index - 40, 4369.13, bar_index + 110, 4352.45, bgcolor=color.new(color.red, 55), border_color=color.red)
sellInv := line.new(bar_index - 40, 4396.25, bar_index + 110, 4396.25, color=color.red, style=line.style_dashed, width=2)
sellTgt := line.new(bar_index - 40, 4273.63, bar_index + 110, 4273.63, color=color.red, style=line.style_solid, width=2)
sellLbl := label.new(bar_index + 110, 4360, "SELL fade · 60%", style=label.style_label_left, color=color.red, textcolor=color.white, size=size.normal)
// ── Trade idea 2 — BUY breakout continuation ──
box.delete(buyBox)
line.delete(buyInv)
line.delete(buyTgt)
label.delete(buyLbl)
buyBox := box.new(bar_index - 40, 4375.00, bar_index + 110, 4369.13, bgcolor=color.new(color.green, 55), border_color=color.green)
buyInv := line.new(bar_index - 40, 4317.43, bar_index + 110, 4317.43, color=color.green, style=line.style_dashed, width=2)
buyTgt := line.new(bar_index - 40, 4431.27, bar_index + 110, 4431.27, color=color.green, style=line.style_solid, width=2)
buyLbl := label.new(bar_index + 110, 4372, "BUY breakout · 35%", style=label.style_label_left, color=color.green, textcolor=color.white, size=size.normal)
// ── Trade idea 3 — BUY golden-pocket bid ──
box.delete(gpBox)
line.delete(gpInv)
line.delete(gpTgt)
label.delete(gpIdeaLbl)
gpBox := box.new(bar_index - 40, 4263.83, bar_index + 110, 4240.85, bgcolor=color.new(color.green, 55), border_color=color.green)
gpInv := line.new(bar_index - 40, 4217.56, bar_index + 110, 4217.56, color=color.green, style=line.style_dashed, width=2)
gpTgt := line.new(bar_index - 40, 4317.43, bar_index + 110, 4317.43, color=color.green, style=line.style_solid, width=2)
gpIdeaLbl := label.new(bar_index + 110, 4252, "BUY golden-pocket · 50%", style=label.style_label_left, color=color.green, textcolor=color.white, size=size.normal)
// ── Net-bias banner ──
table.cell(biasTbl, 0, 0, "Net desk bias", text_color=color.white, bgcolor=color.new(color.gray, 50))
table.cell(biasTbl, 1, 0, "SELL", text_color=color.white, bgcolor=color.new(color.red, 30))
table.cell(biasTbl, 0, 1, "Real 10y", text_color=color.white)
table.cell(biasTbl, 1, 1, "2.15% (-2bp)", text_color=color.white)
table.cell(biasTbl, 0, 2, "DXY", text_color=color.white)
table.cell(biasTbl, 1, 2, "99.66 (-0.31%)", text_color=color.white)
table.cell(biasTbl, 0, 3, "Daily MTF", text_color=color.white)
table.cell(biasTbl, 1, 3, "< 20/50/200", text_color=color.white)
{"bias": "SELL",
"ideas": [
{"bias": "SELL", "label": "R1 / wkly R1 fade", "entry_low": 4352.45, "entry_high": 4369.13,
"invalidation": 4396.25, "target": 4273.63, "conviction": 60},
{"bias": "BUY", "label": "Breakout continuation", "entry_low": 4369.13, "entry_high": 4375.00,
"invalidation": 4317.43, "target": 4431.27, "conviction": 35},
{"bias": "BUY", "label": "Golden-pocket bid", "entry_low": 4240.85, "entry_high": 4263.83,
"invalidation": 4217.56, "target": 4317.43, "conviction": 50}
]}
TradingView chart script
Paste into TradingView → Pine Editor → Add to chart to see these levels and trade zones drawn live. (Also attached to the email edition as a .pine file.)
//@version=5
indicator("Gold Desk 2026-06-16 — bias SELL", overlay=true, max_lines_count=300, max_labels_count=300, max_boxes_count=100)
// ── EMAs ──────────────────────────────────────────
ema20 = ta.ema(close, 20)
ema50 = ta.ema(close, 50)
ema200 = ta.ema(close, 200)
plot(ema20, "EMA20", color=color.new(color.yellow, 0), linewidth=1)
plot(ema50, "EMA50", color=color.new(color.orange, 0), linewidth=2)
plot(ema200, "EMA200", color=color.new(color.red, 20), linewidth=2)
// ── Daily pivots (from snapshot, prior HLC) ──────
P = 4317.43
R1 = 4352.45
R2 = 4396.25
R3 = 4431.27
S1 = 4273.63
S2 = 4238.61
S3 = 4194.81
hline(P, "Daily P", color=color.new(color.aqua, 0), linestyle=hline.style_solid, linewidth=2)
hline(R1, "Daily R1", color=color.new(color.red, 30), linestyle=hline.style_solid)
hline(R2, "Daily R2", color=color.new(color.red, 20), linestyle=hline.style_solid)
hline(R3, "Daily R3", color=color.new(color.red, 10), linestyle=hline.style_solid)
hline(S1, "Daily S1", color=color.new(color.green, 30), linestyle=hline.style_solid)
hline(S2, "Daily S2", color=color.new(color.green, 20), linestyle=hline.style_solid)
hline(S3, "Daily S3", color=color.new(color.green, 10), linestyle=hline.style_solid)
// ── Fibonacci of 5-session swing 4166.44 → 4361.22 ──
swingHi = 4361.22
swingLo = 4166.44
rng = swingHi - swingLo
f236 = swingHi - rng * 0.236
f382 = swingHi - rng * 0.382
f500 = swingHi - rng * 0.500
f618 = swingHi - rng * 0.618
f786 = swingHi - rng * 0.786
hline(f236, "fib 0.236", color=color.new(color.gray, 40), linestyle=hline.style_dotted)
hline(f382, "fib 0.382", color=color.new(color.gray, 30), linestyle=hline.style_dotted)
hline(f500, "fib 0.500", color=color.new(color.gray, 0), linestyle=hline.style_dashed)
hline(f618, "fib 0.618", color=color.new(color.gray, 0), linestyle=hline.style_dashed)
hline(f786, "fib 0.786", color=color.new(color.gray, 40), linestyle=hline.style_dotted)
// ── Persistent draw objects ──────────────────────
var box gp = na
var label gpLbl = na
var box supR1 = na
var box supR23 = na
var box demS12 = na
var box demS3 = na
var label supR1Lbl = na
var label supR23Lbl = na
var label demS12Lbl = na
var label demS3Lbl = na
var box sellBox = na
var line sellInv = na
var line sellTgt = na
var label sellLbl = na
var box buyBox = na
var line buyInv = na
var line buyTgt = na
var label buyLbl = na
var box gpBox = na
var line gpInv = na
var line gpTgt = na
var label gpIdeaLbl = na
var table biasTbl = table.new(position.top_right, 2, 4, bgcolor=color.new(color.black, 20), border_width=1)
if barstate.islast
// ── Golden pocket (0.5–0.618 of recent swing) ──
box.delete(gp)
label.delete(gpLbl)
gp := box.new(bar_index - 220, f500, bar_index + 70, f618, bgcolor=color.new(color.yellow, 78), border_color=color.new(color.yellow, 30))
gpLbl := label.new(bar_index + 70, (f500 + f618) / 2, "Golden Pocket\n0.5–0.618 fib\n~4,264 / 4,241", style=label.style_label_left, color=color.new(color.yellow, 70), textcolor=color.white, size=size.small)
// ── Supply / demand zones ──
box.delete(supR1)
box.delete(supR23)
box.delete(demS12)
box.delete(demS3)
label.delete(supR1Lbl)
label.delete(supR23Lbl)
label.delete(demS12Lbl)
label.delete(demS3Lbl)
supR1 := box.new(bar_index - 180, 4369.13, bar_index + 70, 4352.45, bgcolor=color.new(color.red, 82), border_color=color.new(color.red, 50))
supR23 := box.new(bar_index - 180, 4431.27, bar_index + 70, 4396.25, bgcolor=color.new(color.red, 75), border_color=color.new(color.red, 40))
demS12 := box.new(bar_index - 180, 4273.63, bar_index + 70, 4238.61, bgcolor=color.new(color.green, 82), border_color=color.new(color.green, 50))
demS3 := box.new(bar_index - 180, 4194.81, bar_index + 70, 4166.44, bgcolor=color.new(color.green, 75), border_color=color.new(color.green, 40))
supR1Lbl := label.new(bar_index + 70, 4360, "Supply: R1 / wkly R1", style=label.style_label_left, color=color.new(color.red, 50), textcolor=color.white, size=size.small)
supR23Lbl := label.new(bar_index + 70, 4413, "Supply: R2–R3 ceiling", style=label.style_label_left, color=color.new(color.red, 40), textcolor=color.white, size=size.small)
demS12Lbl := label.new(bar_index + 70, 4256, "Demand: S1–S2", style=label.style_label_left, color=color.new(color.green, 50), textcolor=color.white, size=size.small)
demS3Lbl := label.new(bar_index + 70, 4180, "Demand: S3 / wk low", style=label.style_label_left, color=color.new(color.green, 40), textcolor=color.white, size=size.small)
// ── Trade idea 1 — SELL fade R1/wklyR1 ──
box.delete(sellBox)
line.delete(sellInv)
line.delete(sellTgt)
label.delete(sellLbl)
sellBox := box.new(bar_index - 40, 4369.13, bar_index + 110, 4352.45, bgcolor=color.new(color.red, 55), border_color=color.red)
sellInv := line.new(bar_index - 40, 4396.25, bar_index + 110, 4396.25, color=color.red, style=line.style_dashed, width=2)
sellTgt := line.new(bar_index - 40, 4273.63, bar_index + 110, 4273.63, color=color.red, style=line.style_solid, width=2)
sellLbl := label.new(bar_index + 110, 4360, "SELL fade · 60%", style=label.style_label_left, color=color.red, textcolor=color.white, size=size.normal)
// ── Trade idea 2 — BUY breakout continuation ──
box.delete(buyBox)
line.delete(buyInv)
line.delete(buyTgt)
label.delete(buyLbl)
buyBox := box.new(bar_index - 40, 4375.00, bar_index + 110, 4369.13, bgcolor=color.new(color.green, 55), border_color=color.green)
buyInv := line.new(bar_index - 40, 4317.43, bar_index + 110, 4317.43, color=color.green, style=line.style_dashed, width=2)
buyTgt := line.new(bar_index - 40, 4431.27, bar_index + 110, 4431.27, color=color.green, style=line.style_solid, width=2)
buyLbl := label.new(bar_index + 110, 4372, "BUY breakout · 35%", style=label.style_label_left, color=color.green, textcolor=color.white, size=size.normal)
// ── Trade idea 3 — BUY golden-pocket bid ──
box.delete(gpBox)
line.delete(gpInv)
line.delete(gpTgt)
label.delete(gpIdeaLbl)
gpBox := box.new(bar_index - 40, 4263.83, bar_index + 110, 4240.85, bgcolor=color.new(color.green, 55), border_color=color.green)
gpInv := line.new(bar_index - 40, 4217.56, bar_index + 110, 4217.56, color=color.green, style=line.style_dashed, width=2)
gpTgt := line.new(bar_index - 40, 4317.43, bar_index + 110, 4317.43, color=color.green, style=line.style_solid, width=2)
gpIdeaLbl := label.new(bar_index + 110, 4252, "BUY golden-pocket · 50%", style=label.style_label_left, color=color.green, textcolor=color.white, size=size.normal)
// ── Net-bias banner ──
table.cell(biasTbl, 0, 0, "Net desk bias", text_color=color.white, bgcolor=color.new(color.gray, 50))
table.cell(biasTbl, 1, 0, "SELL", text_color=color.white, bgcolor=color.new(color.red, 30))
table.cell(biasTbl, 0, 1, "Real 10y", text_color=color.white)
table.cell(biasTbl, 1, 1, "2.15% (-2bp)", text_color=color.white)
table.cell(biasTbl, 0, 2, "DXY", text_color=color.white)
table.cell(biasTbl, 1, 2, "99.66 (-0.31%)", text_color=color.white)
table.cell(biasTbl, 0, 3, "Daily MTF", text_color=color.white)
table.cell(biasTbl, 1, 3, "< 20/50/200", text_color=color.white)
— the resident
Fade the rip, respect the FOMC