Docs · Automation

Webhook Automation. Chart To Broker.

Everything between a TradingView alert and a filled order: provider choice, alert configuration, payload reference, and the verification steps that catch problems before money is live.

Webhook & Broker Setup

Live Execution Setup.

This is where almost every setup ticket comes from — and the fix is nearly always the same one step. Read the non-negotiable item first, then follow the exact setup for your provider. Bracket prices are computed on the strategy side and embedded in every alert, so there's nothing to parse on the bridge.

Non-negotiable: fill in BOTH Auth Token and Account IDIn the strategy's 🔗 Webhook settings (on Paradox Algo and Kairos, the 🔗 Webhook 1 · Setup section), fill in Auth Token / API Key and Account ID (for PickMyTrade, CrossTrade, and Custom Template — Shifu and TradersPost authenticate by URL, so their fields grey out). If either is blank, the alert still fires — but the payload goes out with empty credentials and your broker bridge silently drops it with no error shown anywhere. This is the single biggest cause of "my alerts aren't firing / nothing reaches my broker." Fill both, every time, before you create the alert.
Just updated to Paradox Algo v7.5 or Kairos Scalper v1.6?1. Open the settings once and confirm the Webhook Provider is still yours. Paradox Algo v7.5 changed that default to Shifu, so a dropdown you never touched moved with it. On PickMyTrade or CrossTrade? Pick it again. 2. Delete the old alert and create a new one. An alert made before the update keeps running the old version. 3. Kairos only: one Display toggle is now called Anchor Line; if you had hidden it, it shows again. Saved settings carry over, and nothing needs re-tuning.

Pre-flight checklist — run through this BEFORE creating any live alert

  • TradingView plan is Essential or higher and 2FA is enabled on your account
  • You loaded the strategy on a chart, not just the indicators (check the bottom panel for the Strategy Tester tab)
  • Chart timeframe matches what you've validated in backtest, or you've imported a preconfigured layout from Discord (see Shared Layouts)
  • Your routing provider account (Shifu, PickMyTrade, TradersPost, CrossTrade, or a Custom Template bridge) is connected to a broker — paper or live, but connected
  • The broker account you'll route to has enough buying power for at least 1 contract of your target symbol
  • Auth Token / API Key and Account ID are both filled in the strategy's 🔗 Webhook inputs (PickMyTrade / CrossTrade / Custom Template — Shifu and TradersPost leave them blank and authenticate by URL) — this is the #1 thing people forget
  • You've configured the rest of the input panel (Preset, Contracts, Prop Firm Settings) and the Webhook Provider shows your platform — Paradox Algo v7.5 opens on Shifu
  • You've run at least one Strategy Tester report on the chart timeframe and reviewed the results
  • You know your daily loss cap in dollars and your max contracts per trade
  • You have a plan for what to do if the strategy halts mid-day (it will if your circuit breaker trips)

How signals flow from chart to broker

TradingView Strategy fires on bar close. Alert built with bracket prices embedded.
Routing Bridge Shifu · PickMyTrade · TradersPost · CrossTrade · Custom Template receives the payload and routes it to your broker.
Broker Tradovate · NinjaTrader · Rithmic · Interactive Brokers · TradeStation · tastytrade · prop-firm sim. Which ones depends on your provider.

Alert condition — by provider

Paradox Algo v7.5 and Kairos Scalper v1.6 ship five built-in providers in the Webhook Provider dropdown: Shifu, PickMyTrade, TradersPost, CrossTrade and Custom Template. Use one setup per alert:

ProviderTradingView Alert ConditionMessage box
Shifualert() function calls onlyleave empty
PickMyTradealert() function calls onlyleave empty
TradersPostalert() function calls onlyleave empty
CrossTrade (recommended)Order fills only{{strategy.order.alert_message}}
CrossTrade (still works, exits at bar close)alert() function calls onlyleave empty
Custom Templatealert() function calls onlyleave empty

