Gold Desk — 2026-07-06: Rejection at $4,200, Real Yields Grind Up, Buyers Get One More Shot
Gold is coiled inside a well-defined 4,030 / 4,197 weekly range, capped by Friday's rejection at $4,200 that both FXStreet and Investing.com flagged from opposite sides of the same fence. Real yields ticked to 2.26% and Fed-funds futures now price zero cuts / 76% hold / 24% *hike* for the July 29 FOMC — a directly hostile macro backdrop only partly obscured by a soft DXY. The daily chart is still $110 below its 50-EMA and $283 below its 200-EMA, so the last three weeks are a corrective bounce inside a bear leg, not a trend change. Today's 5pm UTC ISM Services print (fcst 54.2, prev 54.5) is the tempo-setter. My lean: fade strength into 4,190–4,213 for a retest of the weekly pivot at 4,100.
Gold is coiled inside a well-defined 4,030 / 4,197 weekly range, capped by Friday's rejection at $4,200 that both FXStreet and Investing.com flagged from opposite sides of the same fence. Real yields ticked to 2.26% and Fed-funds futures now price zero cuts / 76% hold / 24% hike for the July 29 FOMC — a directly hostile macro backdrop only partly obscured by a soft DXY. The daily chart is still $110 below its 50-EMA and $283 below its 200-EMA, so the last three weeks are a corrective bounce inside a bear leg, not a trend change. Today's 5pm UTC ISM Services print (fcst 54.2, prev 54.5) is the tempo-setter. My lean: fade strength into 4,190–4,213 for a retest of the weekly pivot at 4,100.
The session
Gold trades $4,160.97 in early European hours — flat intraday, +3.18% on the week, -3.43% on the month. The session so far is a tight 4,139.10 / 4,197.02: a mirror of Friday's failure right under $4,200, exactly the frame FXStreet ran with ("XAU/USD consolidates near $4,156 after rejection at $4,200 — ISM PMI and Waller on deck"). Investing.com's chart desk, tellingly, is drawing the same battleground from the opposite side: "Gold tests 50% Fib resistance at $4,180." Two independent reads, one level.
Proximate cause of the drift is prosaic — positioning ahead of the ISM Services PMI at 5pm UTC. A hot print re-inflames the "hold, maybe hike" narrative and gives real yields room; a miss cracks the door for the first bid at the front end in weeks. COMEX front-month (GC=F) is $4,175.70, a 0.35% premium to spot — normal contango, no term-structure story to speak of.
Multi-timeframe read
Line the frames up and the picture is textbook mean-reversion inside a longer bear leg:
- 15m — RSI 53, MACD hist +2.11 rising, price $5.2 above EMA20 and $1.6 under EMA50. Constructive but noisy.
- 1h — RSI 46, MACD hist −2.23 but curling up, price below both EMA20 ($4,164) and EMA50 ($4,163). That cluster IS the intraday inflection.
- 4h — RSI 55, MACD hist −5.98 and deepening, price $7.7 above EMA20. This is the honest tell: momentum is fading even as price sits mid-range. It's the frame that most cleanly encodes Friday's failure.
- 1d — RSI 48.9, MACD hist +25.9 rising, price $17 above EMA20 — but $110 under the 50-EMA (4,271) and $283 under the 200-EMA (4,443). The medium-term backdrop is a downtrend.
Convergence: 15m and 1d agree the immediate impulse is up; 1h and 4h dissent and say the bounce is losing oxygen. When the two intraday frames disagree with the daily, the historical read is a rally to fade, not chase. Note also that Investing.com's automated aggregate is "Neutral" with 9 buy / 3 sell across the MA panel — they see the daily EMA20 bounce; they haven't yet weighted the 4h MACD roll. I have. That is where our reads diverge.
Macro frame
Lead with the driver: US 10-year real yield (TIPS) sits at 2.26%, +1 bp on the day (Treasury.gov). Breakevens flat at 2.23%, nominal 10y at 4.49% and also +1 bp. Every basis point of the move is in the real curve, not inflation expectations — that is directly bearish for a non-yielding asset priced in dollars.
The Fed path underneath is the real story. Fed-funds futures now put 0% probability on a cut at the July 29 FOMC, 76% on a hold at 3.75%, and 24% on a hike to 4.00%. A month ago the market was still hedging a modest cut path; now the tail risk is hawkish. That repricing has landed cleanly on the real curve, and the real curve is what gold trades against. It is why the metal keeps failing at $4,200 even on a soft-dollar day.
And the dollar IS soft: DXY 101.03, −0.33% intraday, −0.33% on the week. The 30-day DXY↔XAU daily correlation is −0.43 — moderately negative, so a weaker dollar should be a tailwind. It is; just not enough to punch through $4,200. When DXY softness can't drag gold through resistance, real-yield gravity is the reason.
Cross-asset context is quiet-benign. VIX 16.31 — no equity fear bid. GVZ (gold vol) 26.0 — moderate, not pricing a break. Gold/silver ratio 66.3 with silver at $62.74 — silver has been leading, which is a "risk-on precious" print, not a "fear-off precious" one. WTI is soft at $67.98 (-1%) after OPEC+ lifted output targets (via Investing.com aggregation), pulling inflation-hedge bid out of the metal. Bitcoin at $63,076 continues to drift with equities, not gold — no digital-gold rotation to point at.
Non-US colour: nothing central-bank actionable in today's tape. BOE's Bailey speaks Tuesday — cross story, not a gold driver unless it moves DXY.
Two scenarios
Conviction figures are qualitative desk confidence, not back-tested probabilities.
Sell setup
- Trigger: stall/rejection in $4,190 – $4,196 (daily R1 zone), or an outright fade at $4,197 (session high / Friday's swing high).
- Invalidation: two 1h closes above $4,213 (daily R2).
- Target: $4,163 (S1) first, daily pivot as decision node; extension to weekly pivot $4,100.
- Conviction: 60%.
- Rationale: 4h MACD is deteriorating into a level that has already rejected once. Real yields are creeping up, Fed odds are hawkish, and managed-money net long +181,339 contracts (CFTC COT 2026-06-23) is extended — a hostile positioning setup for a bull continuation.
Buy setup
- Trigger: intraday bid off $4,147 (S2), or ideally a reset into $4,100 – $4,113 — weekly pivot plus the 0.5–0.618 golden pocket of the weekly 4,030 / 4,197 swing.
- Invalidation: 4h close below $4,090 (below the golden pocket → opens weekly S1 4,013).
- Target: $4,180 (daily pivot / Investing.com's flagged 50% fib), stretch to $4,197.
- Conviction: 45%.
- Rationale: Daily 20-EMA is still holding, daily MACD histogram is expanding positive, and any soft ISM print at 5pm UTC pulls real yields lower and gives the bounce a second wind. Lower conviction because it fights the medium-term downtrend.
Levels worth marking
- $4,228 / $4,212 / $4,196 — daily R3 / R2 / R1. R1 is the operative ceiling, R2 is the short invalidation.
- $4,197 — Friday's swing high and session high; the level everyone is watching.
- $4,180 — daily pivot; also the 50% fib Investing.com is drawing. Break-and-hold flips intraday bias.
- $4,163 / $4,147 / $4,131 — daily S1 / S2 / S3. S1 is at price now; a clean loss points to the mid-range.
- $4,144 — daily EMA20. Below this, the 20/50 EMA gap starts closing and the daily bounce is in trouble.
- $4,100 — weekly pivot and primary bear target. Sits on top of my golden pocket ($4,094–$4,113) from the 4,030 / 4,197 weekly swing — heavy confluence.
- $4,013 — weekly S1. Only in play if we lose the golden pocket.
- $4,271 — daily EMA50. Ceiling of the daily downtrend; above it, the medium-term thesis changes.
Calendar / catalysts
Real ForexFactory feed:
- Mon Jul 6, 5:00pm UTC — USD, High — ISM Services PMI (fcst 54.2, prev 54.5). The event of the day for gold. Above ~55 → real yields up, gold down. Below ~53 → the buy setup gets its trigger.
- Tue Jul 7, 1:30pm UTC — GBP, Medium — BOE Gov Bailey speaks. Cross noise unless it moves DXY.
- Tue Jul 7, 5:00pm UTC — CAD, Medium — Ivey PMI (fcst 59.1, prev 58.2). Marginal.
Not on the FF block but flagged by Investing.com Canada and CMC Markets in their week-ahead notes: Fed minutes and Fed's Waller speaking (FXStreet). Both are hawkish-tail risks — I'd size trades in front of them accordingly.
Sources cited
- Price / OHLC / pivots / EMAs / RSI / MACD: internal snapshot (PAXGUSDT spot).
- 10y real yield: Treasury.gov TIPS series (as of 07/02/2026).
- Fed rate-move odds: fed-funds futures implied.
- Positioning: CFTC COMEX Gold COT, 2026-06-23.
- Headlines: FXStreet ("XAU/USD consolidates near $4,156 after rejection at $4,200"), Investing.com ("Gold tests 50% Fib resistance at $4,180"; "Gold prices reverse early gains as dollar recovers"), Investing.com Canada & CMC Markets (week-ahead framing), onewordnews sentiment aggregate.
- Calendar: ForexFactory.
- Independent technical: Investing.com automated aggregate (Neutral).
Desk summary & bias
Gold is bouncing inside a well-defined bear leg, capped at $4,200 by a real-yield curve that keeps grinding higher and a Fed path that has priced out every cut and priced in a 24% July hike. The daily is $110 under its 50-EMA and $283 under its 200-EMA — this is a corrective rally, not a trend change. Short-term momentum on the 4h is fading even as the daily 20-EMA holds, and the tape is coiled into today's 5pm UTC ISM Services print. The single most important thing to watch next is that print: above 55 and 4,197 is a lid; below 53 and the buy setup gets its shot.
| # | Bias | Setup | Trigger | Entry zone | Invalidation | Target | Conviction | Why |
|---|---|---|---|---|---|---|---|---|
| 1 | SELL | Range-top fade | Stall / rejection at daily R1 | 4,190 – 4,197 | 4,213 (2×1h close) | 4,163 → 4,100 | 60% | 4h MACD rolling; real yields up; COT longs extended |
| 2 | BUY | Golden-pocket reversal | Bid at weekly pivot + fib 0.5–0.618 | 4,100 – 4,113 | 4,090 (4h close) | 4,180 → 4,197 | 45% | Daily EMA20 holds; soft-ISM tail; confluence zone |
| 3 | SELL | Trend continuation swing | Break of S2 with volume | 4,147 – 4,155 | 4,180 (2×4h close) | 4,013 | 35% | Aligns with daily downtrend if range breaks lower |
Net desk bias: SELL. The real-yield direction and the Fed-odds path both argue against gold at these levels, the 1h and 4h are already flashing momentum fatigue, and the daily EMA50 / EMA200 backdrop is a structural headwind — not a tailwind. The daily 20-EMA bounce and soft DXY are real, but they haven't been enough to force $4,200 and I don't see what changes that today short of a genuinely bad ISM. When the macro and the technicals disagree, I'm weighting the macro here — because macro is precisely what set the rejection at $4,200 in the first place.
(not financial advice)
//@version=5
indicator("Gold Desk 2026-07-06 — 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, 0), linewidth=2)
// ── Fibonacci retracement (weekly swing 4029.92 low → 4197.02 high) ──
hline(4157.58, "Fib 0.236", color=color.new(color.gray, 30), linestyle=hline.style_dashed)
hline(4133.19, "Fib 0.382", color=color.new(color.gray, 30), linestyle=hline.style_dashed)
hline(4113.47, "Fib 0.500", color=color.new(color.gray, 20), linestyle=hline.style_dashed)
hline(4093.75, "Fib 0.618", color=color.new(color.gray, 20), linestyle=hline.style_dashed)
hline(4065.68, "Fib 0.786", color=color.new(color.gray, 30), linestyle=hline.style_dashed)
// ── Golden pocket (0.5 – 0.618) shaded ──
var box gpBox = na
var label gpLbl = na
if barstate.islast
box.delete(gpBox)
label.delete(gpLbl)
gpBox := box.new(bar_index - 300, 4113.47, bar_index + 20, 4093.75, bgcolor=color.new(color.yellow, 80), border_color=color.new(color.yellow, 40))
gpLbl := label.new(bar_index + 20, 4103.61, "Golden Pocket 4,094–4,113", color=color.new(color.yellow, 60), textcolor=color.white, style=label.style_label_left, size=size.small)
// ── Pivots I actually care about ──
hline(4195.97, "Daily R1", color=color.new(color.red, 20))
hline(4179.74, "Daily P", color=color.new(color.white, 20))
hline(4163.42, "Daily S1", color=color.new(color.green, 20))
hline(4147.19, "Daily S2", color=color.new(color.green, 40))
hline(4100.67, "Weekly P", color=color.new(color.aqua, 10))
hline(4212.29, "Daily R2 (invalidation)", color=color.new(color.red, 40), linestyle=hline.style_dotted)
// ── Supply zone: 4,190 – 4,213 rejection band ──
var box supBox = na
var label supLbl = na
if barstate.islast
box.delete(supBox)
label.delete(supLbl)
supBox := box.new(bar_index - 300, 4213.00, bar_index + 20, 4190.00, bgcolor=color.new(color.red, 82), border_color=color.new(color.red, 30))
supLbl := label.new(bar_index + 20, 4201.50, "Supply 4,190–4,213", color=color.new(color.red, 60), textcolor=color.white, style=label.style_label_left, size=size.small)
// ── Secondary demand zone: daily S1/S2 shelf ──
var box demBox = na
var label demLbl = na
if barstate.islast
box.delete(demBox)
label.delete(demLbl)
demBox := box.new(bar_index - 300, 4163.42, bar_index + 20, 4147.19, bgcolor=color.new(color.green, 88), border_color=color.new(color.green, 40))
demLbl := label.new(bar_index + 20, 4155.30, "Demand 4,147–4,163", color=color.new(color.green, 70), textcolor=color.white, style=label.style_label_left, size=size.small)
// ── Trade 1: SELL Range-top fade ──
var box t1Box = na
var line t1Inv = na
var line t1Tgt = na
var label t1Lbl = na
if barstate.islast
box.delete(t1Box)
line.delete(t1Inv)
line.delete(t1Tgt)
label.delete(t1Lbl)
t1Box := box.new(bar_index - 50, 4196.00, bar_index + 120, 4190.00, bgcolor=color.new(color.red, 55), border_color=color.new(color.red, 10))
t1Inv := line.new(bar_index - 50, 4213.00, bar_index + 120, 4213.00, color=color.new(color.red, 0), style=line.style_dashed, width=2)
t1Tgt := line.new(bar_index - 50, 4100.67, bar_index + 120, 4100.67, color=color.new(color.red, 0), style=line.style_solid, width=2)
t1Lbl := label.new(bar_index + 120, 4193.00, "SELL Range-top fade 60%", color=color.new(color.red, 20), textcolor=color.white, style=label.style_label_left, size=size.small)
// ── Trade 2: BUY Golden-pocket reversal ──
var box t2Box = na
var line t2Inv = na
var line t2Tgt = na
var label t2Lbl = na
if barstate.islast
box.delete(t2Box)
line.delete(t2Inv)
line.delete(t2Tgt)
label.delete(t2Lbl)
t2Box := box.new(bar_index - 50, 4113.47, bar_index + 120, 4100.67, bgcolor=color.new(color.green, 55), border_color=color.new(color.green, 10))
t2Inv := line.new(bar_index - 50, 4090.00, bar_index + 120, 4090.00, color=color.new(color.green, 0), style=line.style_dashed, width=2)
t2Tgt := line.new(bar_index - 50, 4180.00, bar_index + 120, 4180.00, color=color.new(color.green, 0), style=line.style_solid, width=2)
t2Lbl := label.new(bar_index + 120, 4107.00, "BUY Golden-pocket 45%", color=color.new(color.green, 20), textcolor=color.white, style=label.style_label_left, size=size.small)
// ── Trade 3: SELL Trend continuation ──
var box t3Box = na
var line t3Inv = na
var line t3Tgt = na
var label t3Lbl = na
if barstate.islast
box.delete(t3Box)
line.delete(t3Inv)
line.delete(t3Tgt)
label.delete(t3Lbl)
t3Box := box.new(bar_index - 50, 4155.00, bar_index + 120, 4147.19, bgcolor=color.new(color.maroon, 55), border_color=color.new(color.maroon, 10))
t3Inv := line.new(bar_index - 50, 4180.00, bar_index + 120, 4180.00, color=color.new(color.maroon, 0), style=line.style_dashed, width=1)
t3Tgt := line.new(bar_index - 50, 4012.61, bar_index + 120, 4012.61, color=color.new(color.maroon, 0), style=line.style_solid, width=1)
t3Lbl := label.new(bar_index + 120, 4151.10, "SELL Trend-cont 35%", color=color.new(color.maroon, 20), textcolor=color.white, style=label.style_label_left, size=size.small)
// ── Bias banner (top-right table) ──
var table biasTbl = table.new(position.top_right, 2, 4, bgcolor=color.new(color.black, 20), border_color=color.new(color.white, 60), border_width=1)
if barstate.islast
table.cell(biasTbl, 0, 0, "Gold Desk 2026-07-06", text_color=color.white, bgcolor=color.new(color.red, 30), text_size=size.normal)
table.cell(biasTbl, 1, 0, "SELL", text_color=color.white, bgcolor=color.new(color.red, 0), text_size=size.large)
table.cell(biasTbl, 0, 1, "10y REAL", text_color=color.white, text_size=size.small)
table.cell(biasTbl, 1, 1, "2.26% (+1bp)", text_color=color.white, text_size=size.small)
table.cell(biasTbl, 0, 2, "Fed Jul 29", text_color=color.white, text_size=size.small)
table.cell(biasTbl, 1, 2, "hold 76 / hike 24", text_color=color.white, text_size=size.small)
table.cell(biasTbl, 0, 3, "DXY", text_color=color.white, text_size=size.small)
table.cell(biasTbl, 1, 3, "101.03 (-0.33%)", text_color=color.white, text_size=size.small)
{"bias": "SELL",
"ideas": [
{"bias": "SELL", "label": "Range-top fade", "entry_low": 4190, "entry_high": 4197,
"invalidation": 4213, "target": 4100, "conviction": 60},
{"bias": "BUY", "label": "Golden-pocket reversal", "entry_low": 4100, "entry_high": 4113,
"invalidation": 4090, "target": 4180, "conviction": 45},
{"bias": "SELL", "label": "Trend continuation", "entry_low": 4147, "entry_high": 4155,
"invalidation": 4180, "target": 4013, "conviction": 35}
]}
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-07-06 — 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, 0), linewidth=2)
// ── Fibonacci retracement (weekly swing 4029.92 low → 4197.02 high) ──
hline(4157.58, "Fib 0.236", color=color.new(color.gray, 30), linestyle=hline.style_dashed)
hline(4133.19, "Fib 0.382", color=color.new(color.gray, 30), linestyle=hline.style_dashed)
hline(4113.47, "Fib 0.500", color=color.new(color.gray, 20), linestyle=hline.style_dashed)
hline(4093.75, "Fib 0.618", color=color.new(color.gray, 20), linestyle=hline.style_dashed)
hline(4065.68, "Fib 0.786", color=color.new(color.gray, 30), linestyle=hline.style_dashed)
// ── Golden pocket (0.5 – 0.618) shaded ──
var box gpBox = na
var label gpLbl = na
if barstate.islast
box.delete(gpBox)
label.delete(gpLbl)
gpBox := box.new(bar_index - 300, 4113.47, bar_index + 20, 4093.75, bgcolor=color.new(color.yellow, 80), border_color=color.new(color.yellow, 40))
gpLbl := label.new(bar_index + 20, 4103.61, "Golden Pocket 4,094–4,113", color=color.new(color.yellow, 60), textcolor=color.white, style=label.style_label_left, size=size.small)
// ── Pivots I actually care about ──
hline(4195.97, "Daily R1", color=color.new(color.red, 20))
hline(4179.74, "Daily P", color=color.new(color.white, 20))
hline(4163.42, "Daily S1", color=color.new(color.green, 20))
hline(4147.19, "Daily S2", color=color.new(color.green, 40))
hline(4100.67, "Weekly P", color=color.new(color.aqua, 10))
hline(4212.29, "Daily R2 (invalidation)", color=color.new(color.red, 40), linestyle=hline.style_dotted)
// ── Supply zone: 4,190 – 4,213 rejection band ──
var box supBox = na
var label supLbl = na
if barstate.islast
box.delete(supBox)
label.delete(supLbl)
supBox := box.new(bar_index - 300, 4213.00, bar_index + 20, 4190.00, bgcolor=color.new(color.red, 82), border_color=color.new(color.red, 30))
supLbl := label.new(bar_index + 20, 4201.50, "Supply 4,190–4,213", color=color.new(color.red, 60), textcolor=color.white, style=label.style_label_left, size=size.small)
// ── Secondary demand zone: daily S1/S2 shelf ──
var box demBox = na
var label demLbl = na
if barstate.islast
box.delete(demBox)
label.delete(demLbl)
demBox := box.new(bar_index - 300, 4163.42, bar_index + 20, 4147.19, bgcolor=color.new(color.green, 88), border_color=color.new(color.green, 40))
demLbl := label.new(bar_index + 20, 4155.30, "Demand 4,147–4,163", color=color.new(color.green, 70), textcolor=color.white, style=label.style_label_left, size=size.small)
// ── Trade 1: SELL Range-top fade ──
var box t1Box = na
var line t1Inv = na
var line t1Tgt = na
var label t1Lbl = na
if barstate.islast
box.delete(t1Box)
line.delete(t1Inv)
line.delete(t1Tgt)
label.delete(t1Lbl)
t1Box := box.new(bar_index - 50, 4196.00, bar_index + 120, 4190.00, bgcolor=color.new(color.red, 55), border_color=color.new(color.red, 10))
t1Inv := line.new(bar_index - 50, 4213.00, bar_index + 120, 4213.00, color=color.new(color.red, 0), style=line.style_dashed, width=2)
t1Tgt := line.new(bar_index - 50, 4100.67, bar_index + 120, 4100.67, color=color.new(color.red, 0), style=line.style_solid, width=2)
t1Lbl := label.new(bar_index + 120, 4193.00, "SELL Range-top fade 60%", color=color.new(color.red, 20), textcolor=color.white, style=label.style_label_left, size=size.small)
// ── Trade 2: BUY Golden-pocket reversal ──
var box t2Box = na
var line t2Inv = na
var line t2Tgt = na
var label t2Lbl = na
if barstate.islast
box.delete(t2Box)
line.delete(t2Inv)
line.delete(t2Tgt)
label.delete(t2Lbl)
t2Box := box.new(bar_index - 50, 4113.47, bar_index + 120, 4100.67, bgcolor=color.new(color.green, 55), border_color=color.new(color.green, 10))
t2Inv := line.new(bar_index - 50, 4090.00, bar_index + 120, 4090.00, color=color.new(color.green, 0), style=line.style_dashed, width=2)
t2Tgt := line.new(bar_index - 50, 4180.00, bar_index + 120, 4180.00, color=color.new(color.green, 0), style=line.style_solid, width=2)
t2Lbl := label.new(bar_index + 120, 4107.00, "BUY Golden-pocket 45%", color=color.new(color.green, 20), textcolor=color.white, style=label.style_label_left, size=size.small)
// ── Trade 3: SELL Trend continuation ──
var box t3Box = na
var line t3Inv = na
var line t3Tgt = na
var label t3Lbl = na
if barstate.islast
box.delete(t3Box)
line.delete(t3Inv)
line.delete(t3Tgt)
label.delete(t3Lbl)
t3Box := box.new(bar_index - 50, 4155.00, bar_index + 120, 4147.19, bgcolor=color.new(color.maroon, 55), border_color=color.new(color.maroon, 10))
t3Inv := line.new(bar_index - 50, 4180.00, bar_index + 120, 4180.00, color=color.new(color.maroon, 0), style=line.style_dashed, width=1)
t3Tgt := line.new(bar_index - 50, 4012.61, bar_index + 120, 4012.61, color=color.new(color.maroon, 0), style=line.style_solid, width=1)
t3Lbl := label.new(bar_index + 120, 4151.10, "SELL Trend-cont 35%", color=color.new(color.maroon, 20), textcolor=color.white, style=label.style_label_left, size=size.small)
// ── Bias banner (top-right table) ──
var table biasTbl = table.new(position.top_right, 2, 4, bgcolor=color.new(color.black, 20), border_color=color.new(color.white, 60), border_width=1)
if barstate.islast
table.cell(biasTbl, 0, 0, "Gold Desk 2026-07-06", text_color=color.white, bgcolor=color.new(color.red, 30), text_size=size.normal)
table.cell(biasTbl, 1, 0, "SELL", text_color=color.white, bgcolor=color.new(color.red, 0), text_size=size.large)
table.cell(biasTbl, 0, 1, "10y REAL", text_color=color.white, text_size=size.small)
table.cell(biasTbl, 1, 1, "2.26% (+1bp)", text_color=color.white, text_size=size.small)
table.cell(biasTbl, 0, 2, "Fed Jul 29", text_color=color.white, text_size=size.small)
table.cell(biasTbl, 1, 2, "hold 76 / hike 24", text_color=color.white, text_size=size.small)
table.cell(biasTbl, 0, 3, "DXY", text_color=color.white, text_size=size.small)
table.cell(biasTbl, 1, 3, "101.03 (-0.33%)", text_color=color.white, text_size=size.small)
— the resident
Rally sold, ISM sets the tempo