Pine Script Strategy for FundedNext Prop Firm
FundedNext runs a static drawdown and a two-phase evaluation — a combination that suits systematic strategies better than most trailing-drawdown firms. Here's how to configure one.
FundedNext has built a reputation among newer prop firms for a clean, static-drawdown structure and a straightforward two-phase evaluation. For a Pine Script algo strategy, the static floor is the headline feature — it removes the single biggest source of surprise on a trailing-drawdown account.
FundedNext evaluation rules (50k tier)
| Phase | Profit target | Max daily loss | Max drawdown | Min days |
|---|---|---|---|---|
| Phase 1 (50k) | $3,000 (6%) | $1,000 | $2,500 | 5 days |
| Phase 2 (50k) | $1,500 (3%) | $1,000 | $2,500 | 5 days |
| Funded (50k) | No target | $1,000 | $2,500 | — |
Both phases share a single static drawdown floor of $2,500 — it doesn't reset between phases, and per firms.js it's explicitly fixed from the starting balance — explicit and repeated ("fixed at day one," "floor never rises").
Why the two-phase structure suits algo strategies
- Phase 1 is the real test — a 6% target that most strategies need two to three weeks of consistent performance to clear.
- Phase 2 is lower stakes — only a 3% target under identical rules. A strategy that cleared Phase 1 rarely struggles here.
- The drawdown limit carries over between phases, which rewards a consistent strategy rather than resetting risk tolerance partway through.
Key rules to code into a strategy
Daily loss kill switch
With a $1,000 daily loss limit on the 50k tier, an internal kill switch around $800 leaves room for slippage on the final exit. Track a running daily P&L variable that resets each session and blocks new entries once it crosses the threshold.
Minimum trading days per phase
Each phase requires trading on at least 5 separate calendar days. A very selective strategy — one or two signals a week — may need three or four weeks to log enough days per phase; make sure a session filter isn't so tight that the strategy goes dark for multiple consecutive sessions.
Weekend and holiday flatten
No positions should carry over a weekend. A Friday afternoon close trigger, extended to the day before any market holiday, keeps the account flat when nothing can be managed.
Wider ATR stops
Because the drawdown floor never trails, a slightly wider ATR multiple than a trailing-drawdown account can tolerate — roughly 0.8–1.0x ATR on MES or MNQ — cuts down on noise-driven stop-outs without adding real risk to the fixed floor.
Sample Pine Script — EMA + VWAP for a static-drawdown account
This is an original EMA-trend-plus-VWAP-filter strategy built around FundedNext's static drawdown: a wider ATR stop takes advantage of the floor never moving, and a session filter plus EOD/weekend flatten keep it inside the evaluation's structure.
//@version=5
strategy("FundedNext — EMA + VWAP", overlay = true,
default_qty_type = strategy.fixed, default_qty_value = 1)
// ── FundedNext 50k: static drawdown, $1,000 daily loss ─────────────
dailyLossLimit = input.float(800.0, "Kill Switch ($)")
atrMult = input.float(1.0, "ATR Stop Multiplier") // wider: static DD
rrRatio = input.float(1.5, "Reward:Risk Ratio")
// ── session window ──────────────────────────────────────────────────
inSession = not na(time("1", "0930-1130:23456", "America/New_York"))
// ── daily kill switch ────────────────────────────────────────────────
isNewDay = ta.change(time("D")) != 0
var float dayOpenEquity = na
dayOpenEquity := isNewDay ? strategy.equity : dayOpenEquity
tradingHalted = math.min(0.0, strategy.equity - dayOpenEquity) <= -dailyLossLimit
// ── trend + mean-reversion filter ───────────────────────────────────
ema20 = ta.ema(close, 20)
ema50 = ta.ema(close, 50)
vwapVal = ta.vwap(hlc3)
atrVal = ta.atr(14)
longCond = ta.crossover(close, ema20) and ema20 > ema50 and close > vwapVal and barstate.isconfirmed
shortCond = ta.crossunder(close, ema20) and ema20 < ema50 and close < vwapVal and barstate.isconfirmed
canTrade = inSession and not tradingHalted and strategy.position_size == 0
if longCond and canTrade
stopDist = atrMult * atrVal
strategy.entry("L", strategy.long)
strategy.exit("L-x", "L", profit = stopDist * rrRatio / syminfo.mintick, loss = stopDist / syminfo.mintick)
if shortCond and canTrade
stopDist = atrMult * atrVal
strategy.entry("S", strategy.short)
strategy.exit("S-x", "S", profit = stopDist * rrRatio / syminfo.mintick, loss = stopDist / syminfo.mintick)
// ── weekend / EOD flatten ────────────────────────────────────────────
fridayFlat = dayofweek == dayofweek.friday and not na(time("1", "1459-1501:6", "America/New_York"))
eodFlat = not na(time("1", "1529-1531:23456", "America/New_York"))
if (fridayFlat or eodFlat) and strategy.position_size != 0
strategy.close_all("Flatten") Contract sizing by account size
| Account size | Contract | Starting count | Max daily risk (~80% of limit) |
|---|---|---|---|
| $25k | MES | 1–2 | $400 |
| $50k | MES or MNQ | 2–3 | $800 |
| $100k | MES or MNQ | 4–6 | $1,600 |
| $200k | MES or MNQ | 8–12 | $3,200 |
Why the profit split matters as accounts scale
On FundedNext's higher-tier split, a $3,000 profit month on a 50k funded account nets meaningfully more than the same result at a lower split elsewhere. That difference compounds for algo traders running the same strategy across several funded accounts simultaneously — the split, not just the win rate, decides how much of the edge reaches the trader.
FundedNext vs. TradeDay
Both firms lean toward algo-friendly rules, with a few structural differences:
- FundedNext runs a two-phase structure — more total evaluation time, but a lower Phase 2 target makes it easier to clear once Phase 1 is done.
- TradeDay is typically single-phase, which can mean a faster path to funded for a strategy that performs from day one.
- Drawdown type — FundedNext is static; TradeDay's own page describes a trailing floor without specifying EOD vs. intraday, so verify current terms before assuming either behaves like Apex's or Topstep's trail.
Running the same strategy on both a TradeDay and a FundedNext account in parallel is a common approach among algo traders — it caps any single loss at the evaluation fee rather than account capital, while doubling the chance one of the two clears first.