PipLedger
Today's forex newsNFP, CPI, FOMC and other high-impact eventsEconomic calendarCalendar →

Asian session strategy: fading the Tokyo range, with IST times and a free Pine Script

The Asian session is the quiet part of the forex day, and quiet markets tend to go back and forth inside a range. This strategy uses that: it marks the high and low of the first two Tokyo hours and sells near the top or buys near the bottom, aiming for the middle. For traders in India it has one more advantage: Japan doesn't change its clocks, so the times in IST are the same all year. Here are the rules, a worked USDJPY example with the lot size and a free TradingView script.

By M. A. Horaira. Updated 10 October 2026. 11 minute read.

The rules at a glance

  • Market: USDJPY on the 15-minute chart (other yen and Australian dollar pairs work too)
  • Range: the high and low of the first two Tokyo hours, 9 to 11 a.m. Tokyo time (05:30 to 07:30 IST, all year: Japan doesn't change its clocks)
  • Range size: between 0.15 and 0.5 times the daily ATR (14); skip the day otherwise
  • Entry: from 11 a.m. to 2 p.m. Tokyo time (07:30 to 10:30 IST): a candle that reaches the range high (within 0.1 ATR) and closes back below it as a bearish candle; sell at that close (the mirror image at the range low)
  • Stop loss: half an ATR beyond the range edge, or at the candle's high (low) if that's further
  • Target: the middle of the range; skip the trade if that's less than 1R away
  • Stand aside: after a close more than half an ATR outside the range: the market is trending; one trade a day, closed by 3 p.m. Tokyo time (11:30 IST)

Why the Asian session ranges

Most forex volume goes through London and New York. In the Tokyo hours, the euro and the pound are usually quiet, and even the yen often moves in a narrower band than later in the day. With fewer large orders pushing in one direction, prices tend to bounce between a high and a low. A range strategy tries to sell the top of that band and buy the bottom.

This is the opposite of the London breakout, which waits for the price to leave the Asian range at the London open. The two don't clash: this strategy is out of the market by 3 p.m. Tokyo time, before London opens.

The timings in IST

Japan uses Tokyo time all year, three and a half hours ahead of India, so these IST times don't change when Europe and the US move their clocks.

Tokyo timeIST (all year)
Tokyo session opens09:0005:30
Tokyo fix (Japanese banks set the day's customer rates)09:5506:25
End of the range11:0007:30
Trading window11:00–14:0007:30–10:30
Close any open trade15:0011:30
London opens (for reference)16:00 or 17:0012:30 or 13:30

The Tokyo fix at 9:55 a.m. Tokyo time falls inside the range hours. Yen pairs can move around it, which is one reason the range is measured over two hours rather than one.

The rules, step by step

1. Mark the first two Tokyo hours

On a 15-minute USDJPY chart, mark the highest high and lowest low from 9 to 11 a.m. Tokyo time.

2. Check the range size

The range must be between 0.15 and 0.5 times the daily ATR. A tiny range leaves no room between the edge and the middle; a huge one suggests the day is already trending. The script reads the daily ATR up to yesterday.

3. Fade a touch of the edge

From 11 a.m. to 2 p.m. Tokyo time, wait for a candle that reaches the range high (within a tenth of the 15-minute ATR) and closes back below it as a bearish candle. Sell at that close. At the range low, it's the mirror image: a bullish candle that closes back above the low.

4. Stop beyond the edge, target the middle

The stop goes half an ATR above the range high, or at the candle's high if that's further. The target is the middle of the range. If the middle is less than 1R away, skip the trade.

5. Know when to stand aside

If a candle closes more than half an ATR outside the range, the range has broken and the day may be trending: no more fades. One trade a day, and anything still open at 3 p.m. Tokyo time (11:30 IST) is closed.

Worked example: USDJPY, 15-minute chart

First two Tokyo hours11:00 TokyoStop 152.629Entry 152.497Target 152.360Pokes the highMiddle of the range
Illustrative chart drawn for this guide to show the rules. It isn't a real day's prices. USDJPY, 15-minute candles from 9 a.m. Tokyo time.

The first two Tokyo hours run from 152.160 to 152.560, a range of 40 pips. With a daily ATR of 105 pips, that's inside the 0.15 to 0.5 band. After 11 a.m. the price drifts back up. The 12:00 Tokyo candle (08:30 IST) pokes up to 152.575, above the range high, and closes at 152.497, back inside and lower than it opened. Half the 13.9-pip ATR above the range high puts the stop at 152.629.

USDJPY short
Entry152.497
Stop loss152.629, 13.2 pips away
Target (middle of the range)152.360, 13.7 pips away, just over 1R
Pip value¥1,000 a lot, about $6.56 at 152.50
Lot size at 1% of $10,000$100 ÷ (13.2 pips × $6.56) = 1.155, rounded down to 1.15 lots
Loss if the stop is hitabout $100
Profit at the target¥15,755, about $103

USDJPY slides back towards the middle and reaches it by 13:15 Tokyo time (09:45 IST). The reward here is only about 1R, which is typical of range fades: the target is close, so the strategy needs a high share of winners. On the days the range breaks instead, the stop-out comes quickly.

What breaks a range fade

Risk management

Common mistakes

  1. Fading every touch. Wait for the close back inside; a candle that closes outside is a breakout, not a fade.
  2. Holding into London. London's open often breaks the Asian range. Be out by 3 p.m. Tokyo time.
  3. Using a target past the middle. The far side of the range is reached less often. Test it before using it.
  4. Trading euro pairs in Tokyo with this method without testing first: they can be quieter still, with wider spreads relative to the range.

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.

  1. Open the chart. On TradingView, open USDJPY on the 15-minute chart.
  2. 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".
  3. 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.
  4. 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.
  5. Change one setting at a time. Compare the range hours (one hour against two), the range size band, the stop distance beyond the edge, and the target at the middle against 0.75 of the way across. Then try AUDUSD and AUDJPY, which are also active in the Tokyo hours.

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 Tokyo and IST times, a worked example and a checklist, to keep next to your chart.

Show the code (Pine Script v6, 85 lines)
//@version=6
// Asian Session range strategy by PipLedger (https://pipledgerfx.com/asian-session-strategy)
// Marks the high and low of the first two hours of Tokyo trading (9 to 11 a.m. Tokyo time), then fades the edges of that range until 2 p.m. Tokyo time, aiming for the middle of the range.
// Free to use and change. For education and backtesting only; not financial advice.
strategy("PipLedger: Asian Session Range Fade", shorttitle="Asian Range", 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("Asia/Tokyo", "Session time zone (Japan has no daylight saving)")
rangeSess = input.session("0900-1100", "Range: first two Tokyo hours (Tokyo time)")
tradeSess = input.session("1100-1400", "Trading window (Tokyo time)")
closeHour = input.int(15, "Close any open trade at (hour, Tokyo time)", minval=1, maxval=23)
minRangeD = input.float(0.15, "Skip if the range is narrower than (x daily ATR 14)", minval=0.0, step=0.05)
maxRangeD = input.float(0.5, "Skip if the range is wider than (x daily ATR 14)", minval=0.05, step=0.05)
touchAtr  = input.float(0.1, "A touch counts within (x ATR 14) of the edge", minval=0.0, step=0.05)
stopAtr   = input.float(0.5, "Stop at least this far beyond the edge (x ATR)", minval=0.0, step=0.1)
breakAtr  = input.float(0.5, "No more trades today after a close this far outside the range (x ATR)", minval=0.1, step=0.1)
minRR     = input.float(1.0, "Skip if the middle of the range is less than this many R away", 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 (JPY on USDJPY, converted to USD)
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))
cutoff  = timestamp(tz, year(time, tz), month(time, tz), dayofmonth(time, tz), closeHour, 0)

// ---------- 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)

mid     = (rHigh + rLow) / 2
rangeOk = not na(rHigh) and not na(dAtr) and rHigh - rLow >= minRangeD * dAtr and rHigh - rLow <= maxRangeD * dAtr

// a clear close outside the range means the market is trending today: stop fading it
if inTrade and not inRange and (close > rHigh + breakAtr * atr or close < rLow - breakAtr * atr)
    done := true

// ---------- Signals: a touch of an edge, then a close back inside, against the edge
canTrade = inTrade and not inRange and not done and rangeOk and strategy.position_size == 0 and time_close < cutoff
shortSl  = math.max(high, rHigh + stopAtr * atr)
longSl   = math.min(low, rLow - stopAtr * atr)
shortSig = canTrade and high >= rHigh - touchAtr * atr and close < rHigh and close < open and close - mid >= minRR * (shortSl - close)
longSig  = canTrade and low <= rLow + touchAtr * atr and close > rLow and close > open and mid - close >= minRR * (close - longSl)

// ---------- Orders
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=mid)
        done := true

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=mid)
        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="Tokyo cut-off")

