The rules at a glance
- Market: XAUUSD on the 15-minute chart
- Range: the high and low of the first London hour, 8 to 9 a.m. London time (12:30 to 13:30 IST in summer, 13:30 to 14:30 IST in winter)
- Entry: the first 15-minute candle between 9 a.m. and noon London time that closes beyond the range by at least a tenth of the ATR; enter at that close
- Stop loss: the other side of the range (its middle is an option in the settings)
- Target: twice the risk (2R); anything still open is closed at 4 p.m. London time
- Skip the day: if the first hour's range is wider than half of gold's daily ATR (the script checks this), or if big UK, euro area or US news is due in the window (check this yourself)
- Optional: skip signals from the 10:30 a.m. London candle, when the LBMA morning gold price auction runs
Why the first London hour matters for gold
Gold trades almost around the clock, but it doesn't trade evenly. The Asian hours are usually quieter, and activity picks up when European banks and funds start work at 8 a.m. London time. In that first hour the overnight range gets tested, early orders go through and a short-term high and low form. A close outside that range in the next few hours can be the first sign of the day's direction.
This is a variation on two ideas that already have their own pages: the London breakout, which trades the Asian range on GBPUSD, and the opening range breakout, which trades the first 15 minutes of the Nifty. Here the opening range is London's first hour, on gold.
| London breakout page | This page | |
|---|---|---|
| Range | Midnight to 8 a.m. London (Asian session) | 8 to 9 a.m. London (first London hour) |
| Example market | GBPUSD | XAUUSD |
| Breakout window | 8 to 11 a.m. London | 9 a.m. to noon London |
| Range filter | 10 to 60 pips | No more than half the daily ATR |
| Close open trades | 4 p.m. London | 4 p.m. London |
The timings in IST
All the times are fixed in London time, so the IST times move by an hour when UK clocks change. UK clocks go back on 25 October 2026, so the winter column applies from then until late March.
| London time | IST, UK summer time | IST, UK winter time | |
|---|---|---|---|
| First London hour (the range) | 08:00–09:00 | 12:30–13:30 | 13:30–14:30 |
| Breakout window | 09:00–12:00 | 13:30–16:30 | 14:30–17:30 |
| LBMA morning gold price auction | 10:30 | 15:00 | 16:00 |
| LBMA afternoon gold price auction | 15:00 | 19:30 | 20:30 |
| Close any open trade | 16:00 | 20:30 | 21:30 |
For Indian traders the whole setup fits between lunch and early evening, before the busier New York hours. The best time to trade gold guide covers the other sessions.
The LBMA gold price auctions
The LBMA Gold Price is gold's main benchmark price. It's set twice each London business day, at 10:30 and 15:00 UK time, in an electronic auction in US dollars run by ICE Benchmark Administration. The 10:30 auction falls inside this strategy's breakout window.
Big physical and institutional orders can cluster around the auctions, and short, sharp moves near those times are common. Some traders don't open trades on the auction candle for that reason. The script has an optional setting that ignores signals from the 10:30 to 10:45 London candle. It's off by default; turn it on and compare the results on your data rather than assuming it helps.
The rules, step by step
1. Mark the first London hour
On a 15-minute XAUUSD chart, mark the highest high and lowest low of the four candles from 8:00 to 9:00 a.m. London time.
2. Check the size of the range
If the range is wider than half of gold's average daily range (the 14-day ATR on the daily chart), skip the day: much of the day's move has already happened and the stop would be too wide. With a daily ATR of $58, anything over $29 is skipped. The script reads the daily ATR up to yesterday, so it can't peek at today.
3. Wait for a close outside it
Between 9 a.m. and noon London time, the first 15-minute candle that closes above the range high (or below the low) by at least a tenth of the 14-period ATR is the signal. A wick outside doesn't count. Enter at that close.
4. Set the stop and the target
The stop goes on the other side of the range. If the range is on the wide side, the script can use the middle of the range instead, which cuts the stop distance (from $16.20 to $10.10 in the example below) but gets hit more often. The target is twice the risk.
5. One trade, out by 4 p.m.
Only the first breakout counts. If it fails, there's no second try in the other direction that day. Anything still open at 4 p.m. London time is closed at the market.
Worked example: XAUUSD, 15-minute chart
The first London hour runs from 4,279.60 to 4,291.80, a range of $12.20. Yesterday's daily ATR was $58, so the range is well under the $29 limit. The next three candles stay inside. The 09:45 candle (14:15 IST in summer) closes at 4,295.80, above the range high by more than a tenth of the ATR. That's the entry, with the stop at the range low.
| Stop at the range low (default) | Stop at the middle (option) | |
|---|---|---|
| Entry | 4,295.80 | 4,295.80 |
| Stop loss | 4,279.60, $16.20 away | 4,285.70, $10.10 away |
| Target (2R) | 4,328.20 | 4,316.00 |
| Lot size at 1% of $10,000 | $100 ÷ ($16.20 × 100) = 0.06 lots | $100 ÷ ($10.10 × 100) = 0.09 lots |
| Loss if the stop is hit | $97.20 | $90.90 |
| Profit at the target | $194.40 | $181.80 |
Gold pushes higher through the LBMA morning auction and reaches the default 2R target by 14:15 London time. The lot sizes are rounded down to the nearest 0.01, which is why the losses come out under $100 ($97.20 and $90.90). Notice how small the position is: a $16 stop on gold at 1% risk on $10,000 is 0.06 lots. The XAUUSD lot size calculator works it out for any stop.
Why first-hour breakouts fail
- The false break. The price closes outside the range, then falls straight back in. The stop on the other side is there for this. If you see it a lot on your backtest, compare the results with the liquidity sweep strategy, which trades the opposite idea.
- European data. Releases in the London morning can push gold through the range and back within minutes. Check the economic calendar before the session.
- Quiet days. Some days gold barely leaves the range before noon. No signal, no trade.
- A huge first hour. After a big move at the open, the range filter keeps you out, because the stop would be too wide for a sensible lot size.
Risk management
- Risk 0.5% to 1% a trade, sized from the stop. The range sets the stop, so the lot size changes every day.
- One trade a day. A failed breakout doesn't earn a second attempt.
- Mind the spread at 8 a.m. Gold spreads can still be wide as London opens, which affects the first hour's high and low on your broker's chart.
- Prop firm accounts: check the news rules and whether holding through the LBMA auction or a data release is allowed. The prop firm comparison lists them.
Common mistakes
- Marking the range in the wrong time zone. 8 a.m. London is 12:30 IST in summer and 13:30 IST in winter. Set the chart to London time, or use the script.
- Entering on a wick. Wait for the candle to close outside the range.
- Trading a range that's too wide. The filter exists so the stop stays sensible.
- Holding into New York without a plan. The 4 p.m. cut-off keeps this a London trade. US data at 8:30 a.m. New York time is 13:30 London time in summer.
Backtest it yourself on TradingView
This page doesn't quote a win rate or a profit figure, and you should be wary of anyone who does without showing the test. Results change with the market, the dates, the data feed and the costs you put in. The honest way is to run the test yourself, and the free script below does the work in a couple of minutes.
- Open the chart. On TradingView, open XAUUSD on the 15-minute chart.
- Add the script. Open the Pine Editor from the Pine icon in the panel on the right of the chart (older layouts have it as a tab under the chart), delete the code that's already there, paste this strategy's code and click "Add to chart".
- Put in your costs. Open the strategy's settings and go to Properties. Enter your broker's commission and a little slippage. A test without costs flatters every strategy, and short-term ones most of all.
- Read the Strategy Tester. The panel under the chart shows the net profit, the maximum drawdown, the profit factor, the number of trades and a list of every trade. Click a few trades and check on the chart that each one follows the rules. Trade sizes are shown in units rather than lots: 100,000 units is one lot of a forex pair, and 100 ounces is one lot of gold.
- Change one setting at a time. Compare the stop at the range low against the middle, the range filter (0.3 to 0.8 × the daily ATR), the LBMA skip on and off, and a 9 a.m. to 11 a.m. window against 9 a.m. to noon. Then run the London breakout script on the same dates and compare the two ranges.
As a rough guide, don't trust a result with fewer than 100 trades, a profit factor under 1 once costs are in, or a drawdown you couldn't sit through with real money. Settings tuned to look good on one stretch of history often fail on the next, so check the same settings on dates you didn't tune them on, then demo trade the strategy for a few weeks. How much history you can test depends on your TradingView plan: the free plan loads 5,000 candles, which is a few months of 15-minute candles but years of daily ones.
The script sizes each trade from the stop loss and your risk percentage, starts with $10,000 and assumes 1:100 leverage (a 1% margin setting), so the tester doesn't flag margin calls on normal forex trade sizes. Change these under Properties to match your account. By default TradingView fills orders at the open of the candle after the signal, so the fill can differ a little from the signal candle's close.
Download the free Pine Script and PDF
The script is written in Pine Script version 6 for this guide and follows the rules above. It can't read the economic calendar, so skipping news days is up to you. It's free to use, change and share. The PDF is a one-page cheat sheet with the rules, the London and IST times, the LBMA auction times, a worked example and a checklist, to keep next to your chart.
Show the code (Pine Script v6, 80 lines)
//@version=6
// XAUUSD London Session strategy by PipLedger (https://pipledgerfx.com/xauusd-london-session-strategy)
// Marks the high and low of the first London hour (8 to 9 a.m. London time), then trades the first close outside that range before noon London time.
// Free to use and change. For education and backtesting only; not financial advice.
strategy("PipLedger: XAUUSD London Session", shorttitle="Gold London", overlay=true, initial_capital=10000, pyramiding=0, default_qty_type=strategy.fixed, default_qty_value=1, margin_long=1, margin_short=1, currency=currency.USD)
// ---------- Inputs
tz = input.string("Europe/London", "Session time zone")
rangeSess = input.session("0800-0900", "Opening range: first London hour (London time)")
tradeSess = input.session("0900-1200", "Breakout window (London time)")
closeHour = input.int(16, "Close any open trade at (hour, London time)", minval=1, maxval=23)
bufAtr = input.float(0.1, "Close beyond the range by at least (x ATR 14)", minval=0.0, step=0.05)
maxRangeD = input.float(0.5, "Skip the day if the range is wider than (x daily ATR 14)", minval=0.05, step=0.05)
stopMode = input.string("Opposite side", "Stop loss at", options=["Opposite side", "Range middle"])
skipFix = input.bool(false, "Skip signals from 10:30 to 10:45 London (LBMA morning auction)")
rr = input.float(2.0, "Target (R multiple)", minval=0.5, step=0.25)
riskPct = input.float(1.0, "Risk per trade (% of equity)", minval=0.1, maxval=5.0, step=0.1)
// ---------- Helpers
fx = strategy.convert_to_account(1.0) // one unit of the chart's quote currency in account currency (1 on USD-quoted charts)
calcQty(float entry, float stop) =>
float dist = math.abs(entry - stop)
dist > 0 and not na(fx) ? strategy.equity * riskPct / 100 / (dist * syminfo.pointvalue * fx) : 0.0
atr = ta.atr(14)
dAtr = request.security(syminfo.tickerid, "D", ta.atr(14)[1], lookahead=barmerge.lookahead_on) // daily ATR up to yesterday
inRange = not na(time(timeframe.period, rangeSess, tz))
inTrade = not na(time(timeframe.period, tradeSess, tz))
inFix = not na(time(timeframe.period, "1030-1045", tz))
cutoff = timestamp(tz, year(time, tz), month(time, tz), dayofmonth(time, tz), closeHour, 0)
// ---------- First-hour range
var float rHigh = na
var float rLow = na
var bool done = false
if inRange and not inRange[1]
rHigh := high
rLow := low
done := false
else if inRange
rHigh := math.max(rHigh, high)
rLow := math.min(rLow, low)
rangeSize = rHigh - rLow
rangeOk = not na(rHigh) and not na(dAtr) and rangeSize > 0 and rangeSize <= maxRangeD * dAtr
canTrade = inTrade and not inRange and not done and strategy.position_size == 0 and rangeOk and time_close < cutoff and not (skipFix and inFix)
longSig = canTrade and close > rHigh + bufAtr * atr
shortSig = canTrade and close < rLow - bufAtr * atr
mid = (rHigh + rLow) / 2
// ---------- Orders
if longSig
float sl = stopMode == "Opposite side" ? rLow : mid
float q = calcQty(close, sl)
if q > 0
strategy.entry("Long", strategy.long, qty=q)
strategy.exit("Long exit", "Long", stop=sl, limit=close + (close - sl) * rr)
done := true
if shortSig
float sl = stopMode == "Opposite side" ? rHigh : mid
float q = calcQty(close, sl)
if q > 0
strategy.entry("Short", strategy.short, qty=q)
strategy.exit("Short exit", "Short", stop=sl, limit=close - (sl - close) * rr)
done := true
// the candle that closes at the cut-off sends the order, so it fills at the cut-off time
if strategy.position_size != 0 and time_close >= cutoff
strategy.close_all(comment="Session end")
// ---------- Chart
plot(rHigh, "First-hour high", color=color.new(color.teal, 0), linewidth=2, style=plot.style_linebr)
plot(rLow, "First-hour low", color=color.new(color.orange, 0), linewidth=2, style=plot.style_linebr)
bgcolor(inRange ? color.new(color.gray, 90) : na, title="First London hour")
bgcolor(skipFix and inFix ? color.new(color.purple, 90) : na, title="LBMA morning auction")
plotshape(longSig, "Long breakout", shape.triangleup, location.belowbar, color.teal, size=size.small)
plotshape(shortSig, "Short breakout", shape.triangledown, location.abovebar, color.red, size=size.small)Trading this from India
The rules work on any gold chart, and TradingView's XAUUSD chart is a fine place to learn and backtest them. To trade gold legally from India, though, use MCX gold futures, including the smaller Gold Mini and Gold Petal contracts, through a SEBI-registered broker. Trading XAUUSD as a CFD with an offshore forex platform isn't allowed for residents under FEMA. MCX gold trades from 9 a.m. to 11:30 p.m. IST while the US is on daylight saving time and to 11:55 p.m. in the US winter, which covers the London session and the New York morning. The contract is priced in rupees, so work out the stop in rupees at your contract's quote unit (per 10 grams for Gold and Gold Mini, per gram for Gold Petal); the script works in ATR, not pips, so it needs no pip setting. The full picture is in is forex trading legal in India and XAUUSD market timings in India.
Related strategies: London breakout, opening range breakout, ICT kill zones, previous day high and low, XAUUSD New York session, XAUUSD intraday pivots, gold Donchian breakout. All 34 strategies are compared on one page in forex trading strategies.