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)