// ---------- Chart
plot(rHigh, "Range high", color=color.new(color.red, 0), linewidth=2, style=plot.style_linebr)
plot(rLow, "Range low", color=color.new(color.teal, 0), linewidth=2, style=plot.style_linebr)
plot(mid, "Range middle (target)", color=color.new(color.gray, 30), style=plot.style_linebr)
bgcolor(inRange ? color.new(color.gray, 90) : na, title="Range hours")
plotshape(shortSig, "Fade the high", shape.triangledown, location.abovebar, color.red, size=size.small)
plotshape(longSig, "Fade the low", shape.triangleup, location.belowbar, color.teal, size=size.small)

Trading this from India

Residents can trade EURUSD, GBPUSD and USDJPY futures and options on NSE and BSE through a SEBI-registered broker. The contracts are quoted the same way as the spot pair, one lot is 1,000 units of the base currency, and they're cash-settled in rupees. They trade only from 9 a.m. to 7:30 p.m. IST, volumes are thin and not every broker offers them, so check the hours and the spread first. USDJPY futures trade on NSE and BSE, but only from 9 a.m. IST, after this range has formed and half the window has gone, so on an Indian exchange only the second half of the window, 9:00 to 10:30 IST, can be traded. Trading forex or CFDs with offshore online platforms isn't allowed for residents under FEMA, even if the app is easy to download. Details are in is forex trading legal in India.