On a strategy, TradingView's dialog says alert() function calls only. Older guides, and some Paradox Algo v7.5 tooltips, call it “Any alert() function call”: the same setup. Never pick Order fills and alert() function calls on Paradox Algo or Kairos: it sends every order twice. Quantum Edge uses the same setup for its providers (PickMyTrade, TradersPost, Custom Template).

Aurum uses a different conditionAurum (gold, v1.2) sends every order as its own fill-driven message, so its alert is "Order fills and alert() function calls" with the Message box left pre-filled. "alert() function calls only" sends no trades on Aurum. Paradox Algo, Quantum Edge and Kairos keep the setup above. Details: Aurum setup.
TradersPost's old order-fills method is retiredOn Paradox Algo v7.5 and Kairos Scalper v1.6, the old TradersPost setup (Order fills only with TradersPost's own JSON in the Message box) is not safe. The chart's target, stop and trail fills no longer reach TradersPost that way, and that setup sends no target or stop with the entry, so a position can sit open and unprotected. Switch to the built-in TradersPost provider: close any open position by hand first, then use alert() function calls only with an empty Message box. An alert made before you updated still runs the old version until you re-create it.

Per-provider field mapping

What goes in the strategy's Auth Token / API Key and Account ID inputs, by provider:

ProviderAuth Token / API Key →Account ID →Broker bracket
Shifu— leave blank (greys out)— leave blank (greys out)entry, target, stop and trailing stop at the broker (NinjaTrader and Tradovate)*
PickMyTradeyour PMT tokenyour exact account number (Tradovate, Rithmic or Interactive Brokers)native, broker-side
TradersPost— leave blank (greys out)— leave blank (greys out)target and stop at the broker; the stop trails from entry*
CrossTradeyour CrossTrade keyyour NinjaTrader account name(s), comma-separatedfixed bracket, or ATM template (NT-side trail)
Custom Templatefills the {token} placeholderfills the {account} placeholderdepends on template

*Shifu and TradersPost authenticate through your webhook URL, so the Auth Token and Account ID fields stay blank — they grey out automatically. The strategy builds the bracket into the payload it sends. TradersPost has no trigger-based trail: its stop trails from entry at the full stop distance.

Provider setup

Not sure which one? Tradovate or NinjaTrader account (most prop firms) → PickMyTrade or Shifu. Rithmic account → PickMyTrade + your Rithmic connection name. Already on CrossTrade → CrossTrade (NinjaTrader 8 add-on, or Destination = Tradovate). Anything else → TradersPost or Custom Template (read the TradersPost limits first).

PickMyTrade Official partner · primary recommendation for futures
Official partner — members save 10%Enter PARADOXALGO at PickMyTrade's checkout. Tradovate accounts sign up at pickmytrade.trade, Rithmic accounts at pickmytrade.io (partner links; we may earn a commission, at no extra cost to you). Partner page & setup →

Best for: futures traders on Tradovate (sign up at pickmytrade.trade — including Tradovate-powered prop-firm accounts) or Rithmic (sign up at pickmytrade.io). On Paradox Algo v7.5 and Kairos Scalper v1.6, also Interactive Brokers (pickmytrade.io). Native broker-side bracket support.

