Let's talk
gold July 29, 2026 · 14 min read

Gold Desk — 29 Jul 2026: Fed Night, Golden Pocket, and a Daily Chart That Refuses to Heal

Gold trades $4,039 into Wednesday's FOMC after a -1.1% session flush that took the tape from $4,098 down to $4,008 and back. The daily chart is still stacked bearish under a triple EMA wall (20/50/200 = 4,060 / 4,139 / 4,362), and investing.com's automated aggregate reads **Strong Sell** — but real yields quietly slipped 3bp on the day, giving bulls a whisper of macro support. The fight now sits inside a well-defined 4,069–4,091 "golden pocket" from last week's range, capped by daily R2 4,091 and floor'd by S1 3,998. Fed at 21:00 UTC (68% hold, 32% hike, 0% cut) is the only catalyst that matters — everything before it is positioning noise.


Gold trades $4,039 into Wednesday's FOMC after a -1.1% session flush that took the tape from $4,098 down to $4,008 and back. The daily chart is still stacked bearish under a triple EMA wall (20/50/200 = 4,060 / 4,139 / 4,362), and investing.com's automated aggregate reads Strong Sell — but real yields quietly slipped 3bp on the day, giving bulls a whisper of macro support. The fight now sits inside a well-defined 4,069–4,091 "golden pocket" from last week's range, capped by daily R2 4,091 and floor'd by S1 3,998. Fed at 21:00 UTC (68% hold, 32% hike, 0% cut) is the only catalyst that matters — everything before it is positioning noise.

The session

Spot printed a 90-handle range in the Asia/EU handover, high 4,098.29 into the London fix and low 4,008.23 shortly after. The move looks like classic pre-FOMC de-risking: no headline catalyst on the tape (kitco, dailyfx wires are mostly boilerplate), no CPI/NFP surprise, just a bid-into-fade around the daily pivot 4,032.90 that dragged price back to the middle of the last-five-session range 4,008–4,109. GC front-month sits $4,102.80 — a rich +1.56% basis to PAXG spot, which is above normal contango and hints at futures-side hedge/short-cover flow overnight rather than physical strength. Volatility is expensive: GVZ 24.13 is well above its comfortable 18–20 zone, i.e. the market is already paying up for a Fed move.

Multi-timeframe read

The lower timeframes look like a bounce off S1; the higher timeframes are still selling.

  • 15m — RSI 61.5, MACD hist positive and rolling. Price sits above EMA20 (4,033.77) and EMA50 (4,029.49). Micro-bull.
  • 1h — RSI 55.1, MACD hist +3.51 rising. Above EMA20 (4,031) but below EMA50 (4,040.96 by a hair). This is the pivot line for the intraday: reclaim 4,041 and bulls have room to R1 4,056; lose 4,031 and it's back to S1 3,998.
  • 4h — RSI 52.8, MACD histogram still negative but improving. Price below EMA20 (4,048.47). Compressed, base-building.
  • 1d — RSI 46.1, MACD hist +5.94 but declining. Price -20 vs EMA20, -99 vs EMA50, and a wide -322 vs EMA200. The trend is down, and the daily MACD peel-over says the recent bounce is losing thrust.

Where they agree: 4,050–4,090 is heavy overhead — 1h EMA50, daily EMA20, daily R1/R2, and the weekly pivot all live there. Where they diverge: the 15m/1h bull impulse is fighting the 4h/1d bear structure. That's a mean-reversion setup, not a trend one.

Macro frame

Lead line, because this is what actually moves gold: US 10y real yield (TIPS) 2.41%, -3bp on the day, with breakeven inflation -1bp to 2.20% and the nominal -4bp to 4.61%. Real yields softening is a mild gold tailwind — the only macro tailwind on the board — and it's why price hasn't yet cracked S1 despite a firm DXY.

Fed-funds futures for tonight: 68% hold, 32% hike, 0% cut, sitting on a 3.75% upper bound. That distribution is skewed hawkish for a "no-change" meeting — a 32% hike tail is unusually fat, and it's the reason GVZ is priced at 24. A hold + dovish dots would drop real yields further and rip gold through 4,090; a hawkish hold or the tail-risk hike would send TIPS yields higher and take gold to S2/S3.

