Pre Market Breakout Trading Strategy
This strategy trades breakouts during the pre-market hour, using moving average and momentum indicators to determine short-term trends to trade at peak volatility. It is a typical short scalping strategy. Strategy…
This strategy trades breakouts during the pre-market hour, using moving average and momentum indicators to determine short-term trends to trade at peak volatility. It is a typical short scalping strategy.
Strategy Logic:
Define pre-market range as within 1 hour of open.
Use 50-period EMA to gauge fair price range.
SMI crossover at lows signals long entry.
Closing below EMA is stop loss signal.
Take fixed profit target for short-term scalping.
Advantages:
Breaking short-term EMA shows intraday trend.
SMI confirms bottom reversals.
Limited backtest parameters make live trading simple.
Risks:
Breakouts prone to pre-market traps, beware reversals.
Single daily session Unable to defend against gaps.
Tight stops inclined to premature exit if calibrated poorly.
In summary, this is a typical pre-market short scalping strategy using EMA/SMI to ride high volatility breakouts. But the risk of pre-market traps is high, requiring small position sizing and disciplined stop loss.
Parameters
| Name | Default | What it controls |
|---|---|---|
| v_input_1 | StartDate | Start of trading |
| v_input_2 | EndDate | End of trading |
| v_input_3 | 100 | Quantity |
| v_input_4 | 5 | Percent K Length |
| v_input_5 | 3 | Percent D Length |
| v_input_float_1 | 40 | Over Bought |
| v_input_6 | -40 | Over Sold |
| v_input_7 | 50 | EMA50Len |
| v_input_8 | 10 | Take Profit % |
Source Pine Script
/*backtest
start: 2022-09-12 00:00:00
end: 2023-09-12 00:00:00
period: 4d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
args: [["v_input_7",65]]
*/
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Trading_Bites
//@version=5
// strategy('Morning Scalp', overlay=false, pyramiding=2, initial_capital=3000, default_qty_value=0, commission_value=0.02, max_labels_count=500)
// Initial Inputs
StartDate = timestamp('15Aug 2022 14:00 +0000')
EndDate = timestamp('15Aug 2022 20:00 +0000')
testPeriodStart = input(StartDate, 'Start of trading')
testPeriodEnd = input(EndDate, 'End of trading')
QuantityOnLong = input(title="Quantity", defval=100, minval=1)
QuantityOnClose = QuantityOnLong
//////////////////////////////////////////////////////////////////////
//-- Time In Range
timeinrange(res, sess) =>
not na(time(res, sess))
//Market Open//
marketopen = '0930-1600'
MarketOpen = timeinrange(timeframe.period, marketopen)
//////////////////////////////////////////////////////////////////////
//Market Hour//
morning = '1000-1210'
Morning = timeinrange(timeframe.period, morning)
//////////////////////////////////////////////////////////////////////////
//STOCK MOMENTUM INDEX//
a = input(5, 'Percent K Length')
b = input(3, 'Percent D Length')
ovrsld = input.float(40, 'Over Bought')
ovrbgt = input(-40, 'Over Sold')
//lateleave = input(14, "Number of candles", type=input.integer)
// Range Calculation
ll = ta.lowest(low, a)
hh = ta.highest(high, a)
diff = hh - ll
rdiff = close - (hh + ll) / 2
// Nested Moving Average for smoother curves
avgrel = ta.ema(ta.ema(rdiff, b), b)
avgdiff = ta.ema(ta.ema(diff, b), b)
// SMI calculations
SMI = avgdiff != 0 ? avgrel / (avgdiff / 2) * 100 : 0
SMIsignal = ta.ema(SMI, b)
CrossoverIndex = ta.crossover(SMI, SMIsignal)
CrossunderIndex = ta.crossunder(SMI, SMIsignal)
plot1 = plot(SMI, color=color.new(color.aqua, 0), title='Stochastic Momentum Index', linewidth=1, style=plot.style_line)
plot2 = plot(SMIsignal, color=color.new(color.red, 0), title='SMI Signal Line', linewidth=1, style=plot.style_line)
hline = plot(ovrsld, color=color.new(color.red, 0), title='Over Bought')
lline = plot(ovrbgt, color=color.new(color.green, 0), title='Over Sold')
plot(CrossoverIndex ? close : na, color=color.new(color.aqua, 0), style=plot.style_cross, linewidth=2, title='RSICrossover')
mycol1 = SMIsignal > -ovrbgt ? color.red : na
mycol2 = SMIsignal < -ovrsld ? color.green : na
fill(plot1, hline, color=color.new(mycol1, 80))
fill(plot2, lline, color=color.new(mycol2, 80))
//////////////////////////////////////////////////////////////////////
// Input EMA9 and EMA21
EMA50Len = input( 50 )
EMA50 = ta.ema(close, EMA50Len)
//////////////////////////////////////////////////////////////////////////
// -------- VWAP ----------//
vwapLine = ta.vwap(close)
////////////////////////////////////////////////////////////////////////
//PROFIT TARGET//
longProfitPer = input(10.0, title='Take Profit %') / 100
TargetPrice = strategy.position_avg_price * (1 + longProfitPer)
//plot (strategy.position_size > 0 ? TargetPrice : na, style=plot.style_linebr, color=color.green, linewidth=1, title="Price Target")
//BUY STRATEGY CONDITION//
condentry = ta.crossover(SMI, SMIsignal) and SMI < 0
profittarget = TargetPrice
stoploss = close < EMA50
///////////////////////////STRATEGY BUILD//////////////////////////////////////
if MarketOpen
if close > EMA50
if (condentry) and Morning
strategy.entry('Long', strategy.long)
if profittarget and strategy.position_size > 0
strategy.exit(id="Long", limit=TargetPrice)
if stoploss
strategy.close('Long' )
Published by ChaoZhang on the FMZ strategy square · last modified 2023-09-13. 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/Pre-Market-Breakout-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
- Bull Market Tracking SystemPine Script · Breakout · 1h
- Multi Filter Trend Breakthrough Smart Moving Average Trading StrategyPine Script · Breakout · 1h
- Quantitative Breakout Strategy First Hour ATR Stop Loss with EMA Slope OptimizationPine Script · Breakout · 1h
- Quantitative Strategy PSARZigZagMACDART Based on Multi Indicator CombinationPine Script · Breakout · 1m
- Quantitative Trading Price Breakthrough StrategyPine Script · Breakout · 1d
- Dual Moving Average and MACD Combination Short term Trading StrategyPine Script · Breakout · 1h