Other pickmytrade.io brokers are not supported yet. PickMyTrade also connects ProjectX / TopstepX, TradeStation, Ironbeam, TradeLocker, Tradier, cTrader and Match-Trader, but our products do not send those brokers' message format yet, so their orders would be rejected. Support is in progress. TradeStation accounts can use TradersPost instead.

  1. Sign up at pickmytrade.trade (Tradovate) or pickmytrade.io (Rithmic) and link your broker. Members save 10% with code PARADOXALGO at checkout (partner links).
  2. In the strategy's 🔗 Webhook inputs, set Webhook Provider = PickMyTrade. (Paradox Algo v7.5 opens on Shifu by default, so pick PickMyTrade yourself.)
  3. Set Auth Token / API Key = your PMT token, and Account ID = your exact account number (copy it from PMT — see "Account ID" below). Both must be filled.
  4. On a Rithmic account (v7.4)? Fill the Rithmic Connection Name field in the PickMyTrade section — exactly as it appears in your PMT dashboard (e.g. RITHMIC1). The full bracket and multi-account both carry natively. PickMyTrade sends the trailing stop to Rithmic accounts too. PickMyTrade's own trailing documentation covers Tradovate, so run one Rithmic sim trade before relying on it. On Tradovate? Leave it blank — your payload is unchanged.
  5. PMT — Broker Platform (Paradox Algo v7.5 and Kairos Scalper v1.6 — the last row of the PickMyTrade section): Auto (the default; blank connection name = Tradovate, filled = Rithmic) · Tradovate · Rithmic · Interactive Brokers (connection name required, pickmytrade.io). Interactive Brokers has no trailing stop at PickMyTrade: Kairos sends IB a fixed stop on its own; on Paradox Algo, set PMT — Trail Enable to 0 for an IB account.
  6. Broker Symbol: MNQ1! works — PickMyTrade maps it to the front contract and moves the mapping four days before expiry. An exact contract such as MNQZ6 also works but never rolls, so update it each quarter.
  7. Copy the webhook URL from your PickMyTrade strategy detail page:
    • Multi-broker accounts: https://api.pickmytrade.io/v2/add-trade-data-latest
    • Tradovate-only: https://api.pickmytrade.trade/v2/add-trade-data-latest
    Your token travels in the JSON body the strategy emits — not in the URL. The older app.pickmytrade.com/webhook/... format is deprecated and silently fails.
  8. In TradingView: create the alert → Condition = your strategy + alert() function calls only → Notifications tab → enable Webhook URL → paste the PMT endpoint. Leave the Message box empty.
  9. Test on a demo or paper account first. Confirm the order appears in PMT's order log AND in that broker account.

Nothing to configure on Tradovate. PMT executes through the Tradovate API. The only requirement is that the account is connected inside PickMyTrade — you do not log into Tradovate or set anything up there.

Multiple accounts (v7.3). Enter several account numbers in Account ID, comma-separated, and a single alert fires every one of them — e.g. run your eval and funded accounts side by side. Each must be an exact account number connected inside PickMyTrade.

One PickMyTrade account per algo. PickMyTrade ignores a second same-direction entry from any strategy on that account, so don't point two algos at one account.

Shifu Official partner · built into Paradox Algo v7.5 and Kairos Scalper v1.6
Official partner — members new to Shifu save 25%Enter PARADOXALGO at Shifu's checkout. Pro Annual members get their first month free with a personal code by email. Paradox Algo is an official Shifu partner and may benefit when you subscribe. Shifu is a separate company; its service, pricing, terms and support are its own. Partner page & setup →

Best for: Tradovate or NinjaTrader accounts, including most prop-firm accounts. One alert carries the entry, target, stop and trailing stop, and they rest at the broker. Shifu is the default provider on Paradox Algo v7.5; on Kairos Scalper v1.6, pick it yourself.

  1. At shifu.trade, connect your broker and create a bot. Keep the bot in Market mode, its default. Its webhook link is on the bot's Setup tab.
  2. In the strategy's 🔗 Webhook inputs, set Webhook Provider = Shifu. Leave Auth Token / API Key and Account ID empty: they grey out, and the bot's link is your identity. Every account routed to that bot in Shifu trades from the same alert.
  3. Broker Symbol = the continuous symbol for index futures, e.g. MNQ1! or MES1!. In contract-roll week, type the dated contract your chart is on. On any other market (gold, crude, silver, rates, currencies), always use the dated contract.
  4. Keep PMT — Trail Enable at 1. It is the broker-trail switch for Shifu too; at 0, no trailing stop is sent.
  5. In TradingView: create the alert → Condition = your strategy + alert() function calls only → Notifications tab → enable Webhook URL → paste the bot's link. Leave the Message box empty.
  6. Run one sim trade, then check your broker's order history. The stop should start trailing only after the trigger. If the broker refuses the trigger-based trail, Shifu falls back to a stop that trails from entry at the full stop distance.

