The London breakout day trading strategy is designed for forex intraday trading, capitalizing on the London session price action with simple breakout logic. It combines specific trading hours and price behavior patterns for short-term profits.
Trade only during London session hours on weekdays, e.g. GMT 0400-0500.
Determine short-term trend: go long on 3 consecutive up candles, go short on 3 consecutive down candles.
Long signal: enter long when seeing 3 up candles in a row.
Short signal: enter short when seeing 3 down candles in a row.
Stop loss/take profit: set stop loss and take profit at certain percentage from entry price.
Exit rules: exit at stop loss/take profit triggers, or at London session finish.
The strategy purely uses simple breakout signals to capture short-term trends, with strict risk management to control risk/reward per trade.
Trades only during highly active London hours
Simple price breakout logic for signals
Strict stop loss/take profit controls risks
Avoids low liquidity night and holiday sessions
Clear entry and exit rules
Potential premature or delayed entry issues
Risks of being trapped
Opportunities may emerge during nights/holidays
Key support/resistance levels need attention
The London breakout day trading strategy suits short-term intraday trading very well, evading chaotic periods and exiting with profits during high liquidity. With parameter tuning it can adapt to more assets for effective short-term trading.
/*backtest
start: 2023-09-07 00:00:00
end: 2023-09-08 09:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("time zone", overlay=true, initial_capital=1000)
fromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
fromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
fromYear = input(defval = 2000, title = "From Year", minval = 1970)
//monday and session
// To Date Inputs
toDay = input(defval = 31, title = "To Day", minval = 1, maxval = 31)
toMonth = input(defval = 12, title = "To Month", minval = 1, maxval = 12)
toYear = input(defval = 2020, title = "To Year", minval = 1970)
startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp(toYear, toMonth, toDay, 00, 00)
time_cond = true
s = input(title="Session", type=input.session, defval="0400-0500")
s2 = input(title="eXOT", type=input.session, defval="0300-0900")
t1 = time(timeframe.period, s)
t2 = time(timeframe.period, s2)
c2 = #0000FF
//bgcolor(t1 ? c2 : na, transp=85)
UseHAcandles = input(false, title="Use Heikin Ashi Candles in Algo Calculations")
//
// === /INPUTS ===
// === BASE FUNCTIONS ===
haClose = UseHAcandles ? security(heikinashi(syminfo.tickerid), timeframe.period, close) : close
haOpen = UseHAcandles ? security(heikinashi(syminfo.tickerid), timeframe.period, open) : open
haHigh = UseHAcandles ? security(heikinashi(syminfo.tickerid), timeframe.period, high) : high
haLow = UseHAcandles ? security(heikinashi(syminfo.tickerid), timeframe.period, low) : low
isMon() => dayofweek(time('D')) == dayofweek.monday
isTue() => dayofweek(time('D')) == dayofweek.tuesday
isWed() => dayofweek(time('D')) == dayofweek.wednesday
isThu() => dayofweek(time('D')) == dayofweek.thursday
isFri() => dayofweek(time('D')) == dayofweek.friday
isSat() => dayofweek(time('D')) == dayofweek.saturday
isSun() => dayofweek(time('D')) == dayofweek.sunday
longe = input(true, title="LONG only")
shorte = input(true, title="SHORT only")
//sl=input(0.001, title="sl % price movement")
//accbalance = strategy.initial_capital + strategy.netprofit
entry = close
sl = input(0.005, title = "Stop Loss")
tp = input(0.005, title="Target Price")
// sldist = entry - sl
// tgdist = tp - entry
// slper = sldist / entry * 100
// tgper = tgdist / entry * 100
// rr = tgper / slper
// size = accbalance * riskper / slper
balance = strategy.netprofit + 50000 //current balance
floating = strategy.openprofit //floating profit/loss
risk = input(1,type=input.float,title="Risk % of equity ") //risk % per trade
temp01 = (balance * risk)/100 //Risk in USD
temp02 = temp01/close*sl //Risk in lots
temp03 = temp02*100000 //Convert to contracts
size = temp03 - temp03%1000 //Normalize to 1000s (Trade size)
if(size < 1000)
size := 1000 //Set min. lot size
longC = haClose> haClose[1] and haClose[1] > haClose[2] and haClose[2] < haClose[3]
shortC = haClose < haClose[1] and haClose[1] < haClose[2] and haClose[2] > haClose[3]
luni = input(true, title="Monday")
marti = input(true, title="Tuesday")
miercuri = input(true, title="Wednesday")
joi = input(true, title="Thursday")
vineri = input(true, title="Friday")
if(time_cond)
if(t1)
if(luni==true and dayofweek == dayofweek.monday)
if(longC and longe )
strategy.entry("long",1)
if(shortC and shorte)
strategy.entry("short",0)
if(marti==true and dayofweek == dayofweek.tuesday)
if(longC and longe )
strategy.entry("long",1)
if(shortC and shorte)
strategy.entry("short",0)
if(miercuri==true and dayofweek == dayofweek.wednesday)
if(longC and longe )
strategy.entry("long",1)
if(shortC and shorte)
strategy.entry("short",0)
if(joi==true and dayofweek == dayofweek.thursday)
if(longC and longe)
strategy.entry("long",1)
if(shortC and shorte)
strategy.entry("short",0)
if(vineri==true and dayofweek == dayofweek.friday)
if(longC and longe)
strategy.entry("long",1 )
if(shortC and shorte)
strategy.entry("short",0)
//strategy.exit("closelong", "RSI_BB_LONG" , profit = close * 0.01 / syminfo.mintick, loss = close * 0.01 / syminfo.mintick, alert_message = "closelong")
//strategy.exit("closeshort", "RSI_BB_SHORT" , profit = close * 0.01 / syminfo.mintick, loss = close * 0.01 / syminfo.mintick, alert_message = "closeshort")
strategy.exit("sl","long", loss = close * sl / syminfo.mintick, profit = close * tp / syminfo.mintick)
strategy.exit("sl","short", loss=close * sl / syminfo.mintick, profit = close * tp / syminfo.mintick)
//strategy.close("long")
//strategy.close("short" )
//strategy.exit("sl","long", loss = sl)
//strategy.exit("sl","short", loss= sl)
if(not t2)
strategy.close_all()
//strategy.risk.max_intraday_filled_orders(2)