Related strategies: London breakout, opening range breakout, ICT kill zones, previous day high and low, XAUUSD London session, XAUUSD New York session, New York opening range. All 40 strategies are compared on one page in forex trading strategies.

Quick answers

What time is the Asian session in IST?

The Tokyo session opens at 9 a.m. Tokyo time, which is 5:30 a.m. IST all year, because Japan doesn't use daylight saving time. The Sydney session starts earlier. This strategy uses 05:30 to 07:30 IST for the range and trades until 10:30 IST.

Which pairs move in the Asian session?

Yen pairs such as USDJPY, and Australian and New Zealand dollar pairs, are the most active in the Tokyo hours. Euro and pound pairs are usually quieter until London opens.

Is the Asian session good for range trading?

It's often quieter, which suits range strategies, but not every day: data releases, central bank news or a strong move from New York can break the range. Test the rules on your pair with the free script.

What is the Tokyo fix?

It's the rate Japanese banks set at 9:55 a.m. Tokyo time (6:25 a.m. IST) for the day's customer currency transactions. Yen pairs can move around it, which is why this strategy measures its range over two hours.

How is this different from the London breakout?

The London breakout trades the price leaving the Asian range when London opens. This strategy trades inside the range during Tokyo hours and is flat before London opens.

Can I trade the Asian session from India?

The timing suits early risers in India: 5:30 to 11:30 a.m. IST. On the exchange, NSE's USDJPY contract only opens at 9 a.m. IST, so only the end of the window can be traded there.

More guides

All 81 guides →

हिंदी में पढ़ें: Lot size kaise nikale?, Prop firm challenge kaise pass kare?, Gold trading kaise kare?, Forex trading kya hai, और India में यह legal है या नहीं?

Trading psychology

The habits that decide whether a good strategy makes money.

All 14 trading psychology guides

8 popular prop firms

Well-known firms for forex, gold and index traders that were still operating in 2026. Compare their rules before you buy a challenge.

If a link in this list is a referral link, PipLedger may earn a commission if you sign up, at no extra cost to you. This list is not a recommendation. Programs, prices and rules change often, so check each firm's own site, including its margin and drawdown rules, before you buy a challenge.