Sizing. Your Contracts setting sets the size only while the bot's How to size each trade is on From the TradingView alert (the default for bots made in Shifu's dashboard). Fixed contracts uses the bot's own Default size.

Know the limits. Rithmic account: use PickMyTrade. Shifu's Rithmic route places the entry, target and stop, but it can't hold a separate trail distance and doesn't flatten before a new entry, so our trailing exits won't match the chart there. One algo per contract per account: Shifu flattens that contract before each new entry, so two algos on the same contract in one account close each other's trades. Different contracts or different accounts are fine. Paradox Algo v7.5: use one Shifu bot per chart for now. Two alerts that leave at the same instant for the same side can be read as one alert sent twice, and the second is dropped without an error. Kairos Scalper v1.6 can feed two charts into one bot.

Who helps. Our settings or alerts: our Discord or support@paradoxalgo.com. Your Shifu account, billing or broker connection: support@shifu.trade. Shifu logs every alert it refuses, with the reason, on its Alerts page. Aurum has had Shifu since v1.2 (type the exact gold contract, like MGCZ6), SignalWave v4.2 has it as the default of its optional webhook automation, and Nova AI Trader v2.5 has it too. Quantum Edge gets Shifu with its next update.

TradersPost Built-in as of v7.3 — URL-authenticated

Best for: accounts that don't fit PickMyTrade, Shifu or CrossTrade, such as TradeStation or tastytrade. As of v7.3 the strategy builds the order for you — no JSON to paste.

Read these limits first. TradersPost sends the entry, target and stop. It has no trigger-based trail: its stop trails from entry at the full stop distance. The chart usually exits first, and the broker then stays in the trade until its own stop or target. That's expected, not a bug. Once the chart is flat, no session-end close follows, so on a prop account check TradersPost is flat by your firm's cutoff. For exits that follow the chart, use Shifu or PickMyTrade. Targets and stops need a Tradovate, NinjaTrader, TradeStation or tastytrade connection; the trailing stop needs Tradovate or NinjaTrader (anywhere else, set PMT — Trail Enable to 0).

  1. Sign in at traderspost.io, connect your broker(s), and create a strategy. Copy its webhook URL: https://webhooks.traderspost.io/trading/webhook/<id>/<token>.
  2. In the strategy's 🔗 Webhook inputs, set Webhook Provider = TradersPost. (Paradox Algo v7.5 opens on Shifu, so pick it yourself.) The Auth Token and Account ID fields grey out — TradersPost authenticates through the webhook URL, so leave them blank. Set Broker Symbol to the dated contract with a four-digit year, e.g. MNQZ2026 — never MNQ1!.
  3. In TradingView: create the alert → Condition = your strategy + alert() function calls only → Notifications tab → enable Webhook URL → paste the TradersPost URL. Leave the Message box empty — the strategy supplies the order (market entry, target and stop; stop-limit supported).
  4. Confirm reception in TradersPost's paper mode before going live. For safety in week one, enable "Disable Auto Submit" so you approve each fire manually.

TradersPost-side setting to check. Keep the top “Allow signal overrides” box ticked: it lets the alert's market order type, target, stop and quantity through. Leave “Reject exit if signal is older than” empty: an exit refused as stale can leave the position open with no target or stop. Exit fix in Paradox Algo v7.5 and Kairos Scalper v1.6: exits now cancel the resting target and stop and close the whole position (older versions could leave the bracket working or be rejected). An alert made before you updated keeps the old behavior until you re-create it.

Migrating from QuantLynk? QuantLynk is retired. Flatten any open QuantLynk-managed position, switch Webhook Provider to TradersPost (or PickMyTrade), and re-create your alert. Already using TradersPost's older order-fills method? It is retired on Paradox Algo v7.5 and Kairos Scalper v1.6 — see the note below and switch now.

CrossTrade NinjaTrader 8 or Tradovate — built in since v7.4

