London Breakout Day Trading Strategy
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…
Strategy Overview
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.
Strategy Logic
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.
Advantages of the Strategy
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
Risk Warnings
Potential premature or delayed entry issues
Risks of being trapped
Opportunities may emerge during nights/holidays
Key support/resistance levels need attention
Conclusion
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.
Parameters
| Name | Default | What it controls |
|---|---|---|
| v_input_1 | true | From Day |
| v_input_2 | true | From Month |
| v_input_3 | 2000 | From Year |
| v_input_4 | 31 | To Day |
| v_input_5 | 12 | To Month |
| v_input_6 | 2020 | To Year |
| v_input_7 | 0400-0500 | Session |
| v_input_8 | 0300-0900 | eXOT |
| v_input_9 | false | Use Heikin Ashi Candles in Algo Calculations |
| v_input_10 | true | LONG only |
| v_input_11 | true | SHORT only |
| v_input_12 | 0.005 | Stop Loss |
| v_input_13 | 0.005 | Target Price |
| v_input_14 | true | Risk % of equity |
| v_input_15 | true | Monday |
| v_input_16 | true | Tuesday |
| v_input_17 | true | Wednesday |
| v_input_18 | true | Thursday |
| v_input_19 | true | Friday |
Source Pine Script
/*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)
Published by ChaoZhang on the FMZ strategy square · last modified 2023-09-15. Collected in the Quant Trading Vault. Unvalidated research: re-test with your own data and costs before trusting it.
Build this with AgenKit
A spec is not a trading system. Paste this into your coding agent and AgenKit runs a specialist team — architecture, test-first build, risk gates, review — with paper trading on by default.
/agenkit build a production-grade trading bot with a backtest engine, risk controls and paper trading by default from strategies/London-Breakout-Day-Trading-Strategy.md- npx agenkit install engineering-kit in your project
- Paste the command into your agent and approve each phase
- Get tests, backtest, risk controls and a paper-trading switch
Understand it first
Before you run this, read the lesson behind the idea and how to backtest it honestly. Specs like this one are the survivors of an unknown number of trials; deflate their results accordingly.
Related specs
- Kana Candle Breakout Strategy Based on Moving Average and Support ResistancePine Script · Breakout · 1h
- Quantitative Trading Strategy Based on Ichimoku with Multiple SignalsPine Script · Breakout · 1h
- Moving Average Tracking Trading StrategyPine Script · Breakout · 3h
- Heikin Ashi HighLow Channel Dynamic Moving Average Trading StrategyPine Script · Breakout
- Dynamic Filter Quant Trading StrategyPine Script · Breakout · 1d
- Momentum Breakout Moving Average Trading Strategy 436230Pine Script · Breakout · 1d