How to Automate Trading at a Futures Prop Firm: 3 Routes — NinjaTrader, TradingView, and APIs — and the Steps to Get a Bot Running on FTMO Futures (September 2026)
Note: Each firm's rules were confirmed against official help articles between September 21-25, 2026 (for detail, see Futures prop firms: a full review of automated-trading rules across 28 firms). The step-by-step section describes work the site owner actually did on an FTMO Futures evaluation account in September 2026. Account numbers and strategy details are not included.
📢 Advertising / affiliate disclosure: This site does not hold affiliate links for any futures prop firms. The links in this article are ordinary links to official sites.
TL;DR
- Futures props don't have MT4/MT5. An EA won't run as-is, so you need to rebuild it in one of three ways: NinjaTrader (NinjaScript), TradingView + a relay service, or an API.
- NinjaTrader is the most straightforward. It connects directly to the account and can run continuously on a PC or a VPS. The language is C#.
- Choose a firm based on whether it explicitly allows automated trading AND explicitly allows a VPS. FTMO Futures and FundedNext Futures are the only two that check both boxes.
- Topstep allows bots, but only via its API, only from a home PC, and not on live accounts. Apex banned automated trading starting March 2026.
- The four things that trip up the code are bar timing, time zones, the forced-liquidation time, and rolling contract months.
How it works: what a futures prop account actually connects to
With FX props, you log into "an MT5 server the firm provides." Futures props work differently — the firm creates the account on a connection such as Tradovate or Rithmic, and the trader places orders from whatever platform supports that connection.
| Connection | Main firms | Platforms usable for automation |
|---|---|---|
| Tradovate / CQG | FTMO Futures, FundedNext Futures, MFFU, Tradeify, E8 Futures, Lucid Trading (CQG accounts) | NinjaTrader, TradingView (automation via a relay service) |
| Rithmic | Bulenox, Lucid Trading (Rithmic accounts) | NinjaTrader (Bulenox), Quantower, Sierra Chart, MultiCharts, and others |
| TopstepX (ProjectX) | Topstep | TopstepX API |
Whether you can automate depends on both "the firm's rules" and "what the platform supports" — this is the big difference from FX.
The three ways to automate
| Method | Where it runs | Language | Best for | Watch out for |
|---|---|---|---|---|
| ① NinjaTrader's NinjaScript | Your own PC or a VPS (NinjaTrader kept running) | C# | Traders porting an MT5 EA. Bots that trade on time/price conditions | If the PC/VPS stops, the bot stops too |
| ② TradingView alerts + a relay service | TradingView's servers → a relay service (PickMyTrade, TradersPost, etc.) → the account | Pine Script | Traders who already have a strategy written in Pine | TradingView only fires the alert — the relay service handles the actual order. You end up paying two subscriptions, and some firms charge extra (Bulenox charges $100/month for a third-party API connection). Whether you're even allowed to use a relay service needs to be checked firm by firm |
| ③ API | A program you write yourself | Whatever you like — Python, etc. | Traders who want to own the entire pipeline | Tradovate's API can't be used on prop accounts (details below). In practice this means Topstep's TopstepX API ($29/month, sim accounts only) or Bulenox's Rithmic connection ($100/month) |
Tradovate's API cannot be used on prop firm accounts. Tradovate's official help article "Tradovate API Access" (updated September 16, 2026) explicitly states: "Prop firm and evaluation accounts are not eligible for API access." Using the API requires your own funded account with a balance of $1,000+ and a $25/month add-on. On Tradovate-based firms like FTMO Futures or MFFU, "writing your own program to place orders" is simply not possible through this route.
If you already have an MT5 EA, route ① is the closest match. If your EA is the kind that says "open at this time, close at that time" and "stop-loss is $X," the logic can be rewritten in C# almost as-is.
Which firms support which method
| Firm | Automated trading | NinjaTrader | TradingView | API | VPS |
|---|---|---|---|---|---|
| FTMO Futures | ⭕ Explicitly allowed (self-built assumed) | ⭕ | ⭕ | — | ⭕ Explicitly allowed |
| FundedNext Futures | ⭕ Explicitly allowed | ⭕ | ⭕ | — | ⭕ Allowed per the help center (the terms say IP changes need prior approval, so a fixed IP is the safe route) |
| MyFundedFutures | ⭕ OK if it's your own configured strategy | ⭕ | ⭕ | — | Not stated |
| Lucid Trading | ⭕ Allowed | ⭕ (CQG accounts) | ⭕ (CQG accounts) | — | Not stated |
| Bulenox | ⭕ Self-built only (commercial/shared not allowed) | ⭕ (Rithmic) | $100/month via a relay | Same as left | Not stated |
| Topstep | ⭕ API only | — | — | ⭕ $29/month, not on live | ✕ Home PC only |
| Apex | ✕ Banned starting March 2026 | — | — | — | — |
If you're running this 24 hours a day, putting it on a VPS is the normal move, so FTMO Futures and FundedNext Futures — the two that explicitly allow a VPS — are the top candidates. For a comparison of pricing and expected value, see FTMO Futures expected value and FundedNext Futures expected value.
Step by step: getting a NinjaTrader bot running on FTMO Futures
These are the steps the site owner followed to port a gold time-window EA that had been running on MT5 over to NinjaTrader, and run it on an FTMO Futures Pro $50K evaluation account.
| # | Step | Notes |
|---|---|---|
| 1 | Buy an FTMO Futures challenge | NinjaTrader / Tradovate / TradingView all become usable automatically as platforms |
| 2 | Install NinjaTrader 8 and log in with the NinjaTrader credentials shown in the client area | No separate license needed to be purchased |
| 3 | Answer the market data agreement | Individuals should select Non-Professional. Being classified as a professional raises market data fees |
| 4 | Check that the FTMO account appears on the Accounts tab of the Control Center | Make sure the connection (Tradovate) shows green, as Connected |
| 5 | Put the strategy's .cs file in Documents\NinjaTrader 8\bin\Custom\Strategies\ and press F5 (compile) in the NinjaScript Editor | OK if the error list is empty |
| 6 | Backtest with the Strategy Analyzer and cross-check it trade-by-trade against the MT5 results | In the site owner's case, all 207 trades over a year lined up, with a 98% match on win/loss |
| 7 | Add the strategy to a 1-minute chart of the contract-month symbol (e.g., MGC 12-26) | Set the Account to the evaluation account (don't leave it on Sim101 or Playback) |
| 8 | Enable it with Start behavior set to Wait until flat | This setting keeps it from holding a position the instant it's enabled |
| 9 | Run at minimum lot size for two weeks, logging fills, slippage, and close times daily | Add more accounts once there are no issues |
What porting it revealed was that handling "time" and "the symbol" is more work than the logic itself. The next section covers this.
Four things that trip up the code
1. Bar timestamps mark "when the bar ended"
NinjaTrader's 1-minute bars are timestamped with when the bar ended. A bar displayed as 10:00 covers 9:59-10:00. On top of that, with the default Calculate = On bar close, the decision is made after the bar closes, and the order fills on the next bar. An MT5 EA that "opens exactly at 10:00" will, unmodified, open at 10:01 instead.
If you want to open exactly on time, set Calculate to On each tick, and only make the decision on the first tick of each bar (see the sample code below).
2. Convert to ET before doing time-based checks
A futures trading day starts at 18:00 and ends at 17:00, US Eastern Time (ET). Since a VPS might be set to Japan time or US time, doing time-based checks by converting the platform's time to ET first means it doesn't matter where the VPS is located. It also automatically adjusts for US daylight saving/standard time.
| Event | ET | JST (US summer time) | JST (US winter time) |
|---|---|---|---|
| CME daily maintenance | 17:00-18:00 | 6:00-7:00 | 7:00-8:00 |
| FTMO Futures forced liquidation | 16:10 | 5:10 the next morning | 6:10 the next morning |
In 2026, the US switches back to standard time on November 1, so any time written in JST will shift by an hour.
3. Close positions yourself before forced liquidation
FTMO Futures force-closes all positions at 16:10 ET. Rather than relying on that forced liquidation, set the bot up to close everything itself a few minutes earlier (e.g., 16:05 ET). If you rely on the forced close, you lose control over exactly when and at what price your position gets closed.
4. You have to roll the contract month yourself
NinjaTrader runs on a specific contract month, like "MGC 12-26." Before the contract enters its delivery period, you need to roll the chart's symbol to the next contract month. Micro gold (MGC) only has contract months in even-numbered months, and the first delivery notice date for the December contract is November 30, 2026.
Sample code (NinjaScript)
This is a minimal example: "buy 1 contract at a given ET time, close it at another given ET time, stop-loss in ticks." It incorporates fixes 1 through 4 above. The symbol and times are just examples with no trading rationale behind them.
using System;using System.ComponentModel.DataAnnotations;using NinjaTrader.Cbi;using NinjaTrader.NinjaScript;
namespace NinjaTrader.NinjaScript.Strategies{ public class TimeWindowSample : Strategy { private TimeZoneInfo tzEt; private DateTime lastEntryDay = DateTime.MinValue;
[NinjaScriptProperty, Display(Name = "EntryEt(HHmm)", Order = 1)] public int EntryEt { get; set; } [NinjaScriptProperty, Display(Name = "ExitEt(HHmm)", Order = 2)] public int ExitEt { get; set; } [NinjaScriptProperty, Display(Name = "FlattenEt(HHmm)", Order = 3)] public int FlattenEt { get; set; } [NinjaScriptProperty, Display(Name = "StopTicks", Order = 4)] public int StopTicks { get; set; }
protected override void OnStateChange() { if (State == State.SetDefaults) { Name = "TimeWindowSample"; Calculate = Calculate.OnEachTick; // 各足の最初のティックで判定する EntriesPerDirection = 1; StartBehavior = StartBehavior.WaitUntilFlat; IsExitOnSessionCloseStrategy = false; // 手仕舞いは FlattenEt で自前管理 BarsRequiredToTrade = 1; EntryEt = 1000; ExitEt = 1130; FlattenEt = 1605; StopTicks = 40; } else if (State == State.Configure) { SetStopLoss(CalculationMode.Ticks, StopTicks); } else if (State == State.DataLoaded) { tzEt = TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time"); } }
protected override void OnBarUpdate() { if (CurrentBar < BarsRequiredToTrade) return; if (Calculate != Calculate.OnBarClose && !IsFirstTickOfBar) return;
// 実運用では「今始まった足」の開始時刻、バックテストでは足の終了時刻で判定する DateTime barTime = State == State.Realtime ? Time[0].AddMinutes(-BarsPeriod.Value) : Time[0]; DateTime et = TimeZoneInfo.ConvertTime(barTime, NinjaTrader.Core.Globals.GeneralOptions.TimeZoneInfo, tzEt); int hhmm = et.Hour * 100 + et.Minute;
// 時間帯の終わり・強制決済前は閉じる if (Position.MarketPosition == MarketPosition.Long && (hhmm >= ExitEt || hhmm >= FlattenEt)) { ExitLong("TIME-EXIT", "L"); return; }
// 1日1回だけ、時間帯の中で建てる if (Position.MarketPosition == MarketPosition.Flat && hhmm >= EntryEt && hhmm < ExitEt && hhmm < FlattenEt && lastEntryDay != et.Date) { lastEntryDay = et.Date; EnterLong(1, "L"); } } }}For real use, add a daily loss cap on top of this (stop before the day's cumulative losses reach the firm's daily loss limit). On FTMO Futures Pro $50K, the daily loss limit is a hard rule at $1,000 — touch it and you're disqualified instantly.
Terms-of-service traps
| Firm | Trap |
|---|---|
| FTMO Futures | A commercial EA risks having the funded account rejected (a unique strategy is required). Using a different lot size between evaluation and funded may count as an "Evaluation vs. Sim-Funded Mismatch." There's also an API limit on order count |
| Lucid Trading | There are reports of closures citing "coordinated trading among multiple users." Don't share the same bot with someone else |
| Bulenox | Commercial, shared, rented, or publicly distributed automation tools are banned |
| Tradeify | As proof of ownership, you may be asked for a live video of yourself launching the code |
| Topstep | Placing orders from a VPS, VPN, or remote server is banned. The API can't be used on live accounts, so the bot stops working |
| Common to all firms | HFT, tick scalping, and hedging across accounts are usually banned. Most firms allow copying across your own accounts, but copying with someone else is banned at nearly every firm |
FAQ
Q. Can I use an MT5 EA as-is on a futures prop firm?
No. Futures props don't have MT5, so you need to rewrite it in something like NinjaScript. If your EA trades on time and price conditions, the rewrite isn't that large.
Q. Do I have to leave my PC running all the time?
With the NinjaTrader route, the bot won't run unless NinjaTrader is running. You either leave your home PC on, or put it on a VPS. If you use a VPS, choose a firm that explicitly allows a VPS (FTMO Futures, FundedNext Futures).
Q. Can I hold positions overnight?
Most futures props require you to close everything by the end of the day. On FTMO Futures, the deadline is 5:10 JST the next morning (6:10 JST in winter). An EA built around holding overnight needs to be rebuilt so it never crosses a day boundary.
Q. How many contracts should I start with?
Run it at the minimum contract size for two weeks, confirm that it's opening and closing at the intended times and check how much slippage there is, then scale up. The site owner also started with 1 micro gold contract.
Reference links
- Tradovate API Access (Tradovate official help, updated September 16, 2026)
- FundedNext Futures Trading Platforms (FundedNext official)
- Lucid Trading Supported Platforms (Lucid official help, July 28, 2026)
- FTMO Futures FAQ: which instruments you can trade and what strategies are allowed
- TopstepX API Access (Topstep official help)
Related articles
- Futures prop firms: a full review of automated-trading rules across 28 firms — where you can actually run a bot
- A beginner's guide to futures prop rules — contract size, trailing DD, daily loss limits
- FTMO Futures complete guide
- FTMO Futures challenge expected value
- Expected value summary for 6 automation-friendly futures props
- FTMO Futures vs. Topstep compared
Written by
Hosono P | the prop firm strategist
I buy challenges with my own money and record everything through to the payout. Recorded payouts: ¥6.1M in total from Fintokei, Fundora and Funded7, plus $4,776 from The5ers (as of September 2026). Author of the semi-discretionary EA "ELDRA".