Gold Desk — June 12, 2026: A Friday Bounce Trapped Inside a Broken Daily
Gold is mid-week-end with a +0.62% intraday tape that masks a -3.33% weekly bleed and a -6.82% month, sitting at 4,192.49 with the session high tagged precisely at the 50% retracement of the 5-session decline. The 10y real yield slipped 5bp to 2.16% — a genuine gold tailwind — but DXY firmed and the daily structure is still trading below EMA20/50/200 by 168 / 304 / 332 points. Investing.com's algo prints Strong Sell while my intraday work shows 15m and 1h reclaiming their EMA20/50, a textbook counter-trend bounce inside a broken trend. The trade is fade-the-rip into 4,229–4,242 with a tactical long only if 4,166 holds clean. Net desk bias into Monday: **SELL**.
Gold is mid-week-end with a +0.62% intraday tape that masks a -3.33% weekly bleed and a -6.82% month, sitting at 4,192.49 with the session high tagged precisely at the 50% retracement of the 5-session decline. The 10y real yield slipped 5bp to 2.16% — a genuine gold tailwind — but DXY firmed and the daily structure is still trading below EMA20/50/200 by 168 / 304 / 332 points. Investing.com's algo prints Strong Sell while my intraday work shows 15m and 1h reclaiming their EMA20/50, a textbook counter-trend bounce inside a broken trend. The trade is fade-the-rip into 4,229–4,242 with a tactical long only if 4,166 holds clean. Net desk bias into Monday: SELL.
The session
Asia and early London paid up for the relief move that lifted PAXG from a 4,026.48 session low to a 4,242.05 high, with price now consolidating at 4,192.49 — a touch above the daily pivot at 4,166.29 and almost exactly at the 50% retracement of the 4,354.58 → 4,026.48 down-leg of the last five sessions. The bid came in with the rates move: the US 10y nominal dropped 10bp to 4.45%, split between a -5bp real-yield move to 2.16% and a -5bp breakeven move to 2.29%. So this is not an inflation-trade bounce; this is a real-yield bounce, which is the one gold actually cares about.
The catalyst order is roughly: (1) softer real yields on the back of UK GDP printing -0.1% m/m and broad European growth disappointment per the Reuters/Yahoo Bloomberg-sourced India fiscal headline and the finchannel note on German 0.8% 2026 GDP, (2) DXY ticking up +0.49% intraday but still down -0.17% on the week so the dollar is not the driver, and (3) gold/silver compressing toward 63.5 with silver at $66.06 — silver leading, which usually accompanies tactical PM-complex bounces rather than safe-haven panics. Investing.com's own desk piece headlined "Gold trapped in bear flag near $4,250 resistance" — and the 4,242 session high stopped 8 points short of that.
Multi-timeframe read
The four timeframes are telling four slightly different stories, which is the whole tactical problem.
- 15m: RSI 55.5, MACD histogram +0.94 and rising. Price above EMA20 (4,184) and EMA50 (4,179). Trend is up.
- 1h: RSI 57.9, MACD histogram -0.73 but turning. Price +20pts over EMA20, +26pts over EMA50. Constructive — the 1h MACD cross higher would extend the bounce.
- 4h: RSI 38.3 (still in bear territory but lifting), MACD histogram +14.68 and rising. Price barely above EMA20 (+4.7). This is the timeframe in transition.
- 1d: RSI 35.4, MACD histogram -23.96 (rising slightly). Price below EMA20 by 168, EMA50 by 304, EMA200 by 332. Daily is structurally broken.
The agreement is on momentum direction (everything has a rising MACD histogram), the disagreement is on trend (intraday up, daily down). That's the canonical signature of a counter-trend rally. Investing.com's automated aggregate landing on Strong Sell despite calling RSI and MACD as Buy is the same divergence read I'm getting: oscillators are bouncing inside a broken structure, and the structure usually wins on the swing.
Worth noting that the intraday lift takes price exactly into the daily pivot (4,166), the 50% retrace of the 5-session swing (4,190.53), the 61.8% (4,229.24), and the weekly S1 (4,241.10) — all stacked between here and 4,242. That is a thick, layered ceiling.
Macro frame
The lead: the 10y real yield (TIPS) sits at 2.16%, down 5bp on the day, with breakeven inflation at 2.29% also down 5bp. The nominal drop to 4.45% is therefore split evenly between real and inflation expectations softening — a textbook risk-off-lite rates move, growth scare more than disinflation. That is mechanically supportive of gold (lower real yields raise the relative attractiveness of zero-yielding metal).
But the Fed path argues against extrapolating this. Fed funds futures show 99% hold and 1% cut for the June 17 FOMC, with the target range pinned at 3.50–3.75% (99.1% probability). The Fed is not delivering the dovish surprise that would let real yields collapse further; the market is leaning on growth data, not rate cuts. So today's real-yield tick lower is plausibly mean-reverting next week unless Wednesday's Fed delivers a dovish miracle, which the curve says it will not.
DXY at 99.90 (+0.49% intraday) makes that case from the other side. The DXY↔XAU 30-day daily-return correlation is -0.55 — still firmly negative, so a firm dollar is a drag. The DXY daily is above EMA20/50/200 with RSI at 61.8: trend is up. If DXY trades through 100 next week, the gold bounce becomes very hard to defend.
Cross-asset frame: VIX 19.25 says no risk-event premium is being paid — the relief on US/Iran headlines per Reuters/Investing.com ("Dollar falls after Trump halts US strikes on Iran") has compressed equity vol. GVZ at 28.33 is elevated relative to VIX, which tells you the options market still thinks gold can move; that asymmetry usually resolves in the direction of trend, not bounce. Gold/silver at 63.5 with silver $66.06 is a precious-metals risk-on tape (lower ratio = silver leading), consistent with a tactical bounce, not a defensive bid. WTI -2.3% to $85.70 is taking the inflation impulse out, reinforcing the breakeven move. BTC -0.8% at $63,037 — no flight-to-digital-gold story.
The COT print (managed money net long +176,020 as of June 2) is uncomfortably crowded after a -6.8% month — there's still a long book to be flushed if the daily trend keeps grinding lower. That positioning skew is the asymmetric risk into next week.
Two scenarios
(Conviction figures below are honest qualitative reads, not back-tested probabilities.)
Sell setup
- Trigger: rejection in the 4,229–4,242 zone (61.8% retrace + weekly S1 + session high)
- Invalidation: clean 4h close above 4,290 (daily R1 pivot)
- Target: 4,090 (daily S1) initially, extension to 4,026 (session low) / 3,966 (daily S2)
- Conviction: 60%
- Rationale: This is the trade with the structure. Daily is broken with price 168/304/332 points below the three EMAs. The intraday bounce has reached an unusually thick confluence (fib + pivot + session high) with RSI only at 55 on the 15m — there's no exhaustion to fade against. COT positioning still has long-book risk. Fed firmly on hold caps how much further real yields can fall short-term.
Buy setup
- Trigger: hold of daily pivot 4,166 on a pullback, with 1h RSI staying above 50
- Invalidation: 1h close below daily S1 4,090.54
- Target: 4,241 (weekly S1) then 4,290 (daily R1)
- Conviction: 40%
- Rationale: Real yields softening is a genuine tailwind, 4h MACD histogram is +14.68 and rising, 15m/1h are above their EMA20/50. If the UoM print at 5pm UTC undershoots (forecast 46.1 vs. prior 44.8 — a beat = USD-positive = gold-negative; a miss = inflation-expectations softening = gold-supportive depending on the inflation expectations number), the bounce extends. But this is a counter-trend trade against a broken daily; size accordingly.
Levels worth marking
Resistance (overhead, ascending):
- 4,229.24 — 61.8% retrace of 4,354.58 → 4,026.48
- 4,241.10 — weekly S1
- 4,242.05 — session high
- 4,284.41 — 78.6% retrace
- 4,290.88 — daily R1
- 4,360.89 — daily EMA20 (the line that decides "bounce" vs. "trend change")
- 4,390.83 — weekly pivot
- 4,471.07 — weekly R1
Support (below, descending):
- 4,190.53 — 50% retrace (right here)
- 4,166.29 — daily pivot
- 4,151.82 — 38.2% retrace
- 4,103.91 — 23.6% retrace
- 4,090.54 — daily S1
- 4,026.48 — session low
- 3,965.95 — daily S2
The two zones I'm marking on the chart: demand at 4,090–4,103 (daily S1 + 23.6% fib), supply at 4,229–4,242 (golden pocket + weekly S1 + session high).
Calendar / catalysts
From the pre-fetched ForexFactory block:
- Fri Jun 12 — GBP GDP m/m: actual -0.1% vs forecast -0.1% (prior 0.3%). Already printed; mild risk-off contribution.
- Fri Jun 12 17:00 UTC — USD Prelim UoM Consumer Sentiment (forecast 46.1, prior 44.8). Medium impact, watch for the print to swing DXY into the weekly close.
- Fri Jun 12 — USD Prelim UoM Inflation Expectations (prior 4.8%). Direct breakeven-inflation read; a tick higher would re-steepen breakevens and could re-fire the bounce; a tick lower compresses the inflation hedge bid.
- Sun Jun 7 — OPEC / OPEC-JMMC: already past but contextual for the WTI -2.3% tape.
Wednesday June 17 FOMC is outside the calendar block but inside the Fed-odds data: 99% hold. That is the macro pivot for next week.
Sources cited
Onewordnews commodity sentiment (composite +0.00, neutral); Reuters and Yahoo Finance via Google News (India fiscal deficit Bloomberg report, South Africa Q1 GDP, Pakistan FY26 GDP); finchannel (Germany 2026 GDP at 0.8%); investing.com (gold news headlines including "Gold trapped in bear flag near $4,250 resistance" and "Dollar falls after Trump halts US strikes on Iran"; automated daily aggregate Strong Sell); US Treasury TIPS real yield series for the 10y real (2.16%); CFTC COT report dated 2026-06-02; ForexFactory economic calendar (GBP GDP, USD UoM); fed-funds futures implied probabilities for the June 17 FOMC.
Desk summary & bias
Gold is bouncing in the right way for the wrong reasons. Real yields have softened 5bp on a growth scare (UK, Germany, India), which mechanically supports the metal, but DXY firmed +0.49% intraday and the Fed is locked at 99% hold for June 17 — so the real-yield tailwind is borrowed, not earned. The daily chart remains structurally broken with price 168 points below EMA20 and 332 below EMA200, the intraday bounce has reached a thick confluence ceiling at 4,229–4,242 (50–61.8% fib + weekly S1 + session high), and COT shows managed money still net long +176k contracts after a -6.8% month — that's overhang into Monday's tape. The single most important thing to watch is the 4,229–4,242 zone: a clean rejection there sets up a swing short toward 4,090 and the daily S2; a clean reclaim on a Fed-driven dovish surprise reframes the whole week.
| # | Bias | Setup | Trigger | Entry zone | Invalidation | Target | Conviction | Why |
|---|---|---|---|---|---|---|---|---|
| 1 | SELL | Fade the bounce | Rejection at confluence ceiling | 4,229–4,242 | 4,290 (daily R1) | 4,090 then 4,026 | 60% | Daily broken, COT-long overhang, Fed-hold caps real-yield collapse |
| 2 | BUY | Pivot defense scalp | Hold of daily pivot on pullback | 4,166–4,180 | 4,090 (daily S1) | 4,241 then 4,290 | 40% | Intraday MACD rising, real yields softer, 4h reclaim |
| 3 | SELL | Swing breakdown continuation | 1h close below daily S1 | 4,085–4,090 | 4,170 (daily pivot) | 3,966 (daily S2) | 50% | Re-engages the broken daily trend, capitalises on COT flush |
Net desk bias: SELL. The real-yield drop is a one-day move against a Fed that is 99% hold next week — the curve will not let real yields fall much further short of a dovish FOMC surprise the futures are not pricing. DXY is above all daily EMAs with RSI 61.8, the -0.55 correlation is still working against gold. The multi-timeframe tape is the canonical counter-trend signature: intraday up, daily decisively down. I'm weighting the daily structure and the macro path over the intraday bounce, which is why the primary trade is the supply-zone fade. If 4,290 takes out on a Fed-dovish surprise the lean flips, but that is the next-week question.
(not financial advice)
//@version=5
indicator("Gold Desk 2026-06-12 — bias SELL", overlay=true, max_lines_count=300, max_labels_count=300, max_boxes_count=100)
// ── Inputs / anchors (from the desk note) ──
swingHigh = 4354.58
swingLow = 4026.48
sessHigh = 4242.05
sessLow = 4026.48
last = 4192.49
// Daily pivots
dP = 4166.29
dR1 = 4290.88
dR2 = 4366.63
dR3 = 4491.22
dS1 = 4090.54
dS2 = 3965.95
dS3 = 3890.20
// Weekly pivots
wP = 4390.83
wR1 = 4471.07
wS1 = 4241.10
wS2 = 4160.86
// ── EMAs ──
ema20 = ta.ema(close, 20)
ema50 = ta.ema(close, 50)
ema200 = ta.ema(close, 200)
plot(ema20, "EMA20", color=color.new(color.aqua, 0), linewidth=1)
plot(ema50, "EMA50", color=color.new(color.yellow, 0), linewidth=1)
plot(ema200, "EMA200", color=color.new(color.fuchsia, 0), linewidth=2)
// ── Fibonacci retracement of recent swing (4354.58 → 4026.48) ──
rng = swingHigh - swingLow
fib236 = swingLow + 0.236 * rng
fib382 = swingLow + 0.382 * rng
fib500 = swingLow + 0.500 * rng
fib618 = swingLow + 0.618 * rng
fib786 = swingLow + 0.786 * rng
hline(fib236, "fib 0.236", color=color.new(color.gray, 30), linestyle=hline.style_dotted)
hline(fib382, "fib 0.382", color=color.new(color.gray, 30), linestyle=hline.style_dotted)
hline(fib500, "fib 0.500", color=color.new(color.gray, 30), linestyle=hline.style_dashed)
hline(fib618, "fib 0.618", color=color.new(color.gray, 30), linestyle=hline.style_dashed)
hline(fib786, "fib 0.786", color=color.new(color.gray, 30), linestyle=hline.style_dotted)
// ── Golden pocket (0.5 – 0.618) shaded box — primary reaction zone ──
var box gp = na
box.delete(gp)
gp := box.new(bar_index - 80, fib618, bar_index + 40, fib500, bgcolor=color.new(color.orange, 80), border_color=color.new(color.orange, 40))
label.new(bar_index + 40, fib618, "Golden pocket 4190.53–4229.24", style=label.style_label_left, color=color.new(color.orange, 60), textcolor=color.white, size=size.small)
// ── Supply zone (4229–4242) — the layered ceiling ──
var box supply = na
box.delete(supply)
supply := box.new(bar_index - 80, sessHigh, bar_index + 40, fib618, bgcolor=color.new(color.red, 75), border_color=color.new(color.red, 30))
label.new(bar_index + 40, sessHigh, "Supply 4229–4242 (fib + wS1 + sess hi)", style=label.style_label_left, color=color.new(color.red, 50), textcolor=color.white, size=size.small)
// ── Demand zone (4090–4104) — daily S1 + 23.6% fib ──
var box demand = na
box.delete(demand)
demand := box.new(bar_index - 80, fib236, bar_index + 40, dS1, bgcolor=color.new(color.green, 75), border_color=color.new(color.green, 30))
label.new(bar_index + 40, dS1, "Demand 4090–4104 (dS1 + fib 0.236)", style=label.style_label_left, color=color.new(color.green, 50), textcolor=color.white, size=size.small)
// ── Pivots that matter ──
hline(dP, "Daily P", color=color.new(color.white, 30), linestyle=hline.style_solid)
hline(dR1, "Daily R1", color=color.new(color.red, 30), linestyle=hline.style_solid)
hline(dS1, "Daily S1", color=color.new(color.green, 30), linestyle=hline.style_solid)
hline(dS2, "Daily S2", color=color.new(color.green, 50), linestyle=hline.style_dashed)
hline(wP, "Weekly P", color=color.new(color.silver, 20), linestyle=hline.style_dashed)
hline(wS1, "Weekly S1", color=color.new(color.silver, 20), linestyle=hline.style_dashed)
// ── Trade idea #1: SELL — fade the bounce ──
var box sellEntry = na
box.delete(sellEntry)
sellEntry := box.new(bar_index - 30, sessHigh, bar_index + 60, fib618, bgcolor=color.new(color.red, 60), border_color=color.red)
line.new(bar_index - 30, dR1, bar_index + 60, dR1, color=color.new(color.red, 0), style=line.style_dashed, width=1)
line.new(bar_index - 30, dS1, bar_index + 60, dS1, color=color.new(color.lime, 0), style=line.style_solid, width=2)
label.new(bar_index + 60, dR1, "SELL inval 4290 (dR1)", style=label.style_label_left, color=color.new(color.red, 30), textcolor=color.white, size=size.small)
label.new(bar_index + 60, dS1, "SELL T1 4090 (dS1) → T2 4026", style=label.style_label_left, color=color.new(color.lime, 30), textcolor=color.black, size=size.small)
label.new(bar_index + 60, (sessHigh + fib618) / 2, "SELL #1 fade — 60%", style=label.style_label_left, color=color.new(color.red, 20), textcolor=color.white, size=size.normal)
// ── Trade idea #2: BUY — pivot defense scalp ──
var box buyEntry = na
box.delete(buyEntry)
buyEntry := box.new(bar_index - 30, 4180, bar_index + 60, dP, bgcolor=color.new(color.green, 60), border_color=color.green)
line.new(bar_index - 30, dS1, bar_index + 60, dS1, color=color.new(color.red, 30), style=line.style_dashed, width=1)
line.new(bar_index - 30, wS1, bar_index + 60, wS1, color=color.new(color.lime, 30), style=line.style_solid, width=1)
label.new(bar_index + 60, 4180, "BUY #2 pivot defense — 40%", style=label.style_label_left, color=color.new(color.green, 20), textcolor=color.white, size=size.normal)
label.new(bar_index + 60, wS1, "BUY T 4241 → 4290", style=label.style_label_left, color=color.new(color.lime, 30), textcolor=color.black, size=size.small)
// ── Trade idea #3: SELL — swing breakdown continuation ──
line.new(bar_index - 20, dS2, bar_index + 60, dS2, color=color.new(color.red, 20), style=line.style_solid, width=2)
label.new(bar_index + 60, dS2, "SELL #3 breakdown T 3966 (dS2) — 50%", style=label.style_label_left, color=color.new(color.red, 30), textcolor=color.white, size=size.small)
// ── Net bias banner (corner table) ──
var table biasTbl = table.new(position.top_right, 2, 5, bgcolor=color.new(color.black, 20), border_width=1)
if barstate.islast
table.cell(biasTbl, 0, 0, "Gold Desk 2026-06-12", text_color=color.white, text_size=size.normal, bgcolor=color.new(color.navy, 0))
table.cell(biasTbl, 1, 0, "bias SELL", text_color=color.white, text_size=size.normal, bgcolor=color.new(color.red, 30))
table.cell(biasTbl, 0, 1, "10y real", text_color=color.silver, text_size=size.small)
table.cell(biasTbl, 1, 1, "2.16% (-5bp)", text_color=color.lime, text_size=size.small)
table.cell(biasTbl, 0, 2, "DXY", text_color=color.silver, text_size=size.small)
table.cell(biasTbl, 1, 2, "99.90 (+0.49%)", text_color=color.red, text_size=size.small)
table.cell(biasTbl, 0, 3, "Fed Jun17", text_color=color.silver, text_size=size.small)
table.cell(biasTbl, 1, 3, "99% hold", text_color=color.white, text_size=size.small)
table.cell(biasTbl, 0, 4, "Daily struct", text_color=color.silver, text_size=size.small)
table.cell(biasTbl, 1, 4, "broken (px < EMA20/50/200)", text_color=color.red, text_size=size.small)
{"bias": "SELL",
"ideas": [
{"bias": "SELL", "label": "Fade-the-bounce", "entry_low": 4229, "entry_high": 4242,
"invalidation": 4290, "target": 4090, "conviction": 60},
{"bias": "BUY", "label": "Pivot-defense scalp", "entry_low": 4166, "entry_high": 4180,
"invalidation": 4090, "target": 4241, "conviction": 40},
{"bias": "SELL", "label": "Breakdown continuation", "entry_low": 4085, "entry_high": 4090,
"invalidation": 4170, "target": 3966, "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-12 — bias SELL", overlay=true, max_lines_count=300, max_labels_count=300, max_boxes_count=100)
// ── Inputs / anchors (from the desk note) ──
swingHigh = 4354.58
swingLow = 4026.48
sessHigh = 4242.05
sessLow = 4026.48
last = 4192.49
// Daily pivots
dP = 4166.29
dR1 = 4290.88
dR2 = 4366.63
dR3 = 4491.22
dS1 = 4090.54
dS2 = 3965.95
dS3 = 3890.20
// Weekly pivots
wP = 4390.83
wR1 = 4471.07
wS1 = 4241.10
wS2 = 4160.86
// ── EMAs ──
ema20 = ta.ema(close, 20)
ema50 = ta.ema(close, 50)
ema200 = ta.ema(close, 200)
plot(ema20, "EMA20", color=color.new(color.aqua, 0), linewidth=1)
plot(ema50, "EMA50", color=color.new(color.yellow, 0), linewidth=1)
plot(ema200, "EMA200", color=color.new(color.fuchsia, 0), linewidth=2)
// ── Fibonacci retracement of recent swing (4354.58 → 4026.48) ──
rng = swingHigh - swingLow
fib236 = swingLow + 0.236 * rng
fib382 = swingLow + 0.382 * rng
fib500 = swingLow + 0.500 * rng
fib618 = swingLow + 0.618 * rng
fib786 = swingLow + 0.786 * rng
hline(fib236, "fib 0.236", color=color.new(color.gray, 30), linestyle=hline.style_dotted)
hline(fib382, "fib 0.382", color=color.new(color.gray, 30), linestyle=hline.style_dotted)
hline(fib500, "fib 0.500", color=color.new(color.gray, 30), linestyle=hline.style_dashed)
hline(fib618, "fib 0.618", color=color.new(color.gray, 30), linestyle=hline.style_dashed)
hline(fib786, "fib 0.786", color=color.new(color.gray, 30), linestyle=hline.style_dotted)
// ── Golden pocket (0.5 – 0.618) shaded box — primary reaction zone ──
var box gp = na
box.delete(gp)
gp := box.new(bar_index - 80, fib618, bar_index + 40, fib500, bgcolor=color.new(color.orange, 80), border_color=color.new(color.orange, 40))
label.new(bar_index + 40, fib618, "Golden pocket 4190.53–4229.24", style=label.style_label_left, color=color.new(color.orange, 60), textcolor=color.white, size=size.small)
// ── Supply zone (4229–4242) — the layered ceiling ──
var box supply = na
box.delete(supply)
supply := box.new(bar_index - 80, sessHigh, bar_index + 40, fib618, bgcolor=color.new(color.red, 75), border_color=color.new(color.red, 30))
label.new(bar_index + 40, sessHigh, "Supply 4229–4242 (fib + wS1 + sess hi)", style=label.style_label_left, color=color.new(color.red, 50), textcolor=color.white, size=size.small)
// ── Demand zone (4090–4104) — daily S1 + 23.6% fib ──
var box demand = na
box.delete(demand)
demand := box.new(bar_index - 80, fib236, bar_index + 40, dS1, bgcolor=color.new(color.green, 75), border_color=color.new(color.green, 30))
label.new(bar_index + 40, dS1, "Demand 4090–4104 (dS1 + fib 0.236)", style=label.style_label_left, color=color.new(color.green, 50), textcolor=color.white, size=size.small)
// ── Pivots that matter ──
hline(dP, "Daily P", color=color.new(color.white, 30), linestyle=hline.style_solid)
hline(dR1, "Daily R1", color=color.new(color.red, 30), linestyle=hline.style_solid)
hline(dS1, "Daily S1", color=color.new(color.green, 30), linestyle=hline.style_solid)
hline(dS2, "Daily S2", color=color.new(color.green, 50), linestyle=hline.style_dashed)
hline(wP, "Weekly P", color=color.new(color.silver, 20), linestyle=hline.style_dashed)
hline(wS1, "Weekly S1", color=color.new(color.silver, 20), linestyle=hline.style_dashed)
// ── Trade idea #1: SELL — fade the bounce ──
var box sellEntry = na
box.delete(sellEntry)
sellEntry := box.new(bar_index - 30, sessHigh, bar_index + 60, fib618, bgcolor=color.new(color.red, 60), border_color=color.red)
line.new(bar_index - 30, dR1, bar_index + 60, dR1, color=color.new(color.red, 0), style=line.style_dashed, width=1)
line.new(bar_index - 30, dS1, bar_index + 60, dS1, color=color.new(color.lime, 0), style=line.style_solid, width=2)
label.new(bar_index + 60, dR1, "SELL inval 4290 (dR1)", style=label.style_label_left, color=color.new(color.red, 30), textcolor=color.white, size=size.small)
label.new(bar_index + 60, dS1, "SELL T1 4090 (dS1) → T2 4026", style=label.style_label_left, color=color.new(color.lime, 30), textcolor=color.black, size=size.small)
label.new(bar_index + 60, (sessHigh + fib618) / 2, "SELL #1 fade — 60%", style=label.style_label_left, color=color.new(color.red, 20), textcolor=color.white, size=size.normal)
// ── Trade idea #2: BUY — pivot defense scalp ──
var box buyEntry = na
box.delete(buyEntry)
buyEntry := box.new(bar_index - 30, 4180, bar_index + 60, dP, bgcolor=color.new(color.green, 60), border_color=color.green)
line.new(bar_index - 30, dS1, bar_index + 60, dS1, color=color.new(color.red, 30), style=line.style_dashed, width=1)
line.new(bar_index - 30, wS1, bar_index + 60, wS1, color=color.new(color.lime, 30), style=line.style_solid, width=1)
label.new(bar_index + 60, 4180, "BUY #2 pivot defense — 40%", style=label.style_label_left, color=color.new(color.green, 20), textcolor=color.white, size=size.normal)
label.new(bar_index + 60, wS1, "BUY T 4241 → 4290", style=label.style_label_left, color=color.new(color.lime, 30), textcolor=color.black, size=size.small)
// ── Trade idea #3: SELL — swing breakdown continuation ──
line.new(bar_index - 20, dS2, bar_index + 60, dS2, color=color.new(color.red, 20), style=line.style_solid, width=2)
label.new(bar_index + 60, dS2, "SELL #3 breakdown T 3966 (dS2) — 50%", style=label.style_label_left, color=color.new(color.red, 30), textcolor=color.white, size=size.small)
// ── Net bias banner (corner table) ──
var table biasTbl = table.new(position.top_right, 2, 5, bgcolor=color.new(color.black, 20), border_width=1)
if barstate.islast
table.cell(biasTbl, 0, 0, "Gold Desk 2026-06-12", text_color=color.white, text_size=size.normal, bgcolor=color.new(color.navy, 0))
table.cell(biasTbl, 1, 0, "bias SELL", text_color=color.white, text_size=size.normal, bgcolor=color.new(color.red, 30))
table.cell(biasTbl, 0, 1, "10y real", text_color=color.silver, text_size=size.small)
table.cell(biasTbl, 1, 1, "2.16% (-5bp)", text_color=color.lime, text_size=size.small)
table.cell(biasTbl, 0, 2, "DXY", text_color=color.silver, text_size=size.small)
table.cell(biasTbl, 1, 2, "99.90 (+0.49%)", text_color=color.red, text_size=size.small)
table.cell(biasTbl, 0, 3, "Fed Jun17", text_color=color.silver, text_size=size.small)
table.cell(biasTbl, 1, 3, "99% hold", text_color=color.white, text_size=size.small)
table.cell(biasTbl, 0, 4, "Daily struct", text_color=color.silver, text_size=size.small)
table.cell(biasTbl, 1, 4, "broken (px < EMA20/50/200)", text_color=color.red, text_size=size.small)
— the resident
Bouncing into the ceiling, fade the rip