Home › Resources › TradingView to Tradovate Automation
How to Automate TradingView Alerts to Tradovate (Apex & Topstep Compatible)
Tradovate is the default execution platform for Apex Trader Funding evaluations and is also supported by Topstep. TradingView can generate signals from any Pine Script strategy, but it cannot place orders directly. To automate the full pipeline — from a chart signal in TradingView to a live order in your Tradovate eval account — you need a webhook bridge in the middle. This guide walks through the exact setup using TradersPost, with PickMyTrade as an alternative option.
What you need before starting
Before you touch a single webhook URL, make sure you have all four of these in place:
- TradingView account — The Essential plan ($14.95/mo or higher) is required. The free plan does not support webhook alerts. Pro/Pro+ work fine.
- Apex or Topstep eval account on Tradovate — Your account credentials from Apex or Topstep give you access to a Tradovate environment. Log in at least once to confirm it's active before starting the bridge setup.
- TradersPost account — The bridge service that accepts TradingView webhooks and routes them to Tradovate. Free tier is available; the Solo plan covers one broker connection and is sufficient for most traders. PickMyTrade is a valid alternative covered in the PickMyTrade + Apex setup guide.
- A Pine Script strategy with alert conditions — Your script needs to emit alerts on entry and exit. Strategies from our store come pre-wired with the correct alert payload format.
Step 1 — Set up your webhook in TradersPost
TradersPost acts as the middleman between TradingView and Tradovate. Here is how to get a live webhook URL:
- Create an account at traderspost.io. The Solo plan is sufficient for a single prop firm eval.
- In the dashboard, go to Brokers → New Connection and select Tradovate. You will go through an OAuth flow that grants TradersPost read/write access to your Tradovate account. Select your Apex or Topstep eval account specifically — not a live funded account.
- Go to Strategies → New Strategy. Set the symbol (e.g.
MESorMNQ), quantity, and order type. TradersPost maps the symbol name for you, so you can use the generic contract identifier. - Once the strategy is saved, TradersPost generates a unique webhook URL in the format:
https://webhooks.traderspost.io/trading/webhook/<uuid>/<token>. Copy this URL — you will paste it into TradingView in Step 3.
Step 2 — Configure your Pine Script alert
Your Pine Script needs to fire an alert that TradersPost can parse. There are two ways to do this in Pine Script v5:
Option A: strategy.entry / strategy.exit (recommended)
If you use strategy.entry() and strategy.exit() calls, you can set TradingView to fire alerts on "Order fills only." TradersPost reads the order direction from the JSON payload you supply in the alert message. Here is the standard payload format our scripts use:
{
"ticker": "{{ticker}}",
"action": "{{strategy.order.action}}",
"quantity": {{strategy.position_size}},
"price": {{close}},
"sentiment": "{{strategy.market_position}}"
}
Option B: alertcondition()
If your script uses alertcondition() instead of strategy calls, you define the condition manually and wire a separate alert for each direction. Example:
longCondition = ta.crossover(ta.ema(close, 9), ta.ema(close, 21))
shortCondition = ta.crossunder(ta.ema(close, 9), ta.ema(close, 21))
alertcondition(longCondition, title="Long Entry", message='{"ticker":"MES","action":"buy","quantity":1}')
alertcondition(shortCondition, title="Short Entry", message='{"ticker":"MES","action":"sell","quantity":1}')
For each alertcondition(), you will create a separate alert in TradingView and point it to the same TradersPost webhook URL.
Step 3 — Create the TradingView alert
With your Pine Script on the chart and your TradersPost webhook URL copied, create the alert in TradingView:
- Right-click anywhere on the chart and select Add Alert, or press
Alt+A. - In the Condition row, select your strategy name from the first dropdown. In the second dropdown, select Order fills only (for strategy scripts) or the specific
alertconditionname. - Scroll down to the Notifications section. Check Webhook URL and paste your TradersPost URL into the field that appears.
- In the Message box, paste the JSON payload from Step 2. TradingView will expand the
{{placeholders}}at alert fire time. - Set expiration to a date far in the future (TradingView alerts expire by default — set at least 6 months out).
- Click Create.
Prop firm compliance checklist
Before you go live on any Apex or Topstep eval account, verify that your Pine Script includes the following. These features are required to stay within prop firm rules — getting flagged for a rule violation is worse than a losing trade.
- Kill switch input — A manual toggle that disables all new entries without closing existing positions. Useful if you want to pause the strategy mid-day.
- Session filter — Limits trading to Regular Trading Hours (RTH: 9:30 AM – 4:00 PM ET for equities, 8:30 AM – 3:00 PM CT for futures). Most prop firms forbid holding positions during overnight sessions on eval accounts.
- Bar-close entries — Use
strategy(..., calc_on_every_tick=false)so entries only fire on confirmed bar closes, not intrabar ticks. This prevents lookahead bias in backtesting and avoids erratic intrabar order behavior in live trading. - EOD flatten — Force-close all positions at a set time before market close. Apex eval accounts typically require flat positions by end of day.
- Daily loss limit — A hard stop that disables entries if the day's realized + unrealized loss exceeds a threshold you set. This mirrors the Apex daily drawdown limit at the strategy level.
Free code snippets for all of the above are available at propfirmpinescripts.com/snippets/.
Common issues and fixes
The most frequent problems traders hit when wiring TradingView to Tradovate for the first time:
- Alert fires but no order appears in Tradovate. First check the TradersPost webhook log — every received payload shows up there with a success or error status. The most common cause is a malformed JSON payload (missing quote, wrong field name). Validate the JSON with a free tool like jsonlint.com.
- Order fills at the wrong price. This usually means the alert fired on an intrabar tick rather than bar close. Confirm
calc_on_every_tick=falsein your strategy declaration and set the TradingView alert to "Once per bar close." - Duplicate fills. The TradingView alert is set to "Once per bar" instead of "Order fills only." Switch the alert condition to fills-only, or add a
strategy.risk.allow_entry_in()guard in Pine Script to prevent re-entries in the same direction. - Symbol not found in Tradovate. Tradovate uses contract codes like
MESM26for the June 2026 front month. TradersPost handles the front-month rollover automatically when you use the generic symbol likeMESin the strategy config.
Skip the wiring — get a strategy that's already set up.
Every Pine Script from our store ships with the TradersPost JSON payload pre-filled, session filters, kill switch, EOD flatten, and a PDF setup guide. Plug in the webhook URL and you are live.
View PlansOne-time payment · Instant delivery · No subscription