Nasdaq Futures Pine Script Strategy for Prop Firms
NQ and MNQ combine deep liquidity, strong volatility, and a well-defined RTH session structure — a good match for automated strategies, provided the contract and sizing fit the account's drawdown.
Why NQ and MNQ dominate prop firm trading
The Nasdaq 100 e-mini (NQ) and its micro counterpart (MNQ) are go-to instruments for prop firm traders for a few compounding reasons:
- Extraordinary liquidity. Tight spreads and minimal slippage even across multiple contracts during regular trading hours.
- Volatility relative to margin. NQ regularly covers a large daily range, giving strategies room to reach a profit target without extreme position sizing.
- Defined structure. Pre-market data, the open, midday chop, afternoon continuation — a predictable enough session pattern for a strategy to be built and backtested around.
- Micro contract scaling. MNQ allows starting with very small risk while retaining room to scale contract count as an evaluation progresses.
- Tight correlation to economic data. CPI, FOMC, and earnings seasons create momentum regimes that trend-following and breakout strategies can exploit.
NQ vs. MNQ — which contract for prop firm traders
NQ — the full-size Nasdaq e-mini
NQ moves in 0.25 pts increments worth $5.00 each — $20 per point. Intraday margin varies by broker and is substantial relative to MNQ's. On a standard 50k evaluation with a $2,500 trailing drawdown, a single NQ contract with a 25-point stop risks $500 — a fifth of the entire buffer on one trade. A 50-point stop, conservative for NQ's typical range, can consume the whole cushion. A single NQ contract is simply too large for most evaluation account sizes.
MNQ — micro Nasdaq futures
MNQ is exactly 1/10th of NQ — $0.50 per tick, $2 per point. The same 25-point stop on one MNQ contract risks $50, roughly 2% of a $2,500 drawdown buffer — appropriate sizing for a risk-controlled automated strategy. Starting with 1–3 contracts and scaling to 8–15 as cushion builds on a funded account approaches the economic equivalent of a full NQ contract while keeping drawdown management manageable throughout.
Account size to contract mapping
| Account Size | Drawdown Buffer | Contract | Starting Qty | Guideline Risk/Trade (~2%) |
|---|---|---|---|---|
| $10,000 | $1,000 | MNQ | 1 | ~$20 (10 pts) |
| $25,000 | $1,500 | MNQ | 2 | ~$30 (15 pts × 1) |
| $50,000 | $2,500 | MNQ × 3–5 | 3 | ~$50 (25 pts × 1) |
| $100,000 | $5,000 | MNQ × 8–12 or 1 NQ | 8 MNQ / 1 NQ | $100–$200 target range |
| $150,000+ | $7,500+ | 1–2 NQ or 15+ MNQ | 1 NQ | $300–$500 target range |
RTH vs. ETH for Nasdaq scalping
NQ/MNQ trades nearly around the clock, but the hours aren't equally useful for an automated strategy.
RTH — regular trading hours
The highest volume, tightest spreads, and most reliable signal behavior live here — institutional order flow keeps breakouts sticking and momentum following through. Most successful NQ/MNQ prop firm strategies restrict all trading to RTH, particularly the first couple of hours after the open when volume peaks. Backtesting on RTH data and then deploying a strategy that also trades ETH is a common and costly mistake — the two sessions have different statistical properties.
Pre-market ETH
Elevated volume can appear around scheduled early data releases, but the book is thinner and spreads wider than RTH. Most prop-firm-safe strategies either skip this window or run a more conservative configuration with wider stops.
Overnight ETH
Low volume, wide spreads, and price moves that frequently reverse completely by the RTH open. Strategies should not trade this window, and every NQ/MNQ script should carry a strict session filter blocking entries outside RTH.
Key Pine Script parameters for NQ/MNQ strategies
Pivot high/low detection for scalp entries
Pivot structure — higher lows in an uptrend, lower highs in a downtrend — is one of the more reliable entry frameworks for NQ/MNQ scalping. Pine Script's built-in pivot functions handle detection cleanly:
// ── Pivot detection — 2-bar lookback for intraday scalping ────────
pivotHi = ta.pivothigh(high, 2, 2)
pivotLo = ta.pivotlow(low, 2, 2)
var float lastSwingHigh = na
var float lastSwingLow = na
if not na(pivotHi)
lastSwingHigh := pivotHi
if not na(pivotLo)
lastSwingLow := pivotLo
// Long entry: price breaks above the last swing high with momentum
breakoutLong = close > lastSwingHigh and close[1] <= lastSwingHigh
breakoutShort = close < lastSwingLow and close[1] >= lastSwingLow ATR trailing stops
NQ can move sharply within a single 5-minute candle during high-volatility periods, so a fixed-point stop tends to get hit too often. ATR-based stops on the 30-minute chart adapt to whatever volatility is actually present:
// ── ATR stop for NQ/MNQ — 30-minute timeframe ──────────────────────
atrLen = input.int(14, "ATR Length")
atrMult = input.float(1.5, "ATR Stop Multiplier", step = 0.1)
atrVal = ta.atr(atrLen)
stopPts = atrVal * atrMult
// Dollar risk per contract:
mnqRisk = stopPts * 2 // MNQ
nqRisk = stopPts * 20 // NQ 30-minute opening range breakout — conceptual logic
A well-backtested approach on MNQ is a 30-minute opening range breakout: the first 30-minute candle after the RTH open defines the range, a break above the high signals long, a break below the low signals short. Target is typically 1–2× the range width, with the stop on the opposite side of the range (or an ATR multiple, whichever is tighter). Key parameters to configure:
- Range window — the first 30 minutes after the open, or a tighter 15-minute window for faster breakouts
- Target multiplier — 1.0–2.0× the range width; higher multipliers catch bigger moves at a lower win rate
- Daily close — flatten all positions at a fixed time regardless of P&L, avoiding close-of-session volatility
- Entry validity window — skip breakouts that occur well after the range closes, since late breaks in midday chop follow through less often
Circuit breaker math
For firms with a published daily loss limit, the circuit breaker calculation for MNQ is straightforward:
// ── Daily circuit breaker (example: Topstep 50k — $1,000 limit) ────
dailyLossLimit = input.float(-900, "Daily Loss Limit ($)", maxval = 0)
// Set below the firm's hard limit to leave a buffer for slippage
var float sessionOpenEquity = na
if ta.change(time("D"))
sessionOpenEquity := strategy.equity
dailyPnl = strategy.equity - sessionOpenEquity
circuitOk = dailyPnl > dailyLossLimit Consistency rule considerations for NQ/MNQ
Apex Trader Funding's funded accounts check a consistency rule at payout time — no single trading day can represent more than 30% of total profit under the legacy cap (50% on the firm's newer product lines). This has real implications for NQ/MNQ strategies, which can produce very large individual days.
Picture a funded 50k account with a $3,000 profit target. An MNQ strategy catches a trending day early in the funded phase and books $1,200 in one session. To satisfy the consistency check, total profit eventually needs to reach at least $4,000, so that $1,200 is no more than 30% of it — achievable, but it extends the timeline if later days are quieter.
Starting with fewer MNQ contracts naturally caps how large a single day's profit can get. A strategy that averages a modest amount per day has a much lower chance of any single session exceeding 30% of a still-small running total. Once enough total profit is banked that no single day could mathematically hit that share, sizing up for later sessions is safer. See our full Apex consistency rule guide for the mechanics.
- Set an internal daily profit cap that disables new entries once a threshold is hit, preventing any single day from becoming disproportionately large
- Keep contract size consistent day to day rather than pyramiding up after wins
- Be cautious running through major scheduled announcements early in a funded account's life, before much total profit has accumulated
- Review the single-day-vs-cumulative ratio periodically before scaling contract size up