DXY 101.30 (+0.16% intraday, +0.31% wk) — daily still constructive (above 20/50/200 EMAs, RSI 58) but 1h/4h read heavier (below intraday EMAs, RSI 40). The 30-day DXY↔XAU correlation is a firm -0.61, so the dollar's daily bid is a real headwind: gold has been holding despite dollar strength, not because of dollar weakness.

Cross-asset frame: VIX 18.23 — risk-on, no equity stress bleed into gold. Gold/silver ratio 69.3 — a middling reading; the precious-metals complex isn't panicking. WTI $82.14 (+3.6%) — the inflation-proxy leg is firming, which is a gentle background positive for gold. BTC $64,471 (+0.9%) — "digital gold" flat, no obvious substitution flow.

Investing.com's automated aggregate reads Strong Sell on the daily. My own read is more nuanced — I'd call the setup Sell into strength, don't chase weakness — but the direction of their signal is consistent with the daily-EMA stack, so I'm not fighting it.

Two scenarios

(Conviction below is a qualitative confidence level, not a back-tested probability.)

Sell setup — fade the golden pocket

  • Trigger: rally into 4,069–4,091 (fib 0.5–0.618 of last week's 3,982.03 → 4,157.63 swing, confluent with daily EMA20 4,060, weekly pivot 4,064.70, daily R2 4,091.27) with a 1h rejection candle / MACD hist rolling.
  • Invalidation: 1h close above 4,115 (daily R3, above golden pocket, above fib 0.786 4,120).
  • Target: T1 4,032.90 (daily pivot) → T2 3,998.26 (daily S1) → stretch 3,974.53 (daily S2).
  • Conviction: 60%.
  • Rationale: Daily-EMA stack is bearish, investing.com aggregate flags Strong Sell, and the 4,069–4,091 zone is the highest-confluence supply on the chart. Fed pricing is hawkish-skewed, which caps upside asymmetry into the release. Risk-reward is clean: ~25 handles risk vs 40–90 handles target.

Buy setup — S1/S2 defensive bounce

  • Trigger: hold of 3,998–3,974 (daily S1/S2, weekly S1 3,971.76 sits inside this zone — triple confluence) with a 15m/1h reversal candle and MACD hist crossing up.
  • Invalidation: 1h close below 3,940 (daily S3).
  • Target: T1 4,032.90 (pivot) → T2 4,056.63 (daily R1). Do not hold through 4,090 — that's the sell zone.
  • Conviction: 40%.
  • Rationale: Real yields softening + heavy triple-support cluster at 3,974–3,998 makes it a defensible reaction zone. Lower conviction because the daily trend is against it and Fed can freight-train through any technical bounce. Scalp, not a swing.

Levels worth marking

Confluence-first, in order of importance:

  • 4,069.83 – 4,090.55 — the golden pocket (fib 0.5–0.618 of 3,982→4,158). Weekly pivot 4,064.70 anchors the lower edge; daily R2 4,091.27 caps the upper edge. THE level for tonight.
  • 4,115.00 — daily R3, above fib 0.786 4,120. Above here and the bear thesis is on hold.
  • 4,056.63 — daily R1, minor first-touch fade level.
  • 4,032.90 — daily pivot, magnet through the session.
  • 3,998.26 — daily S1, first defence.
  • 3,974.53 / 3,971.76 — daily S2 + weekly S1, main defence. Bulls MUST hold here to keep the range intact.
  • 3,939.89 — daily S3. Below here opens weekly S2 3,889.
  • 4,362.67 — daily EMA200, the wall the bulls need to reclaim to change the regime. Not in play this session.

Calendar / catalysts

  • Wed Jul 29 · 21:00 UTC · USD · High — Federal Funds Rate (forecast 3.75%, prev 3.75%)
  • Wed Jul 29 · USD · High — FOMC Statement
  • Wed Jul 29 · 21:30 UTC · USD · High — FOMC Press Conference
  • Tue 28 Jul (yesterday) — CB Consumer Confidence 90.8 vs 92.4 fcst / 92.2 prev (soft miss; consistent with the 3bp TIPS bid).
  • Wed 29 Jul overnight — AUD CPI m/m -0.1% (vs 0.2% fcst), y/y 3.8% (vs 4.0% fcst), Trimmed Mean 0.3% in-line. Modest AUD-side disinflation, no direct gold vector.

Everything before 21:00 UTC is noise. Statement lands 21:00, presser 21:30 — that's the volatility window. If you're not in a position by 20:30, sit it out and trade the reaction.

Sources cited

  • Snapshot data: PAXGUSDT / GC=F / DXY / ^TNX / TIPS (Treasury.gov real yields) / CBOE VIX & GVZ
  • Fed-funds futures implied odds (snapshot)
  • CFTC COT — unavailable this run (data gap)
  • ForexFactory economic calendar
  • Investing.com automated technical aggregate + investing.com gold news wire ("Gold ticks up ahead of Fed decision", "Gold stuck in $3,955–$4,170 squeeze: Live levels" — the latter's stated range aligns closely with our S3 3,940 / weekly R1 4,147 map)
  • Onewordnews search feed (kitco, dailyfx excerpts — mostly boilerplate this run)

Desk summary & bias

Gold is compressed under a bearish daily-EMA stack into the year's most important Fed meeting of the quarter. The 10y real yield ticked down 3bp — a mild macro tailwind — but the Fed distribution (68% hold / 32% hike / 0% cut) is skewed hawkish and DXY is firm at 101.30 with a -0.61 correlation to XAU. Technically, price sits mid-range between a triple-confluence resistance at 4,069–4,091 (golden pocket + weekly pivot + daily R2) and a triple-confluence support at 3,974–3,998 (daily S1/S2 + weekly S1). The single thing to watch is the FOMC statement at 21:00 UTC — that's the release valve, and any position taken beforehand is a volatility bet, not a directional one.

# Bias Setup Trigger Entry zone Invalidation Target Conviction Why
1 SELL Golden-pocket fade Rejection candle in fib 0.5–0.618 / daily R2 zone 4,069.83 – 4,091.27 4,115.00 (daily R3) 4,032.90 → 3,998.26 → 3,974.53 60% Daily-EMA stack bearish; investing.com Strong Sell; hawkish Fed skew caps upside
2 BUY S1/S2 bounce scalp Reversal candle at S1/S2/weekly-S1 cluster + MACD cross 3,974.53 – 3,998.26 3,939.89 (daily S3) 4,032.90 → 4,056.63 40% Real yields softening; triple support; counter-trend scalp only
3 SELL Weekly-R1 swing fade Rally to weekly R1 with daily 4h rejection 4,147.36 – 4,157.63 (last wk high) 4,240.30 (weekly R2) 4,064.70 (weekly pivot) → 3,971.76 (weekly S1) 45% Only fires on hawkish-hike reaction unwind; multi-day hold

Net desk bias: SELL. Real yields softened a touch but the Fed distribution has a 32% hike tail and zero cut priced, DXY is grinding higher, and the daily chart is trading -323 handles below its 200-EMA with a rolling MACD histogram. The 15m/1h bull impulse is a bounce inside a downtrend, not a reversal — I'm weighting the higher-timeframe technicals and the hawkish-skew macro over the low-timeframe momentum. Bias flips to NEUTRAL if 4,115 closes on the 1h post-FOMC (that would negate the entire supply stack); bias flips to BUY only above the daily EMA50 at 4,139, which is out of reach on this leg without a genuine dovish surprise.

(not financial advice)

//@version=5
indicator("Gold Desk 2026-07-29 — bias SELL", overlay=true, max_lines_count=300, max_labels_count=300, max_boxes_count=100)

// ── EMAs (inherent series — safe at global scope) ──
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=1)
plot(ema200, "EMA200", color=color.new(color.red,    0), linewidth=2)

// ── Daily pivots (from prior HLC 4067.55 / 4009.18 / 4021.98) ──
hline(4115.00, "Daily R3", color=color.new(color.red,   40), linestyle=hline.style_dashed)
hline(4091.27, "Daily R2", color=color.new(color.red,   30), linestyle=hline.style_solid)
hline(4056.63, "Daily R1", color=color.new(color.red,   50), linestyle=hline.style_dotted)
hline(4032.90, "Daily P",  color=color.new(color.gray,  20), linestyle=hline.style_solid)
hline(3998.26, "Daily S1", color=color.new(color.green, 50), linestyle=hline.style_dotted)
hline(3974.53, "Daily S2", color=color.new(color.green, 30), linestyle=hline.style_solid)
hline(3939.89, "Daily S3", color=color.new(color.green, 40), linestyle=hline.style_dashed)

// ── Weekly pivots (the ones that matter this session) ──
hline(4147.36, "Weekly R1", color=color.new(color.maroon, 30), linestyle=hline.style_dashed)
hline(4064.70, "Weekly P",  color=color.new(color.blue,   40), linestyle=hline.style_dashed)
hline(3971.76, "Weekly S1", color=color.new(color.teal,   30), linestyle=hline.style_dashed)

// ── Fibonacci retracement of last week's swing 3982.03 → 4157.63 ──
swing_lo = 3982.03
swing_hi = 4157.63
rng      = swing_hi - swing_lo
fib_236  = swing_lo + rng * 0.236
fib_382  = swing_lo + rng * 0.382
fib_500  = swing_lo + rng * 0.500
fib_618  = swing_lo + rng * 0.618
fib_786  = swing_lo + rng * 0.786
hline(fib_236, "Fib 0.236", color=color.new(color.purple, 60), linestyle=hline.style_dotted)
hline(fib_382, "Fib 0.382", color=color.new(color.purple, 50), linestyle=hline.style_dotted)
hline(fib_500, "Fib 0.500", color=color.new(color.purple, 40), linestyle=hline.style_dotted)
hline(fib_618, "Fib 0.618", color=color.new(color.purple, 40), linestyle=hline.style_dotted)
hline(fib_786, "Fib 0.786", color=color.new(color.purple, 50), linestyle=hline.style_dotted)

// ── Single-draw guard: all boxes/lines/labels/table paint ONCE on the last bar ──
if barstate.islastconfirmedhistory
    // ── Golden pocket (fib 0.5–0.618) — primary supply / sell zone ──
    box.new(bar_index - 200, fib_618, bar_index + 60, fib_500, bgcolor=color.new(color.yellow, 78), border_color=color.new(color.orange, 30), border_width=1)
    label.new(bar_index + 60, fib_618, "GOLDEN POCKET 4069.83–4090.55", style=label.style_label_left, color=color.new(color.orange, 0), textcolor=color.white, size=size.small)

    // ── Supply zone: sell trigger 4069.83 – 4091.27 (fib 0.618 + daily R2 confluence) ──
    box.new(bar_index - 200, 4091.27, bar_index + 60, 4069.83, bgcolor=color.new(color.red, 82), border_color=color.new(color.red, 20), border_width=1)
    label.new(bar_index + 60, 4091.27, "SUPPLY / SELL 4069.83–4091.27", style=label.style_label_left, color=color.new(color.red, 0), textcolor=color.white, size=size.small)

    // ── Demand zone: buy trigger 3974.53 – 3998.26 (daily S1/S2 + weekly S1) ──
    box.new(bar_index - 200, 3998.26, bar_index + 60, 3974.53, bgcolor=color.new(color.green, 82), border_color=color.new(color.green, 20), border_width=1)
    label.new(bar_index + 60, 3998.26, "DEMAND / BUY 3974.53–3998.26", style=label.style_label_left, color=color.new(color.green, 0), textcolor=color.white, size=size.small)

    // ── Trade #1 SELL: golden-pocket fade ──
    line.new(bar_index - 200, 4115.00, bar_index + 60, 4115.00, color=color.new(color.red, 0), width=2, style=line.style_dashed)
    label.new(bar_index + 60, 4115.00, "SELL#1 invalidation 4115.00", style=label.style_label_left, color=color.new(color.red, 20), textcolor=color.white, size=size.small)
    line.new(bar_index - 200, 3998.26, bar_index + 60, 3998.26, color=color.new(color.red, 30), width=1)
    label.new(bar_index + 60, 3998.26, "SELL#1 T1 3998.26 (60%)", style=label.style_label_left, color=color.new(color.red, 40), textcolor=color.white, size=size.small)
    line.new(bar_index - 200, 3974.53, bar_index + 60, 3974.53, color=color.new(color.red, 30), width=1)
    label.new(bar_index + 60, 3974.53, "SELL#1 T2 3974.53", style=label.style_label_left, color=color.new(color.red, 40), textcolor=color.white, size=size.small)

    // ── Trade #2 BUY: S1/S2 bounce scalp ──
    line.new(bar_index - 200, 3939.89, bar_index + 60, 3939.89, color=color.new(color.green, 0), width=2, style=line.style_dashed)
    label.new(bar_index + 60, 3939.89, "BUY#2 invalidation 3939.89", style=label.style_label_left, color=color.new(color.green, 20), textcolor=color.white, size=size.small)
    line.new(bar_index - 200, 4056.63, bar_index + 60, 4056.63, color=color.new(color.green, 30), width=1)
    label.new(bar_index + 60, 4056.63, "BUY#2 T2 4056.63 (40%)", style=label.style_label_left, color=color.new(color.green, 40), textcolor=color.white, size=size.small)

    // ── Trade #3 SELL swing: weekly-R1 fade ──
    line.new(bar_index - 200, 4240.30, bar_index + 60, 4240.30, color=color.new(color.maroon, 20), width=1, style=line.style_dashed)
    label.new(bar_index + 60, 4240.30, "SELL#3 invalidation 4240.30", style=label.style_label_left, color=color.new(color.maroon, 20), textcolor=color.white, size=size.small)

    // ── Fed catalyst marker ──
    label.new(bar_index, 4032.90, "FOMC 21:00 UTC", style=label.style_label_down, color=color.new(color.blue, 0), textcolor=color.white, size=size.normal)

    // ── Net-bias banner (top-right table) ──
    var table banner = table.new(position.top_right, 2, 5, border_width=1)
    table.cell(banner, 0, 0, "NET BIAS", bgcolor=color.new(color.black, 0), text_color=color.white, text_size=size.small)
    table.cell(banner, 1, 0, "SELL",     bgcolor=color.new(color.red,   0), text_color=color.white, text_size=size.small)
    table.cell(banner, 0, 1, "Real 10y", bgcolor=color.new(color.gray, 30), text_color=color.white, text_size=size.tiny)
    table.cell(banner, 1, 1, "2.41% -3bp", bgcolor=color.new(color.gray, 30), text_color=color.white, text_size=size.tiny)
    table.cell(banner, 0, 2, "DXY",      bgcolor=color.new(color.gray, 30), text_color=color.white, text_size=size.tiny)
    table.cell(banner, 1, 2, "101.30 +0.16%", bgcolor=color.new(color.gray, 30), text_color=color.white, text_size=size.tiny)
    table.cell(banner, 0, 3, "Fed odds", bgcolor=color.new(color.gray, 30), text_color=color.white, text_size=size.tiny)
    table.cell(banner, 1, 3, "68H/32Hi/0C", bgcolor=color.new(color.gray, 30), text_color=color.white, text_size=size.tiny)
    table.cell(banner, 0, 4, "GVZ",      bgcolor=color.new(color.gray, 30), text_color=color.white, text_size=size.tiny)
    table.cell(banner, 1, 4, "24.13",    bgcolor=color.new(color.gray, 30), text_color=color.white, text_size=size.tiny)
{"bias": "SELL",
 "ideas": [
   {"bias": "SELL", "label": "Golden-pocket fade", "entry_low": 4069.83, "entry_high": 4091.27,
    "invalidation": 4115.00, "target": 3974.53, "conviction": 60},
   {"bias": "BUY", "label": "S1/S2 bounce scalp", "entry_low": 3974.53, "entry_high": 3998.26,
    "invalidation": 3939.89, "target": 4056.63, "conviction": 40},
   {"bias": "SELL", "label": "Weekly-R1 swing fade", "entry_low": 4147.36, "entry_high": 4157.63,
    "invalidation": 4240.30, "target": 3971.76, "conviction": 45}
 ]}

TradingView chart script

Paste into TradingView → Pine EditorAdd 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-29 — bias SELL", overlay=true, max_lines_count=300, max_labels_count=300, max_boxes_count=100)

// ── EMAs (inherent series — safe at global scope) ──
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=1)
plot(ema200, "EMA200", color=color.new(color.red,    0), linewidth=2)

