Home › Resources › Goat Funded Trader Pine Script
Pine Script Strategy for Goat Funded Trader
Goat Funded Trader (GFT) has grown into one of the more trader-friendly prop firms in the futures space. Their rules lean less restrictive than Apex, their payout process has a solid track record, and they offer evaluation accounts across a range of sizes. Here's how to configure a Pine Script algo strategy to pass a GFT evaluation cleanly.
Goat Funded Trader evaluation rules
| Account Size | Profit Target | Max Daily Loss | Max Drawdown | Drawdown Type |
|---|---|---|---|---|
| $25,000 | $1,500 | $500 | $1,500 | Intraday trailing |
| $50,000 | $3,000 | $1,000 | $2,500 | Intraday trailing |
| $100,000 | $6,000 | $2,000 | $4,000 | Intraday trailing |
| $150,000 | $9,000 | $3,000 | $5,000 | Intraday trailing |
How GFT's trailing floor behaves
Because the floor tracks your highest intraday equity, a winning trade raises your floor the moment it peaks — not when you close it. Consider a 50k account:
- GFT / Apex-style intraday trailing: Start at $50,000, floor at $47,500. A trade runs to +$2,000 unrealized → floor moves to $49,500 immediately. If the trade gives back $1,200 before you close it, your equity is $50,800 but the floor already sits at $49,500 — your live cushion is $1,300, not the $2,500 you started with.
Winning days don't add cushion the way they would on a static-drawdown firm (MyFundedFutures, Funded Next) — the floor has already moved up to reflect the peak. Size and manage exits with that in mind rather than assuming profit banks extra room.
Recommended contracts and sizing for GFT evals
| Account | Contract | Starting Count | Max Stop Size | Max Daily Loss per Trade |
|---|---|---|---|---|
| $25k | MES | 1-2 | 10 points | $100 per trade (20% of daily limit) |
| $50k | MES or MNQ | 2-3 | 12 points MES / 40 ticks MNQ | $200 per trade |
| $100k | MES or MNQ | 4-6 | 12 points MES / 40 ticks MNQ | $400 per trade |
Pine Script configuration checklist for GFT
Daily loss kill switch
GFT's daily loss limit is firm — exceeding it fails the account. Set your kill switch at 80% of the daily limit. On the 50k account, that's $800. Once daily realized + unrealized losses hit $800, the strategy stops placing new orders for the rest of the session.
No overnight positions
GFT requires all positions to be flat before the session close on Friday (before weekends) and before major holidays. Build a flatout trigger into your strategy: at 4:00 PM ET on Fridays and on the last trading day before a holiday, force-close any open positions regardless of profit/loss status.
Session filter
GFT doesn't impose explicit session restrictions on most accounts, but your strategy should still be limited to RTH for best performance. Recommended windows:
- 9:30 AM – 11:30 AM ET (primary session)
- 1:30 PM – 3:15 PM ET (afternoon session — good for MES/ES)
ATR-based stop sizing
GFT uses the same intraday trailing mechanic as Apex, so size stops the same conservative way: a 0.75x ATR stop keeps the floor from chasing a wide intraday swing before you can close the position. Don't widen the stop on the assumption that GFT's drawdown is more forgiving — it isn't.
Complete GFT strategy — Pine Script v5
EMA crossover filtered by VWAP direction, configured for a 50k GFT account (intraday trailing DD $2,500, daily loss $1,000, kill at $800). Uses a 0.75x ATR stop, sized the same as our Apex accounts since GFT's drawdown trails intraday the same way.
//@version=5
strategy("GFT — EMA Crossover + VWAP Filter", overlay=true,
default_qty_type=strategy.fixed, default_qty_value=1)
// ── GFT 50k: intraday trailing DD $2,500, daily limit $1,000, kill at 80% ─
dailyLossLimit = input.float(800.0, "Kill Switch ($)")
fastLen = input.int(9, "Fast EMA Length")
slowLen = input.int(21, "Slow EMA Length")
atrMult = input.float(0.75, "ATR Stop Multiplier")
rrRatio = input.float(1.5, "Reward:Risk Ratio")
// ── sessions: morning + afternoon ─────────────────────────────────
inSession = not na(time("1", "0930-1130:23456", "America/New_York")) or
not na(time("1", "1330-1515:23456", "America/New_York"))
// ── daily kill switch ──────────────────────────────────────────────
newDay = ta.change(time("D")) != 0
var float ds = 0.0
ds := newDay ? strategy.equity : ds
halted = math.min(0.0, strategy.equity - ds) <= -dailyLossLimit
// ── EMA crossover + VWAP filter ───────────────────────────────────
fastEMA = ta.ema(close, fastLen)
slowEMA = ta.ema(close, slowLen)
vwap = ta.vwap(hlc3)
atrVal = ta.atr(14)
longCond = ta.crossover(fastEMA, slowEMA) and close > vwap and barstate.isconfirmed
shortCond = ta.crossunder(fastEMA, slowEMA) and close < vwap and barstate.isconfirmed
canTrade = inSession and not halted and strategy.position_size == 0
if longCond and canTrade
sl = atrMult * atrVal
strategy.entry("L", strategy.long)
strategy.exit("L-x", "L", profit = sl * rrRatio / syminfo.mintick,
loss = sl / syminfo.mintick)
if shortCond and canTrade
sl = atrMult * atrVal
strategy.entry("S", strategy.short)
strategy.exit("S-x", "S", profit = sl * rrRatio / syminfo.mintick,
loss = sl / syminfo.mintick)
// ── EOD / weekend flat ─────────────────────────────────────────────
eod = not na(time("1", "1529-1531:23456", "America/New_York")) or
(dayofweek == dayofweek.friday and
not na(time("1", "1459-1501:6", "America/New_York")))
if eod and strategy.position_size != 0
strategy.close_all("EOD")
Hitting the profit target on GFT's timeline
GFT requires a minimum of 5 trading days on most plans (verify the current terms at goatfundedtrader.com — rules update periodically). That rules out a one-session pass, but it's still one of the shorter minimums in the industry — if your strategy hits the profit target by day 5, you're done.
The flip side: don't rush. GFT's drawdown trails from your highest account balance, so a strong early run raises your floor and leaves less room for the sessions after it. A steadier approach with consistent small wins across the 5+ days is lower risk than front-loading the profit target in 2-3 aggressive sessions and trading the rest of the eval close to the trail.
GFT vs other prop firms for Pine Script traders
| Feature | Goat Funded Trader | Apex | Topstep |
|---|---|---|---|
| Drawdown type | Intraday trailing | Intraday trailing | EOD trailing |
| Min trading days | 5 | 1 | 10 days |
| Consistency rule | No | Yes (30%) | No |
| Eval fee (50k) | ~$150-$250 | ~$150 | ~$165 |
| Payout split | 80-90% | 90% | 90% |
GFT's lack of a consistency rule makes it one of the cleaner evaluation structures for algorithmic strategies with moderate variance — if your strategy has occasional larger winning days, GFT won't penalize you for them the way Apex's consistency rule would. The drawdown itself trails the same way Apex's does, so size stops accordingly.
Pine Script strategies ready for Goat Funded Trader evaluations.
Intraday-trailing-aware sizing, daily kill switches, and session filters included.
View PlansInvite-only on TradingView · Monthly subscription · Cancel anytime