Home › Resources › Goat Funded Trader Pine Script

Pine Script Strategy for Goat Funded Trader

Updated June 2026 · ~10 min read

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.

1

Goat Funded Trader evaluation rules

Account SizeProfit TargetMax Daily LossMax DrawdownDrawdown Type
$25,000$1,500$500$1,500Intraday trailing
$50,000$3,000$1,000$2,500Intraday trailing
$100,000$6,000$2,000$4,000Intraday trailing
$150,000$9,000$3,000$5,000Intraday trailing
Confirm current per-tier daily loss and drawdown figures at goatfundedtrader.com before sizing a live account — GFT's tiered numbers are not independently verified against the firm's current terms.
GFT trails your drawdown floor from your highest intraday balance — the same mechanic Apex uses, not a static floor. A new intraday high moves the floor up immediately, even if the position later gives that profit back.
2

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.

3

Recommended contracts and sizing for GFT evals

AccountContractStarting CountMax Stop SizeMax Daily Loss per Trade
$25kMES1-210 points$100 per trade (20% of daily limit)
$50kMES or MNQ2-312 points MES / 40 ticks MNQ$200 per trade
$100kMES or MNQ4-612 points MES / 40 ticks MNQ$400 per trade
4

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.

5

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")
6

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.

7

GFT vs other prop firms for Pine Script traders

FeatureGoat Funded TraderApexTopstep
Drawdown typeIntraday trailingIntraday trailingEOD trailing
Min trading days5110 days
Consistency ruleNoYes (30%)No
Eval fee (50k)~$150-$250~$150~$165
Payout split80-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 Plans

Invite-only on TradingView · Monthly subscription · Cancel anytime