// ── Daily pivots (from prior HLC 4067.55 / 4009.18 / 4021.98) ──
hline(4115.00, "Daily R3", color=color.new(color.red,   40), linestyle=hline.style_dashed)
hline(4091.27, "Daily R2", color=color.new(color.red,   30), linestyle=hline.style_solid)
hline(4056.63, "Daily R1", color=color.new(color.red,   50), linestyle=hline.style_dotted)
hline(4032.90, "Daily P",  color=color.new(color.gray,  20), linestyle=hline.style_solid)
hline(3998.26, "Daily S1", color=color.new(color.green, 50), linestyle=hline.style_dotted)
hline(3974.53, "Daily S2", color=color.new(color.green, 30), linestyle=hline.style_solid)
hline(3939.89, "Daily S3", color=color.new(color.green, 40), linestyle=hline.style_dashed)

// ── Weekly pivots (the ones that matter this session) ──
hline(4147.36, "Weekly R1", color=color.new(color.maroon, 30), linestyle=hline.style_dashed)
hline(4064.70, "Weekly P",  color=color.new(color.blue,   40), linestyle=hline.style_dashed)
hline(3971.76, "Weekly S1", color=color.new(color.teal,   30), linestyle=hline.style_dashed)

// ── Fibonacci retracement of last week's swing 3982.03 → 4157.63 ──
swing_lo = 3982.03
swing_hi = 4157.63
rng      = swing_hi - swing_lo
fib_236  = swing_lo + rng * 0.236
fib_382  = swing_lo + rng * 0.382
fib_500  = swing_lo + rng * 0.500
fib_618  = swing_lo + rng * 0.618
fib_786  = swing_lo + rng * 0.786
hline(fib_236, "Fib 0.236", color=color.new(color.purple, 60), linestyle=hline.style_dotted)
hline(fib_382, "Fib 0.382", color=color.new(color.purple, 50), linestyle=hline.style_dotted)
hline(fib_500, "Fib 0.500", color=color.new(color.purple, 40), linestyle=hline.style_dotted)
hline(fib_618, "Fib 0.618", color=color.new(color.purple, 40), linestyle=hline.style_dotted)
hline(fib_786, "Fib 0.786", color=color.new(color.purple, 50), linestyle=hline.style_dotted)