Best for: members already on CrossTrade — NinjaTrader 8 through the desktop add-on (the default destination), or Tradovate through CrossTrade's cloud connection. A native provider since Paradox Algo v7.4 and Kairos Scalper v1.5 — no more hand-building custom templates for NinjaTrader.

  1. Sign in to your CrossTrade account and copy your API key. Make sure the CrossTrade add-on is connected to NinjaTrader 8 — or use the Tradovate destination: CrossTrade's cloud connection, generally available since July 2026, with no desktop software. Link the account in CrossTrade → My Account → Brokers; prop accounts such as Apex or Tradeify use “Link Demo”.
  2. In the strategy's 🔗 Webhook inputs, set Webhook Provider = CrossTrade. (Paradox Algo v7.5 opens on Shifu, so pick it yourself.)
  3. Set Auth Token / API Key = your CrossTrade key, and Account ID = your NinjaTrader account name(s) — comma-separated for multiple accounts, one alert fires them all.
  4. Pick your bracket mode. Fixed bracket (default): every entry ships with its target + stop, held at NinjaTrader at the chart's exact prices. ATM mode (the trailing stop): enter the name of your saved NinjaTrader ATM template and NinjaTrader runs your stop, target, and a tick-level auto-trail on its own, with no further alerts needed from TradingView. The trail runs inside NinjaTrader, so keep NinjaTrader open and connected while a trade is live. In NinjaTrader's Chart Trader properties, set the ATM selection to “Select active ATM strategy on order submission”. Otherwise an entry can go in without the template's target and stop. The dashboard's Trail row shows the exact trigger/distance numbers to copy into the template. One rule: your Contracts setting must match the template's contract count. Keep the CrossTrade add-on current (v1.13.9 or newer). NinjaTrader trailing is ATM-template only.
  5. CrossTrade — Mirror Chart Exits is on by default — when the chart closes a trade, the broker closes with it and cancels leftover orders. Leave it on. If you use CrossTrade's trading windows, alerts outside every window are blocked, closes included.
  6. On Tradovate through CrossTrade? Set CrossTrade — Destination = Tradovate; orders route through CrossTrade's cloud. ATM templates are NinjaTrader-only. The CrossTrade — Tradovate Trail row (new in Paradox Algo v7.5 and Kairos Scalper v1.6; Tradovate destination only) decides who runs the trail. Chart (Mirror), the default: Tradovate holds the fixed target and stop, the chart runs the trail, and the mirror sends the close. CrossTrade ATM: the entry carries the target, stop and the trail's trigger and distance; the target and fixed stop rest at Tradovate, and CrossTrade's servers move the trailing stop (if CrossTrade loses pricing, the stop stays where it last was). Run one sim trade first: an ATM that CrossTrade rejects means no entry is placed.
  7. In TradingView — recommended: create the alert → Condition = your strategy + Order fills only → Message = → Notifications tab → enable Webhook URL → paste your CrossTrade webhook URL. Chart exits then reach CrossTrade the moment they happen. The older setup still works: alert() function calls only with an empty Message box, and exits are sent at bar close. Never pick Order fills and alert() function calls: it sends every order twice.
  8. Test on a NinjaTrader sim account first. Confirm the entry, bracket, and an exit-mirror close all arrive.

Strategy tagging is automatic. Every order carries a strategy tag, so Paradox's trades stay in their own lane — other bots on the same NinjaTrader account can't touch them, and Paradox won't touch theirs. Running Kairos on the same account? Each algo keeps its own tag. On Tradovate the tag is accepted but not enforced, so keep other bots on a separate account there.

Custom Template Any other bridge

For any bridge not built in, set Webhook Provider = Custom Template and paste your bridge's exact JSON into the Custom Template field, using the strategy's single-brace placeholders. The strategy substitutes each one at fire time:

  • {symbol} · {action} (buy / sell / flatten) · {qty} · {price}
  • {tp_price} · {sl_price} — absolute bracket prices · {tp_offset} · {sl_offset} — distances in points
  • {token} — fed by your Auth Token / API Key input · {account} — fed by your Account ID input

