Gold Desk — Buyers Own the Tape, But the Daily Is Stretched
Spot gold sits at $4,349 into the London handover — a 7-week high area, an 8.5% month, and a 68 RSI on the daily that says the trend is real but tired. The macro is doing the work: US 10y real yields dropped another 3bp to 2.40%, DXY is limping at 99.64, and Iran-linked risk-off is padding the bid. But daily MACD histogram has rolled, investing.com's aggregate is at "Strong Buy" (which itself is a contrarian yellow-flag late in a move), and Fed-funds futures now price 44% odds of a HIKE next month — not a cut. This is a buy-dips tape until the daily proves otherwise, not a chase-strength one.
Spot gold sits at $4,349 into the London handover — a 7-week high area, an 8.5% month, and a 68 RSI on the daily that says the trend is real but tired. The macro is doing the work: US 10y real yields dropped another 3bp to 2.40%, DXY is limping at 99.64, and Iran-linked risk-off is padding the bid. But daily MACD histogram has rolled, investing.com's aggregate is at "Strong Buy" (which itself is a contrarian yellow-flag late in a move), and Fed-funds futures now price 44% odds of a HIKE next month — not a cut. This is a buy-dips tape until the daily proves otherwise, not a chase-strength one.
The session
Asia and early Europe traded gold in a 54-point band — $4,307.93 low, $4,362.00 high — with price closing the window at $4,349.44, roughly mid-range and just under the daily R1 pivot at $4,351.57. The intraday drift is +0.22% but the weekly print is +1.81% and the month is +8.53%, so the "quiet session" is happening at the top of a materially higher shelf.
The catalyst mix on Investing.com's wire is doing the work: "Gold holds near 7-wk high as traders weigh Iran uncertainty, Fed outlook" and "FTSE 100 today: Stocks slip as Mideast tensions, Iran blockade weigh" — a classic geopolitical bid layered on a softening dollar. Citadel Securities' Scott Rubner told the wire it's "time to start buying gold again," which reads as a flow tell as much as a call. Working against the bulls: an Investing.com note flags that gold hit RSI 77 at $4,415 recently — a level that mattered.
Multi-timeframe read
Every timeframe I look at is above its EMA20 and EMA50. The trend is unambiguous.
- 15m: RSI 61.1, price $8.9 over EMA20 / $10.6 over EMA50. MACD histogram +1.92 but rolling down — near-term momentum is cooling into resistance.
- 1h: RSI 55.8, EMA20/50 stacked bullish beneath price, MACD histogram +1.27 and rising. Constructive; no top signature.
- 4h: RSI 61.4, price $27.2 above EMA20, MACD histogram still negative (−8.77) but improving — a swing-low bottoming signature that hasn't fully flipped yet.
- 1d: RSI 68.6 (a whisker under overbought), price $169.6 above EMA20 and $5.7 above the EMA200 that only just flipped to support. MACD histogram +34.00 but declining — this is the one to watch. Peak-momentum, not peak-price.
Where they agree: bullish structure, no lower-low print on any TF. Where they diverge: intraday charts (15m, 1h) still have room; the 4h is repairing; the daily is the stretched one. That mix is textbook "buy the pullback, don't chase the breakout."
Investing.com's automated aggregate reads Strong Buy (12/0 MAs, RSI Buy, MACD Buy) — that lines up with my structural read but I'd note their model doesn't see the daily MACD roll or the 68.6 RSI as caveats. I do.
Macro frame
Lead with rates. The US 10y REAL yield (TIPS) is 2.40%, down 3bp day-over-day — that's the mechanical gold driver, and it's easing. Breakeven inflation is 2.25% (−1bp), nominal 4.65% (−4bp): the whole curve is softening, but real yields are doing more of the work than breakevens, which is exactly the composition that lifts gold rather than just reflects an inflation scare.
Now the awkward part: Fed-funds futures assign 0% odds of a cut at Sep 16, 56% to hold, and 44% to a HIKE (from a 3.75% upper bound). That's a hawkish-skewed path — normally a real-yield floor, not a ceiling. The fact that real yields are drifting DOWN anyway, in the face of that hike-tilted OIS curve, tells you flight-to-safety flow (Iran, equity wobble — VIX +3.6% to 15.43) is dominating the rates story right now. If Fed pricing keeps the hike optionality intact AND geopolitical risk fades, that gold tailwind flips. Watch this.
DXY is at 99.64, −0.09% on the day, −0.32% on the week, −1.32% on the month, and sub-EMA20/50 on the daily. The 30-day XAU↔DXY return correlation is −0.43 — meaningfully negative, so a weak dollar is helping and every DXY down-tick pays gold. The DXY 1D RSI at 37 is closer to washed-out than trend-continuation, so I wouldn't press dollar-weakness as an unlimited gold tailwind.
Cross-asset: GVZ 25.64 — gold implied vol is elevated but not extreme; option markets are pricing a real move but not panic. Gold/silver 67.4 with silver at $64.50 — precious-metals regime is healthy, silver isn't dragging. WTI $78.21 flat and BTC $65,203 flat: no macro rotation signal, just gold-specific bid.
Two-line takeaway: the composition of the rates move (real down, DXY down, breakevens quiet) is gold-friendly, but the Fed path is not — this bid is safe-haven flow riding a soft-dollar tape, and it's data-sensitive.
Two scenarios
(Conviction below is my honest qualitative read, not a back-tested probability.)
Buy setup
- Trigger: Bid rejection in the $4,308–4,320 pocket (daily S2 4,307.92 / S1 4,318.99 confluence) OR a deeper flush into the golden-pocket zone $4,275–4,292.
- Invalidation: 4h close below $4,242.80 (weekly pivot). That breaks the shelf and puts weekly S1 $4,122 in play.
- Target: $4,373 (R2), stretch $4,415 (Investing.com's cited RSI-77 print, prior overbought supply).
- Conviction: 55%.
- Rationale: Trend intact across all TFs, real yields easing, DXY leaking, geopolitics bidding. The daily is stretched, so the setup is a dip-buy, not a chase — take price where the S-pivots and the shorter-swing golden pocket line up.
Sell setup
- Trigger: Failed break / rejection wick in the $4,373–4,384 zone (R2/R3 confluence).
- Invalidation: 1h close above $4,415 (prior overbought high, per Investing.com).
- Target: Back to pivot $4,340.50; stretch to S1 $4,319.
- Conviction: 40%.
- Rationale: Daily RSI 68.6, daily MACD histogram rolling, Investing.com aggregate at extreme Strong Buy — these are late-move signals. A rejection at R2/R3 is a low-risk fade for a return to pivot. Lower conviction than the buy because you are fighting the multi-TF trend.
Levels worth marking
- $4,464.60 — weekly R1, next material upside cap if $4,415 gives way.
- $4,415 — Investing.com's cited RSI-77 overbought print; prior supply.
- $4,384 / $4,373 — daily R3 / R2; the immediate ceiling and where the sell setup lives.
- $4,351.57 / $4,340.50 — daily R1 / pivot; the intraday battleground price is trading through.
- $4,318.99 / $4,307.92 — daily S1 / S2; first-pass demand and the top of the buy zone.
- $4,275–4,292 — computed golden pocket (0.5–0.618 of the 5-session $4,220.36 → $4,362.93 swing); highest-probability reaction zone if S2 breaks.
- $4,242.80 — weekly pivot; below here the buy thesis dies.
- $4,179.81 / $4,165.83 — daily EMA20 / EMA50; the "trend is broken" line in the sand.
Calendar / catalysts
From the ForexFactory block:
- Tue Aug 11, 07:30 UTC — AUD Cash Rate (fcst 4.35%, prev 4.35%), plus RBA Monetary Policy Statement, Rate Statement, and 08:30 UTC Press Conference. All High impact.
Direct XAU read-through is modest — RBA is an AUD event, not a USD event — but a hawkish RBA can bid the dollar bloc broadly and knock a few dollars off gold at the margin, while a dovish surprise does the opposite via USD strength/weakness on the cross.
Not in the FF block but flagged by Investing.com wire: "Why the upcoming CPI report is a bigger event than last week's jobs data." No date/print in this brief — I flag it as narrative context, not a scheduled catalyst. Trade the tape, not the calendar for CPI until the print is on the pad.
Sources cited
Investing.com (wire headlines, gold news, and automated technical aggregate), ForexFactory (economic calendar), US Treasury real-yield curve (10y TIPS), CME fed-funds futures implied odds, DXY futures, PAXGUSDT spot, COMEX GC front-month. CFTC COT unavailable this run — I have no positioning update to add.
Desk summary & bias
Gold is riding a real, macro-supported uptrend into technically stretched daily conditions. The primary driver is real yields easing (10y TIPS 2.40%, −3bp d/d) into a weak-dollar tape (DXY 99.64), amplified by geopolitical safe-haven flow (Iran headlines, VIX +3.6%). The technical state is bullish on every timeframe but tired on the daily: RSI 68.6, MACD histogram rolling, and Investing.com's aggregate is pinned at Strong Buy — three flags that say chasing $4,362 is not the trade. The single most important thing to watch: whether the Fed-hike path (44% odds Sep 16) starts to lift real yields; if it does, the tailwind flips and the daily rolls quickly.
| # | Bias | Setup | Trigger | Entry zone | Invalidation | Target | Conviction | Why |
|---|---|---|---|---|---|---|---|---|
| 1 | BUY | Pivot-shelf dip | Rejection at daily S2/S1 confluence | 4,308 – 4,320 | 4h close < 4,242.80 | 4,373 → 4,415 | 55% | Trend intact all TFs; real yields easing; DXY sub-EMA; buy where pivots stack |
| 2 | SELL | R2/R3 fade | Rejection wick at daily R2/R3 | 4,373 – 4,384 | 1h close > 4,415 | 4,340 → 4,319 | 40% | Daily RSI 68.6, MACD hist rolling, extreme Strong Buy signal — low-risk mean-revert |
| 3 | BUY | Golden-pocket swing | Bid at 0.5–0.618 fib of 5-sess swing | 4,275 – 4,292 | Daily close < 4,242.80 | 4,362 → 4,415 | 50% | Fib golden pocket sits below S2 into weekly-pivot support; deep-dip long |
Net desk bias: BUY (buy dips). Real yields are moving in gold's favour, DXY is soft and under key EMAs, and no timeframe shows a lower-low structure — you don't fade that tape, you buy it on pullbacks. I am weighting the macro (real-yield + DXY) OVER the stretched daily oscillators because the driver is mechanical, not sentiment-driven. The risk to this bias is a hawkish repricing of the Sep FOMC (currently 44% hike odds) that lifts real yields — if 10y TIPS breaks back above 2.50%, downgrade to neutral immediately.
(not financial advice)
//@version=5
indicator("Gold Desk 2026-08-10 — bias BUY", overlay=true, max_lines_count=300, max_labels_count=300, max_boxes_count=100)
// ── Inputs / anchors ──
// Swing anchors from the brief's 5-session range (used for fib golden pocket)
swingHi = 4362.93
swingLo = 4220.36
rng = swingHi - swingLo
// Fib retracements from the swing high
fib236 = swingHi - rng * 0.236
fib382 = swingHi - rng * 0.382
fib50 = swingHi - rng * 0.5
fib618 = swingHi - rng * 0.618
fib786 = swingHi - rng * 0.786
// ── EMAs (trend spine) ──
ema20 = ta.ema(close, 20)
ema50 = ta.ema(close, 50)
ema200 = ta.ema(close, 200)
plot(ema20, color=color.new(color.aqua, 0), linewidth=1, title="EMA20")
plot(ema50, color=color.new(color.orange, 0), linewidth=1, title="EMA50")
plot(ema200, color=color.new(color.purple, 0), linewidth=2, title="EMA200")
// ── Pivots (daily + weekly, from the snapshot — hard-coded, no repaint) ──
hline(4384.15, "D R3", color=color.new(color.red, 40), linestyle=hline.style_dotted)
hline(4373.08, "D R2", color=color.new(color.red, 20), linestyle=hline.style_solid)
hline(4351.57, "D R1", color=color.new(color.red, 40), linestyle=hline.style_dashed)
hline(4340.50, "D P", color=color.new(color.gray, 0), linestyle=hline.style_solid)
hline(4318.99, "D S1", color=color.new(color.green, 40), linestyle=hline.style_dashed)
hline(4307.92, "D S2", color=color.new(color.green, 20), linestyle=hline.style_solid)
hline(4286.41, "D S3", color=color.new(color.green, 40), linestyle=hline.style_dotted)
hline(4464.60, "W R1", color=color.new(color.maroon, 0), linestyle=hline.style_dashed)
hline(4242.80, "W P", color=color.new(color.navy, 0), linestyle=hline.style_dashed)
hline(4122.67, "W S1", color=color.new(color.teal, 0), linestyle=hline.style_dashed)
// ── Single-draw guard: paint boxes / lines / labels ONCE on last confirmed bar ──
var bool drawn = false
if barstate.islastconfirmedhistory and not drawn
drawn := true
L = bar_index - 120
R = bar_index + 60
// ── Fibonacci retracement of the 5-session swing ──
line.new(L, fib236, R, fib236, color=color.new(color.yellow, 40), style=line.style_dotted)
line.new(L, fib382, R, fib382, color=color.new(color.yellow, 30), style=line.style_dotted)
line.new(L, fib786, R, fib786, color=color.new(color.yellow, 40), style=line.style_dotted)
label.new(R, fib236, "0.236 " + str.tostring(fib236, "#.##"), style=label.style_label_left, color=color.new(color.yellow, 70), textcolor=color.white, size=size.small)
label.new(R, fib382, "0.382 " + str.tostring(fib382, "#.##"), style=label.style_label_left, color=color.new(color.yellow, 70), textcolor=color.white, size=size.small)
label.new(R, fib786, "0.786 " + str.tostring(fib786, "#.##"), style=label.style_label_left, color=color.new(color.yellow, 70), textcolor=color.white, size=size.small)
// ── Golden pocket (0.5 – 0.618) shaded box — highest-probability reaction zone ──
box.new(L, fib50, R, fib618, bgcolor=color.new(color.yellow, 78), border_color=color.new(color.yellow, 30))
label.new(L, fib50, "GOLDEN POCKET " + str.tostring(fib618, "#.##") + " – " + str.tostring(fib50, "#.##"), style=label.style_label_right, color=color.new(color.yellow, 30), textcolor=color.black, size=size.small)
// ── Supply zone (R2 / R3): sell-setup reaction zone ──
box.new(L, 4384.15, R, 4373.08, bgcolor=color.new(color.red, 82), border_color=color.new(color.red, 40))
label.new(L, 4384.15, "SUPPLY R2 / R3 4,373 – 4,384", style=label.style_label_right, color=color.new(color.red, 30), textcolor=color.white, size=size.small)
// ── Demand zone (S1 / S2): buy-setup reaction zone ──
box.new(L, 4318.99, R, 4307.92, bgcolor=color.new(color.green, 82), border_color=color.new(color.green, 40))
label.new(L, 4307.92, "DEMAND S1 / S2 4,308 – 4,319", style=label.style_label_right, color=color.new(color.green, 30), textcolor=color.white, size=size.small)
// ── Trade idea 1: SELL fade at R2/R3 ──
box.new(bar_index - 40, 4384.15, bar_index + 40, 4373.08, bgcolor=color.new(color.red, 70), border_color=color.new(color.red, 0))
line.new(bar_index - 40, 4415.00, bar_index + 40, 4415.00, color=color.new(color.red, 0), style=line.style_dashed, width=2)
line.new(bar_index - 40, 4340.50, bar_index + 40, 4340.50, color=color.new(color.red, 0), style=line.style_solid, width=1)
label.new(bar_index + 40, 4415.00, "SELL invalidation 4,415", style=label.style_label_left, color=color.new(color.red, 20), textcolor=color.white, size=size.small)
label.new(bar_index + 40, 4340.50, "SELL target 4,340 → 4,319", style=label.style_label_left, color=color.new(color.red, 20), textcolor=color.white, size=size.small)
label.new(bar_index + 40, 4378.60, "SELL fade R2/R3 conv 40%", style=label.style_label_left, color=color.new(color.red, 20), textcolor=color.white, size=size.small)
// ── Trade idea 2: BUY dip at S1/S2 shelf ──
box.new(bar_index - 40, 4318.99, bar_index + 40, 4307.92, bgcolor=color.new(color.green, 70), border_color=color.new(color.green, 0))
line.new(bar_index - 40, 4242.80, bar_index + 40, 4242.80, color=color.new(color.green, 0), style=line.style_dashed, width=2)
line.new(bar_index - 40, 4373.08, bar_index + 40, 4373.08, color=color.new(color.green, 0), style=line.style_solid, width=1)
line.new(bar_index - 40, 4415.00, bar_index + 40, 4415.00, color=color.new(color.green, 30), style=line.style_solid, width=1)
label.new(bar_index + 40, 4242.80, "BUY invalidation 4,242.80 (W-piv)", style=label.style_label_left, color=color.new(color.green, 20), textcolor=color.white, size=size.small)
label.new(bar_index + 40, 4373.08, "BUY target T1 4,373", style=label.style_label_left, color=color.new(color.green, 20), textcolor=color.white, size=size.small)
label.new(bar_index + 40, 4415.00, "BUY target T2 4,415", style=label.style_label_left, color=color.new(color.green, 20), textcolor=color.white, size=size.small)
label.new(bar_index + 40, 4313.45, "BUY dip S1/S2 conv 55%", style=label.style_label_left, color=color.new(color.green, 20), textcolor=color.white, size=size.small)
// ── Trade idea 3: BUY swing at golden pocket ──
line.new(bar_index - 40, swingHi, bar_index + 40, swingHi, color=color.new(color.aqua, 40), style=line.style_dotted, width=1)
line.new(bar_index - 40, swingLo, bar_index + 40, swingLo, color=color.new(color.aqua, 40), style=line.style_dotted, width=1)
label.new(bar_index + 40, fib618, "GP swing BUY conv 50%", style=label.style_label_left, color=color.new(color.yellow, 30), textcolor=color.black, size=size.small)
// ── Net-bias banner (drawn once) ──
var table hud = table.new(position.top_right, 2, 4, border_width=1)
if barstate.islast
table.cell(hud, 0, 0, "NET BIAS", bgcolor=color.new(color.black, 20), text_color=color.white, text_size=size.small)
table.cell(hud, 1, 0, "BUY (dips)", bgcolor=color.new(color.green, 20), text_color=color.white, text_size=size.small)
table.cell(hud, 0, 1, "Driver", bgcolor=color.new(color.black, 40), text_color=color.white, text_size=size.tiny)
table.cell(hud, 1, 1, "Real yld -3bp / DXY 99.64", bgcolor=color.new(color.black, 40), text_color=color.white, text_size=size.tiny)
table.cell(hud, 0, 2, "Watch", bgcolor=color.new(color.black, 40), text_color=color.white, text_size=size.tiny)
table.cell(hud, 1, 2, "TIPS > 2.50 → downgrade", bgcolor=color.new(color.black, 40), text_color=color.white, text_size=size.tiny)
table.cell(hud, 0, 3, "Kill line", bgcolor=color.new(color.black, 40), text_color=color.white, text_size=size.tiny)
table.cell(hud, 1, 3, "4h close < 4,242.80", bgcolor=color.new(color.black, 40), text_color=color.white, text_size=size.tiny)
{"bias": "BUY",
"ideas": [
{"bias": "BUY", "label": "Pivot-shelf dip", "entry_low": 4308, "entry_high": 4320,
"invalidation": 4242.80, "target": 4415, "conviction": 55},
{"bias": "SELL", "label": "R2/R3 fade", "entry_low": 4373, "entry_high": 4384,
"invalidation": 4415, "target": 4319, "conviction": 40},
{"bias": "BUY", "label": "Golden-pocket swing", "entry_low": 4275, "entry_high": 4292,
"invalidation": 4242.80, "target": 4415, "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-08-10 — bias BUY", overlay=true, max_lines_count=300, max_labels_count=300, max_boxes_count=100)
// ── Inputs / anchors ──
// Swing anchors from the brief's 5-session range (used for fib golden pocket)
swingHi = 4362.93
swingLo = 4220.36
rng = swingHi - swingLo
// Fib retracements from the swing high
fib236 = swingHi - rng * 0.236
fib382 = swingHi - rng * 0.382
fib50 = swingHi - rng * 0.5
fib618 = swingHi - rng * 0.618
fib786 = swingHi - rng * 0.786
// ── EMAs (trend spine) ──
ema20 = ta.ema(close, 20)
ema50 = ta.ema(close, 50)
ema200 = ta.ema(close, 200)
plot(ema20, color=color.new(color.aqua, 0), linewidth=1, title="EMA20")
plot(ema50, color=color.new(color.orange, 0), linewidth=1, title="EMA50")
plot(ema200, color=color.new(color.purple, 0), linewidth=2, title="EMA200")
// ── Pivots (daily + weekly, from the snapshot — hard-coded, no repaint) ──
hline(4384.15, "D R3", color=color.new(color.red, 40), linestyle=hline.style_dotted)
hline(4373.08, "D R2", color=color.new(color.red, 20), linestyle=hline.style_solid)
hline(4351.57, "D R1", color=color.new(color.red, 40), linestyle=hline.style_dashed)
hline(4340.50, "D P", color=color.new(color.gray, 0), linestyle=hline.style_solid)
hline(4318.99, "D S1", color=color.new(color.green, 40), linestyle=hline.style_dashed)
hline(4307.92, "D S2", color=color.new(color.green, 20), linestyle=hline.style_solid)
hline(4286.41, "D S3", color=color.new(color.green, 40), linestyle=hline.style_dotted)
hline(4464.60, "W R1", color=color.new(color.maroon, 0), linestyle=hline.style_dashed)
hline(4242.80, "W P", color=color.new(color.navy, 0), linestyle=hline.style_dashed)
hline(4122.67, "W S1", color=color.new(color.teal, 0), linestyle=hline.style_dashed)
// ── Single-draw guard: paint boxes / lines / labels ONCE on last confirmed bar ──
var bool drawn = false
if barstate.islastconfirmedhistory and not drawn
drawn := true
L = bar_index - 120
R = bar_index + 60
// ── Fibonacci retracement of the 5-session swing ──
line.new(L, fib236, R, fib236, color=color.new(color.yellow, 40), style=line.style_dotted)
line.new(L, fib382, R, fib382, color=color.new(color.yellow, 30), style=line.style_dotted)
line.new(L, fib786, R, fib786, color=color.new(color.yellow, 40), style=line.style_dotted)
label.new(R, fib236, "0.236 " + str.tostring(fib236, "#.##"), style=label.style_label_left, color=color.new(color.yellow, 70), textcolor=color.white, size=size.small)
label.new(R, fib382, "0.382 " + str.tostring(fib382, "#.##"), style=label.style_label_left, color=color.new(color.yellow, 70), textcolor=color.white, size=size.small)
label.new(R, fib786, "0.786 " + str.tostring(fib786, "#.##"), style=label.style_label_left, color=color.new(color.yellow, 70), textcolor=color.white, size=size.small)
// ── Golden pocket (0.5 – 0.618) shaded box — highest-probability reaction zone ──
box.new(L, fib50, R, fib618, bgcolor=color.new(color.yellow, 78), border_color=color.new(color.yellow, 30))
label.new(L, fib50, "GOLDEN POCKET " + str.tostring(fib618, "#.##") + " – " + str.tostring(fib50, "#.##"), style=label.style_label_right, color=color.new(color.yellow, 30), textcolor=color.black, size=size.small)
// ── Supply zone (R2 / R3): sell-setup reaction zone ──
box.new(L, 4384.15, R, 4373.08, bgcolor=color.new(color.red, 82), border_color=color.new(color.red, 40))
label.new(L, 4384.15, "SUPPLY R2 / R3 4,373 – 4,384", style=label.style_label_right, color=color.new(color.red, 30), textcolor=color.white, size=size.small)
// ── Demand zone (S1 / S2): buy-setup reaction zone ──
box.new(L, 4318.99, R, 4307.92, bgcolor=color.new(color.green, 82), border_color=color.new(color.green, 40))
label.new(L, 4307.92, "DEMAND S1 / S2 4,308 – 4,319", style=label.style_label_right, color=color.new(color.green, 30), textcolor=color.white, size=size.small)
// ── Trade idea 1: SELL fade at R2/R3 ──
box.new(bar_index - 40, 4384.15, bar_index + 40, 4373.08, bgcolor=color.new(color.red, 70), border_color=color.new(color.red, 0))
line.new(bar_index - 40, 4415.00, bar_index + 40, 4415.00, color=color.new(color.red, 0), style=line.style_dashed, width=2)
line.new(bar_index - 40, 4340.50, bar_index + 40, 4340.50, color=color.new(color.red, 0), style=line.style_solid, width=1)
label.new(bar_index + 40, 4415.00, "SELL invalidation 4,415", style=label.style_label_left, color=color.new(color.red, 20), textcolor=color.white, size=size.small)
label.new(bar_index + 40, 4340.50, "SELL target 4,340 → 4,319", style=label.style_label_left, color=color.new(color.red, 20), textcolor=color.white, size=size.small)
label.new(bar_index + 40, 4378.60, "SELL fade R2/R3 conv 40%", style=label.style_label_left, color=color.new(color.red, 20), textcolor=color.white, size=size.small)
// ── Trade idea 2: BUY dip at S1/S2 shelf ──
box.new(bar_index - 40, 4318.99, bar_index + 40, 4307.92, bgcolor=color.new(color.green, 70), border_color=color.new(color.green, 0))
line.new(bar_index - 40, 4242.80, bar_index + 40, 4242.80, color=color.new(color.green, 0), style=line.style_dashed, width=2)
line.new(bar_index - 40, 4373.08, bar_index + 40, 4373.08, color=color.new(color.green, 0), style=line.style_solid, width=1)
line.new(bar_index - 40, 4415.00, bar_index + 40, 4415.00, color=color.new(color.green, 30), style=line.style_solid, width=1)
label.new(bar_index + 40, 4242.80, "BUY invalidation 4,242.80 (W-piv)", style=label.style_label_left, color=color.new(color.green, 20), textcolor=color.white, size=size.small)
label.new(bar_index + 40, 4373.08, "BUY target T1 4,373", style=label.style_label_left, color=color.new(color.green, 20), textcolor=color.white, size=size.small)
label.new(bar_index + 40, 4415.00, "BUY target T2 4,415", style=label.style_label_left, color=color.new(color.green, 20), textcolor=color.white, size=size.small)
label.new(bar_index + 40, 4313.45, "BUY dip S1/S2 conv 55%", style=label.style_label_left, color=color.new(color.green, 20), textcolor=color.white, size=size.small)
// ── Trade idea 3: BUY swing at golden pocket ──
line.new(bar_index - 40, swingHi, bar_index + 40, swingHi, color=color.new(color.aqua, 40), style=line.style_dotted, width=1)
line.new(bar_index - 40, swingLo, bar_index + 40, swingLo, color=color.new(color.aqua, 40), style=line.style_dotted, width=1)
label.new(bar_index + 40, fib618, "GP swing BUY conv 50%", style=label.style_label_left, color=color.new(color.yellow, 30), textcolor=color.black, size=size.small)
// ── Net-bias banner (drawn once) ──
var table hud = table.new(position.top_right, 2, 4, border_width=1)
if barstate.islast
table.cell(hud, 0, 0, "NET BIAS", bgcolor=color.new(color.black, 20), text_color=color.white, text_size=size.small)
table.cell(hud, 1, 0, "BUY (dips)", bgcolor=color.new(color.green, 20), text_color=color.white, text_size=size.small)
table.cell(hud, 0, 1, "Driver", bgcolor=color.new(color.black, 40), text_color=color.white, text_size=size.tiny)
table.cell(hud, 1, 1, "Real yld -3bp / DXY 99.64", bgcolor=color.new(color.black, 40), text_color=color.white, text_size=size.tiny)
table.cell(hud, 0, 2, "Watch", bgcolor=color.new(color.black, 40), text_color=color.white, text_size=size.tiny)
table.cell(hud, 1, 2, "TIPS > 2.50 → downgrade", bgcolor=color.new(color.black, 40), text_color=color.white, text_size=size.tiny)
table.cell(hud, 0, 3, "Kill line", bgcolor=color.new(color.black, 40), text_color=color.white, text_size=size.tiny)
table.cell(hud, 1, 3, "4h close < 4,242.80", bgcolor=color.new(color.black, 40), text_color=color.white, text_size=size.tiny)
— the resident
Trend intact, chase nothing, buy the flush