The rules at a glance
- Market: XAUUSD on the 15-minute chart
- London range: the high and low from 8 a.m. to 1 p.m. London time (12:30 to 17:30 IST in summer, 13:30 to 18:30 IST in winter)
- Direction: trade only the way London moved: London's 1 p.m. close must be at least a quarter of the daily ATR above its 8 a.m. open for a long (below for a short); otherwise no trade
- Entry: between 8:30 a.m. and noon New York time (18:00 to 21:30 IST in summer, 19:00 to 22:30 IST in winter), the first candle that closes beyond the London high (or low) by a tenth of the ATR, after a candle that closed inside it
- Stop loss: the breakout candle's low, or half an ATR back inside the level, whichever is further; skip if that's more than 2.5 × ATR away
- Target: 2R; anything open is closed at 3 p.m. New York time
- News: signals from the 8:30 a.m. New York candle, when most big US data comes out, are skipped
How New York takes over from London
The London and New York sessions overlap from 8 a.m. to noon New York time, usually the busiest hours of the gold day. US economic data lands at 8:30 a.m., US stocks open at 9:30 and London traders start closing their books in the early afternoon. Two things often happen in that window: New York carries on with the move London started, or it reverses it.
This strategy trades the first case only. London's high and low from 8 a.m. to 1 p.m. London time mark the range. If London rallied, a New York close above London's high is the signal to buy. If London fell, a close below London's low is the signal to sell. A break the other way, against London's move, isn't traded here; that's closer to the reversal idea in the liquidity sweep strategy.
The timings in IST
The London range is fixed in London time and the New York window in New York time. The summer column is for when both the UK and the US are on summer time, and the winter column for when both are on winter time.
| Local time | IST, summer time | IST, winter time | |
|---|---|---|---|
| London range | 08:00–13:00 London | 12:30–17:30 | 13:30–18:30 |
| US data (most releases) | 08:30 New York | 18:00 | 19:00 |
| Breakout window | 08:30–12:00 New York | 18:00–21:30 | 19:00–22:30 |
| Close any open trade | 15:00 New York | 00:30 (next day) | 01:30 (next day) |
Twice a year the two countries are out of step. From 25 October to 1 November 2026, UK clocks have gone back but US clocks haven't, so London's 1 p.m. close comes at 9 a.m. New York time (18:30 IST). The script waits for the London range to finish, so that week New York signals can only start at 9 a.m. The same happens for a few weeks every March. The market hours clock shows the sessions live in IST.
The rules, step by step
1. Mark the London range
On a 15-minute XAUUSD chart, mark the highest high and lowest low from 8 a.m. to 1 p.m. London time, and note the price at 8 a.m. (London's open) and at 1 p.m. (London's close).
2. Read London's direction
If London's close is above its open by at least a quarter of gold's daily ATR, it's a long day. Below by the same amount, a short day. Anything smaller is no trade: London didn't pick a side. With a daily ATR of $58, the move has to be at least $14.50.
3. Wait for New York, and skip the data candle
The breakout window runs from 8:30 a.m. to noon New York time. The 8:30 candle carries most of the big US releases, such as jobs and inflation figures, and gold can spike both ways inside it, so the script ignores signals from that candle by default. If that candle closes beyond the level, the next candle isn't a fresh break, so there's no trade unless the price closes back inside and breaks out again.
4. Take the first fresh close beyond London's high
On a long day, the signal is the first candle that closes above London's high by at least a tenth of the 14-period ATR, after a candle that closed at or below it. That second condition matters: if gold already broke the London high at 1:15 p.m. London time and stayed above it, there's nothing fresh to trade in New York.
5. Stop, target and cut-off
The stop goes at the breakout candle's low or half an ATR below London's high, whichever is further away; skip the trade if that's more than 2.5 × ATR. The target is 2R. Anything still open at 3 p.m. New York time is closed. One trade a day.
Worked example: XAUUSD, 15-minute chart
London opens at 4,281.00 and closes its range at 4,296.40, up $15.40, more than the $14.50 needed. So it's a long day, and London's high of 4,299.20 is the level. At 8:30 a.m. New York time a data release sends gold above the high and back below it inside one candle. It closes back inside, so there's no signal (the script would skip that candle anyway). The 09:00 candle (18:30 IST) then closes at 4,303.70, after the previous candle closed below the level.
| XAUUSD long | |
|---|---|
| Entry | 4,303.70 |
| Stop loss (the breakout candle's low) | 4,296.80, $6.90 away |
| Target (2R) | 4,317.50, $13.80 away |
| Account and risk | $10,000, risking 1% = $100 |
| Lot size | $100 ÷ ($6.90 × 100 ounces) = 0.1449, rounded down to 0.14 lots |
| Loss if the stop is hit | $96.60 |
| Profit at the target | $193.20 |
The candle's low, 4,296.80, is further below the level than half an ATR, so it's the stop. Gold reaches the target by 11:15 New York time. A tight stop like this one is the advantage of buying close to the level, and also the risk: a single spike back into the range takes it out.
US data, the Fed and the 3 p.m. cut-off
- 8:30 a.m. releases. Jobs, inflation and retail sales figures usually come out at 8:30 a.m. New York time (18:00 IST in summer, 19:00 IST in winter). Spreads can widen and fills can slip. The gold news guide covers how gold tends to react.
- Fed days. The Federal Reserve's rate decisions come out at 2 p.m. New York time, before this strategy's 3 p.m. cut-off. On those days, close the trade before the announcement or skip the day.
- Friday afternoons. Liquidity thins as London goes home. The cut-off keeps you out of the weekend.
Risk management
- Size from the stop. Stops in this strategy are often small, which means larger lot sizes. Never size by feel: $7 on gold at 0.14 lots is $98.
- Watch the spread. At 8:30 a.m. New York time the spread on gold can be several times its normal size for a minute or two.
- One trade a day, and no second attempt after a stop-out.
- Prop firm accounts: many firms limit trading in the minutes around big releases. The default skip of the 8:30 candle helps, but read your firm's rule.
Common mistakes
- Trading against London. If London fell and New York breaks the high, that's a different setup with different odds. These rules don't take it.
- Buying the data spike. The 8:30 candle often runs through a level and closes back inside. Wait for a close.
- Forgetting the clock changes. In late October and March the London range ends at 9 a.m. New York time, not 8 a.m.
- Holding through the Fed. A 2 p.m. decision can move gold more in a minute than the whole morning did.
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 London move threshold (0 to 0.5 × the daily ATR), the data-candle skip on and off, the cut-off at 1 p.m. against 3 p.m. New York time, and the 2R target against 1.5R. Then switch the direction rule off by setting the threshold to 0 and see what London's direction adds.
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, New York and IST times, a worked example and a checklist, to keep next to your chart.
Show the code (Pine Script v6, 92 lines)
//@version=6
// XAUUSD New York Session strategy by PipLedger (https://pipledgerfx.com/xauusd-new-york-session-strategy)
// Marks the London session high and low (8 a.m. to 1 p.m. London time). In the New York morning it trades a fresh close beyond that range, only in the direction London moved.
// Free to use and change. For education and backtesting only; not financial advice.
strategy("PipLedger: XAUUSD New York Session", shorttitle="Gold New York", 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
lonTz = input.string("Europe/London", "London time zone")
nyTz = input.string("America/New_York", "New York time zone")
lonSess = input.session("0800-1300", "London range (London time)")
nySess = input.session("0830-1200", "Breakout window (New York time)")
closeHour = input.int(15, "Close any open trade at (hour, New York time)", minval=1, maxval=23)
moveD = input.float(0.25, "London must move at least (x daily ATR 14) from its open to its close", minval=0.0, step=0.05)
bufAtr = input.float(0.1, "Close beyond the range by at least (x ATR 14)", minval=0.0, step=0.05)
stopAtr = input.float(0.5, "Stop at least this far behind the level (x ATR)", minval=0.0, step=0.1)
maxStopAtr = input.float(2.5, "Skip if the stop is further than (x ATR)", minval=0.5, step=0.25)
skipData = input.bool(true, "Skip signals from 8:30 to 8:45 New York (US data releases)")
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
inLon = not na(time(timeframe.period, lonSess, lonTz))
inNy = not na(time(timeframe.period, nySess, nyTz))
inData = not na(time(timeframe.period, "0830-0845", nyTz))
cutoff = timestamp(nyTz, year(time, nyTz), month(time, nyTz), dayofmonth(time, nyTz), closeHour, 0)
// ---------- London range and direction
var float lHi = na
var float lLo = na
var float lOpen = na
var float lClose = na
var bool lonEnd = false // true once the London range is complete
var bool done = false
if inLon and not inLon[1]
lHi := high
lLo := low
lOpen := open
lClose := close
lonEnd := false
done := false
else if inLon
lHi := math.max(lHi, high)
lLo := math.min(lLo, low)
lClose := close
if not inLon and inLon[1]
lonEnd := true
// 1 = London rallied, -1 = London fell, 0 = no clear move (no trade)
lonDir = na(dAtr) or na(lOpen) ? 0 : lClose - lOpen >= moveD * dAtr ? 1 : lOpen - lClose >= moveD * dAtr ? -1 : 0
// ---------- Signals: the first fresh close beyond the London high (or low) in the New York window
canTrade = inNy and lonEnd and not done and strategy.position_size == 0 and time_close < cutoff and not (skipData and inData)
longSl = math.min(low, lHi - stopAtr * atr)
shortSl = math.max(high, lLo + stopAtr * atr)
longSig = canTrade and lonDir == 1 and close[1] <= lHi and close > lHi + bufAtr * atr and close - longSl <= maxStopAtr * atr
shortSig = canTrade and lonDir == -1 and close[1] >= lLo and close < lLo - bufAtr * atr and shortSl - close <= maxStopAtr * atr
// ---------- Orders
if longSig
float q = calcQty(close, longSl)
if q > 0
strategy.entry("Long", strategy.long, qty=q)
strategy.exit("Long exit", "Long", stop=longSl, limit=close + (close - longSl) * rr)
done := true
if shortSig
float q = calcQty(close, shortSl)
if q > 0
strategy.entry("Short", strategy.short, qty=q)
strategy.exit("Short exit", "Short", stop=shortSl, limit=close - (shortSl - 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="New York cut-off")
// ---------- Chart
plot(lonEnd ? lHi : na, "London high", color=color.new(color.teal, 0), linewidth=2, style=plot.style_linebr)
plot(lonEnd ? lLo : na, "London low", color=color.new(color.orange, 0), linewidth=2, style=plot.style_linebr)
bgcolor(inLon ? color.new(color.gray, 92) : na, title="London range")
bgcolor(inNy and lonEnd ? color.new(color.blue, 94) : na, title="New York window")
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. MCX closes before the 3 p.m. New York cut-off, so if you trade it there set the script's close hour to 13 (1 p.m. New York time), which comes before the MCX close in both summer and winter (go earlier if your broker squares off intraday positions before the close). 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 London session, XAUUSD intraday pivots, gold Donchian breakout. All 34 strategies are compared on one page in forex trading strategies.