Flatten Word field. The Flatten Word input controls the exact word the strategy puts in {action} when it closes a position (time-exit, session end, or stop). Set it to whatever your bridge expects for a close — e.g. close, exit, or flat. If your bridge ignores closes, that almost always means the Flatten Word doesn't match what it's looking for.

Your bridge must place the target and stop at the broker from the values sent: the chart's own target, stop and trail closes send no alert for this provider. Alert: alert() function calls only, Message box empty.

TradersPost — legacy order-fills method Retired on v7.5 / v1.6 — migrate

Retired on Paradox Algo v7.5 and Kairos Scalper v1.6. The old method used Order fills only with TradersPost's own JSON in the Message box. It worked through Paradox Algo v7.4 and Kairos Scalper v1.5. In v7.5 and v1.6, the chart's target, stop and trail fills no longer reach TradersPost that way. The setup still sends entries and forced exits, but it carries no target or stop with the entry, so the broker position can sit open and unprotected.

How to migrate. Close any open position by hand first. Then change Webhook Provider to TradersPost, set the Condition to alert() function calls only, clear the Message box, delete the old alert and create a new one. An alert made before you updated still runs the old version until you re-create it. Don't mix methods: never pick “Order fills and alert() function calls,” which sends every order twice.

Where the webhook URL goes

In the TradingView alert dialog, open the Notifications tab → enable Webhook URL → paste your provider's endpoint there. Do not paste it in the Message box (that box is for the payload, which the strategy fills for the built-in providers). For Shifu, it's the link on your bot's Setup tab. For PickMyTrade, copy the endpoint from your strategy detail page in PMT — it's the api.pickmytrade.io/v2/add-trade-data-latest address (or the .trade variant for Tradovate-only accounts).

Account ID must be your exact broker accountA wrong or mistyped Account ID returns "Account Id Not Found" and the order never places. For PickMyTrade, copy your exact Tradovate account number straight from PMT (your connected-account list shows it) and paste it into the strategy's Account ID input — don't retype it from memory.

TradingView plan requirements

Minimum plan: EssentialWebhook alerts (the Webhook URL field) are available on TradingView's Essential plan and above — Pro and Pro+ are fine too. The free plan does NOT include webhook alerts. Alert quotas: Essential 20 · Pro 100 · Premium 400 · Ultimate 2,000. Open-ended alert expiration (no 60-day timer) requires Premium or Ultimate; on lower tiers, alerts expire after ~2 months and must be renewed. 2FA must be enabled on your TradingView account before webhooks will deliver.

Creating the alert — step by step

For the five built-in providers, this is the whole flow. The Condition is alert() function calls only and the Message stays empty — the strategy supplies the payload, bracket prices and all. CrossTrade's recommended setup differs at steps 5 and 7; see the table above.

  1. Open a chart with the Paradox strategy loaded — not just the indicators. Strategies fire alerts on entries/exits; indicators only fire on visual conditions you wire up manually.
  2. Check the Webhook Provider shows your platform (Paradox Algo v7.5 changed the default to Shifu). For PickMyTrade, CrossTrade and Custom Template, fill both Auth Token / API Key and Account ID — skip this and the order goes out with empty credentials. For Shifu and TradersPost, leave both empty.
  3. Click the Alerts button (bell icon) in TradingView, then Create Alert.
  4. In the Condition dropdown (first field), select the strategy's exact name — e.g. Paradox Algo Strategy v7.5 or Kairos Scalper v1.6 [ParadoxAlgo], matching what appears in your Indicators → Invite-Only Scripts list.
  5. In the second field, select . CrossTrade's recommended setup uses Order fills only instead.
  6. Open the Notifications tab, enable Webhook URL, and paste your provider's endpoint there.
  7. Leave the Message field empty — the strategy injects its own JSON payload via alert() with bracket prices, ticker, and direction already filled in. The one exception: CrossTrade's recommended setup puts {{strategy.order.alert_message}} there.
  8. Set the alert Expiration to Open-ended (Premium/Ultimate) or the longest available on your plan. Re-create when it expires.
  9. Click Create. Verify the alert appears in the Alerts panel with a green dot (active).
  10. Test once in your provider's paper/sandbox mode before going live. Use RequestBin or Webhook.site to inspect the raw payload if anything looks off.