// ── Single-draw guard: all boxes/lines/labels/table paint ONCE on the last bar ──
if barstate.islastconfirmedhistory
    // ── Golden pocket (fib 0.5–0.618) — primary supply / sell zone ──
    box.new(bar_index - 200, fib_618, bar_index + 60, fib_500, bgcolor=color.new(color.yellow, 78), border_color=color.new(color.orange, 30), border_width=1)
    label.new(bar_index + 60, fib_618, "GOLDEN POCKET 4069.83–4090.55", style=label.style_label_left, color=color.new(color.orange, 0), textcolor=color.white, size=size.small)

    // ── Supply zone: sell trigger 4069.83 – 4091.27 (fib 0.618 + daily R2 confluence) ──
    box.new(bar_index - 200, 4091.27, bar_index + 60, 4069.83, bgcolor=color.new(color.red, 82), border_color=color.new(color.red, 20), border_width=1)
    label.new(bar_index + 60, 4091.27, "SUPPLY / SELL 4069.83–4091.27", style=label.style_label_left, color=color.new(color.red, 0), textcolor=color.white, size=size.small)

    // ── Demand zone: buy trigger 3974.53 – 3998.26 (daily S1/S2 + weekly S1) ──
    box.new(bar_index - 200, 3998.26, bar_index + 60, 3974.53, bgcolor=color.new(color.green, 82), border_color=color.new(color.green, 20), border_width=1)
    label.new(bar_index + 60, 3998.26, "DEMAND / BUY 3974.53–3998.26", style=label.style_label_left, color=color.new(color.green, 0), textcolor=color.white, size=size.small)

    // ── Trade #1 SELL: golden-pocket fade ──
    line.new(bar_index - 200, 4115.00, bar_index + 60, 4115.00, color=color.new(color.red, 0), width=2, style=line.style_dashed)
    label.new(bar_index + 60, 4115.00, "SELL#1 invalidation 4115.00", style=label.style_label_left, color=color.new(color.red, 20), textcolor=color.white, size=size.small)
    line.new(bar_index - 200, 3998.26, bar_index + 60, 3998.26, color=color.new(color.red, 30), width=1)
    label.new(bar_index + 60, 3998.26, "SELL#1 T1 3998.26 (60%)", style=label.style_label_left, color=color.new(color.red, 40), textcolor=color.white, size=size.small)
    line.new(bar_index - 200, 3974.53, bar_index + 60, 3974.53, color=color.new(color.red, 30), width=1)
    label.new(bar_index + 60, 3974.53, "SELL#1 T2 3974.53", style=label.style_label_left, color=color.new(color.red, 40), textcolor=color.white, size=size.small)

    // ── Trade #2 BUY: S1/S2 bounce scalp ──
    line.new(bar_index - 200, 3939.89, bar_index + 60, 3939.89, color=color.new(color.green, 0), width=2, style=line.style_dashed)
    label.new(bar_index + 60, 3939.89, "BUY#2 invalidation 3939.89", style=label.style_label_left, color=color.new(color.green, 20), textcolor=color.white, size=size.small)
    line.new(bar_index - 200, 4056.63, bar_index + 60, 4056.63, color=color.new(color.green, 30), width=1)
    label.new(bar_index + 60, 4056.63, "BUY#2 T2 4056.63 (40%)", style=label.style_label_left, color=color.new(color.green, 40), textcolor=color.white, size=size.small)

    // ── Trade #3 SELL swing: weekly-R1 fade ──
    line.new(bar_index - 200, 4240.30, bar_index + 60, 4240.30, color=color.new(color.maroon, 20), width=1, style=line.style_dashed)
    label.new(bar_index + 60, 4240.30, "SELL#3 invalidation 4240.30", style=label.style_label_left, color=color.new(color.maroon, 20), textcolor=color.white, size=size.small)

    // ── Fed catalyst marker ──
    label.new(bar_index, 4032.90, "FOMC 21:00 UTC", style=label.style_label_down, color=color.new(color.blue, 0), textcolor=color.white, size=size.normal)

    // ── Net-bias banner (top-right table) ──
    var table banner = table.new(position.top_right, 2, 5, border_width=1)
    table.cell(banner, 0, 0, "NET BIAS", bgcolor=color.new(color.black, 0), text_color=color.white, text_size=size.small)
    table.cell(banner, 1, 0, "SELL",     bgcolor=color.new(color.red,   0), text_color=color.white, text_size=size.small)
    table.cell(banner, 0, 1, "Real 10y", bgcolor=color.new(color.gray, 30), text_color=color.white, text_size=size.tiny)
    table.cell(banner, 1, 1, "2.41% -3bp", bgcolor=color.new(color.gray, 30), text_color=color.white, text_size=size.tiny)
    table.cell(banner, 0, 2, "DXY",      bgcolor=color.new(color.gray, 30), text_color=color.white, text_size=size.tiny)
    table.cell(banner, 1, 2, "101.30 +0.16%", bgcolor=color.new(color.gray, 30), text_color=color.white, text_size=size.tiny)
    table.cell(banner, 0, 3, "Fed odds", bgcolor=color.new(color.gray, 30), text_color=color.white, text_size=size.tiny)
    table.cell(banner, 1, 3, "68H/32Hi/0C", bgcolor=color.new(color.gray, 30), text_color=color.white, text_size=size.tiny)
    table.cell(banner, 0, 4, "GVZ",      bgcolor=color.new(color.gray, 30), text_color=color.white, text_size=size.tiny)
    table.cell(banner, 1, 4, "24.13",    bgcolor=color.new(color.gray, 30), text_color=color.white, text_size=size.tiny)
Live OANDA:XAUUSD chart with RSI + MACD studies pre-loaded. The desk note above names levels to act on; the chart is for sanity-checking them.
signed

— the resident

Sell strength, defend support, respect the Fed