The three things that must be right(1) The right provider, with credentials to match: Auth Token AND Account ID filled for PickMyTrade / CrossTrade / Custom Template; Shifu and TradersPost authenticate by URL, so those fields stay blank. (2) One setup per alert: alert() function calls only with an empty Message (CrossTrade recommended: Order fills only with {{strategy.order.alert_message}}) — never “Order fills and alert() function calls,” which sends every order twice. (3) Webhook URL pasted in the Notifications tab. Get those three right and the alert reaches your broker.

Automating an indicator

Everything above covers the algos. Three of the six indicators can also drive a webhook. The other three send alerts only, so you act on them yourself.

IndicatorWhat it can sendPlatformsAlert setup
SignalWaveAn opt-in webhook JSON on every confirmed flip that passes your Signal Filter, plus an opt-in per-bar TRAIL_UPDATE payload for platforms that keep a resting stop in syncAny platform that reads its JSONOne extra alert: Any alert() function call
QuantumFlowReady-to-send ordersPickMyTrade (Tradovate only), TradersPost, Custom Template. No CrossTradeAny alert() function call, Message box empty
Nova AI TraderReady-to-send entries and exits, with an optional broker-side trailing stop and, on PickMyTrade with Tradovate, broker-side breakevenShifu, PickMyTrade (Tradovate or Rithmic), TradersPost, CrossTrade, Generic, Custom TemplateAny alert() function call, Message box empty
EdgeFlow · DeepWave · TrendScoreAlerts only, no broker orders—See each indicator's page
Two rules for indicator automationOn an indicator, TradingView's dialog really does say Any alert() function call. After updating an indicator, delete its alerts and create them again: an alert keeps running the version it was made on. Shifu is not in the indicators yet; they keep their current platforms for now.
Webhook Reference

Understanding the PMT Payload.

If you inspect the JSON PickMyTrade receives, a few fields won't match the Pine script — and that's correct. Here's what the strategy sends versus what PMT adds on its own side, so you can tell a real issue from a non-issue.

What the strategy sends vs what PMT adds

The strategy emits a compact payload. PickMyTrade then adds its own internal fields on its side before routing to the broker — these are not from the Pine script, and seeing them does not mean the script is broken:

FieldAdded byWhat it is
symbol · action · quantityStrategythe order itself
dollar_tp · dollar_slStrategybracket distance from entry, in points
token · accountStrategyyour Auth Token and Account ID
full_closedPMTPMT's internal close flag
order_typePMTPMT's order-type field
main_token_typePMTPMT account/token classifier
tif · gtd_in_secondPMTPMT time-in-force fields
On "diagnostic" claimsIf anyone points at full_closed, order_type, main_token_type, tif, or gtd_in_second as proof the script has bugs — those are PickMyTrade's own internal fields, added on PMT's side, not emitted by the Pine script. They're supposed to be there.

tp and sl showing 0 is correct

If you see tp: 0 and sl: 0 in the payload, that's intentional — the bracket is sent the other way. There are two methods:

  • Absolute-price method: tp / sl would carry exact prices. The strategy does not use this path for PMT — hence the zeros.
  • Distance method (what's used): the bracket is sent via dollar_tp and dollar_sl — the distance from entry in points. PMT builds the bracket as entry ± that distance. So tp: 0 / sl: 0 alongside non-zero dollar_tp / dollar_sl is exactly right.

Order type

Entries are market orders — confirmed in live testing. The strategy enters at market on the confirmed signal, and PMT attaches the bracket (from dollar_tp / dollar_sl) on the broker side.