TradingView Alert Fired But No Trade Executed — 7 Reasons (And How to Diagnose Each)

TradingView alert fired but no trade executed — signal chain failure between TradingView webhook and MetaTrader terminal

Your TradingView alert fired. The log says so. But the trade never appeared in MetaTrader. No error message. No notification. Just a missed entry — and price is already 40 ticks away.

This is the most common support request in webhook-based trading automation. Forums split into two camps: one blames TradingView (“webhooks are unreliable”), the other blames the EA (“your code is broken”). Both are usually wrong. The real answer is that the signal chain from alert to executed order has at least four failure points, and most traders only check one.

This article maps the entire chain — alert, webhook, cloud relay, terminal, broker — and gives you a specific diagnostic test for each layer. No guessing. No “just check the URL.” A real troubleshooting sequence you can run in under ten minutes.

The Signal Chain: Where Things Break

Before jumping into reasons, understand the full path your signal travels:

1

TradingView Alert

Condition met → alert fires and logs the event.

2

Webhook HTTP POST

TradingView sends payload to your webhook URL via HTTPS.

3

Cloud Relay

Receives, validates, records the signal. Must respond within 3 seconds.

4

Receiver EA → Broker

EA in your terminal picks up the signal and sends the order to your broker.

Webhook signal chain from TradingView alert to broker execution showing five failure points

A failure at any single point kills the trade silently. TradingView logs alert firing and webhook delivery status in separate columns — so an alert can show “fired” while the webhook column shows a delivery error. That green checkmark in the alert log only means the condition was met. It tells you nothing about whether the signal actually reached your terminal.

TradingView alert log showing webhook status column for diagnosing delivery failures

Reason 1: Your TradingView Plan Doesn’t Support Webhooks

This catches more people than any technical bug, and the failure mode is beautifully simple: you can’t misconfigure an option that doesn’t exist.

On TradingView’s free Basic plan, the Webhook URL checkbox isn’t greyed out or hidden behind a paywall warning — it’s simply not in the Notifications dialog. Your options are App and Toasts, and that’s the whole list. The webhook isn’t failing to deliver. It was never there. And it’s hard to remember to check for a feature you’ve never seen.

Webhooks require the Essential plan or higher (see current pricing at tradingview.com/pricing).

There’s a second gate: two-factor authentication. According to TradingView’s official webhook documentation, webhook alerts are only allowed when 2FA is enabled on your account. Without it, the option may appear in your plan, but delivery will not work.

How to diagnose: Open your TradingView account settings. Confirm your plan tier is Essential or above. Then check Privacy and Security — confirm 2FA is active. If the Webhook URL field doesn’t appear when creating an alert, you now know why.

Reason 2: Webhook URL Is Misconfigured

The webhook URL connects TradingView to your execution relay. One wrong character and the signal goes nowhere.

TradingView doesn’t validate the URL when you save the alert. It accepts anything — even a completely invalid address. The actual delivery attempt happens only when the alert fires. If the URL is wrong, you find out from the error in the alert log, not at setup time.

The technical requirements are strict:

HTTPS only HTTP is rejected with a “secure connection” error. No exceptions.
Ports 80 or 443 only Any other port is blocked. Documented in TradingView’s webhook support article.
IPv4 only IPv6 endpoints are not supported. TradingView requires an IPv4 address.
Valid domain & path Errors: “URL unavailable or invalid”, “couldn’t find this domain”, “endpoint does not exist”.

When the webhook can’t be delivered, the error appears in the Webhook status column of your alert log. TradingView documents these error categories: timeout exceeded, URL unavailable or invalid, secure connection issues, and server rejects connection. TradingView does not publicly document its retry policy for failed webhooks — treat any non-2xx delivery as a lost signal.

Quick test: Temporarily replace your webhook URL with a request-inspection service such as webhook.site. Fire a test alert. If the test service receives the payload, TradingView’s side is working and the problem is your actual relay endpoint. If nothing arrives, the issue is your TradingView configuration.

Reason 3: Alert Payload Is Malformed

The alert fires, the webhook delivers, but the receiving server ignores the message because the JSON is broken.

A missing closing brace, an extra comma after the last key-value pair, an unescaped quote inside a string — any of these makes the payload invalid JSON. When TradingView sends non-JSON content, it sets the Content-Type header to text/plain instead of application/json. Some execution platforms reject text/plain payloads and only process application/json.

Another common issue: TradingView placeholders like {{ticker}}, {{close}}, {{strategy.order.action}} that aren’t resolving. If you see literal {{…}} text in your alert log instead of actual values, the placeholder syntax is wrong or the alert condition doesn’t support that placeholder type.

How to diagnose: Open your Alert Log. Hover over the most recent fired alert to expand the full message body. Check if placeholders resolved to real values. Copy the message and paste it into any JSON validator. If errors appear, fix the message template in your alert settings.

For Pine Script users: alertcondition() accepts only a const string — you can’t use series variables inside it. Use the alert() function instead, which accepts series strings. Or use the alert_message parameter in strategy.entry() and strategy.exit() calls.

Reason 4: TradingView’s 3-Second Timeout

This is the one that silently kills automated setups during volatile sessions.

According to TradingView’s webhook documentation, the receiving server must respond within 3 seconds. If your relay needs to do any processing before returning a response — validating the signal, looking up account settings, connecting to a broker API — it can exceed that window.

When the timeout hits, TradingView cancels the request. The alert log shows “timeout exceeded” as the webhook status. The signal is gone. TradingView does not publicly document whether timeouts trigger a retry, so treat a timeout as a permanent loss.

During high-volatility periods — market open, NFP releases, rate decisions — TradingView’s own webhook dispatch can experience congestion. The alert timestamp in your log reflects when the condition was met, not necessarily when the webhook was dispatched. If you log receipt timestamps on your receiving end and see gaps, that’s dispatch-side latency — not something you can fix from your end.

How to diagnose: Add timestamp logging on your receiving server. Compare the alert log timestamp against the actual receipt time on your server. If you see consistent gaps, it’s either TradingView dispatch congestion or your server’s response time. If it’s your server — acknowledge the webhook immediately with a 200 OK, then process the signal asynchronously.

If you’re using a cloud-based copier rather than a self-hosted relay, this layer is handled for you. Cloud copiers like the TradingView to MT4 Trade Copier respond well inside that 3-second window — based on our internal measurements, our webhook processing completes in approximately 150 milliseconds.

Reason 5: Terminal Offline or Receiver EA Disconnected

The webhook arrived at the cloud relay. The relay validated it. But nobody is on the other end to pick it up.

This is the most common cause of missed trades that aren’t a TradingView problem at all. The Receiver EA needs to be running inside an active MetaTrader terminal, connected to the cloud server, attached to the correct chart. If any of these conditions fail, the signal has nowhere to go.

VPS rebooted, MT4 didn’t restart MetaTrader doesn’t auto-start after a VPS reboot unless configured explicitly.
AutoTrading disabled after account switch MT4 disables AutoTrading by default when you switch accounts — a security feature most traders forget.
AutoTrading button red Green = active. Red = disabled. The EA won’t place any orders regardless of what signals arrive.
“Allow live trading” unchecked The EA’s own properties must have live trading enabled, separate from the global AutoTrading toggle.

For webhook-based copiers: the Receiver EA polls the cloud server for pending signals. If it’s offline when the signal arrives, there’s no catch-up mechanism. Signals are processed in real time only. If the terminal reconnects after a disconnection, alerts that arrived during the outage will not be replayed or executed retroactively — this is documented behavior for Nordman Connector, and it applies to most webhook copiers.

How to diagnose: Check the Experts tab in your MetaTrader terminal. It logs every action the EA takes — connections, signal receipts, errors. A gap in log entries means the EA was offline during that window. Check the Journal tab for connection-related messages. Verify the EA icon on your chart: smiley face = active and permitted to trade; sad face or red X = AutoTrading disabled or trading permission missing.

Our guide on how to install and run an Expert Advisor in MetaTrader 4 covers the setup steps that prevent most of these issues. A VPS is strongly recommended for any automated workflow — a home PC has significantly lower uptime than a dedicated server, and every hour of downtime is a window for missed signals that can’t be recovered.

Reason 6: Broker Rejects the Order

The signal arrived. The EA received it. It tried to place the order. The broker said no.

This is where MetaTrader’s error codes become essential. Every time OrderSend() fails, MT4 assigns a numeric error code. The most frequent ones in webhook-automated setups:

Error Code Description Common Cause Severity
Error 133 Trade is disabled Outside market hours, holiday halt, account type doesn’t allow EAs Critical
Error 134 Not enough money Free margin insufficient for requested lot size Critical
Error 131 Invalid trade volume Lot size below broker minimum or doesn’t match lot step High
Error 130 Invalid stops SL or TP closer than broker’s minimum stop distance High
Error 138 Requote / Off quotes Price moved beyond maximum slippage before order could fill Moderate

Most of these errors never produce a popup on screen. They’re logged silently in the Experts tab. If you’re not checking that tab, you’ll think the EA did nothing — when in fact it tried and was rejected.

How to diagnose: Open the Experts tab (View → Experts in MetaTrader). Search for error messages. Each code points to a precise cause in the MQL4 documentation. Also check: demo vs live account, investor-password (read-only) mode, and whether your broker restricts EA trading on your account type.

Reason 7: Alert Trigger Frequency Is Wrong

Your alert fired once. The trade went through. Then nothing — even though your strategy generated five more analytical conditions that same session.

The problem is the Trigger setting in TradingView’s alert dialog. The options and what they actually do:

Once Only Fires one time, then stops permanently. Default for some alert types. The alert is still visible in your panel — it just never fires again. This is the most common cause of “one good trade then silence.”
Once Per Bar Fires on the first tick that meets the condition within each bar. Can fire mid-bar on an unconfirmed condition — if the condition flips before bar close, you’ve executed on a false signal.
Once Per Bar Close Waits for the bar to close, confirms the condition is still true, then fires. This is the correct setting for most automated strategies — matches how Pine Script evaluates on bar close.
Every Time Condition Is Met Fires on every tick that satisfies the condition. Can generate multiple signals per bar — useful for some setups, but produces noise on indicator-based alerts.

How to diagnose: Open your Alerts panel. Click on the alert. Check the Trigger setting. If it says “Once Only” and you need ongoing signals — that’s the problem. Change it to “Once Per Bar Close” for strategy-based automation. If the alert shows “Stopped” next to the trigger, it already fired its one allowed time.

The Diagnostic Matrix

Use this to isolate the failure layer in under five minutes. Start at Layer 1 and work down — the first layer that shows a failure is your root cause.

Layer Where to Check Symptom Fix
1 — TradingView Alert Alerts panel → alert status Alert shows “Stopped” or doesn’t appear Check Trigger setting; re-create if “Once Only”
2 — Webhook Delivery Alert Log → Webhook status column Error code in Webhook status Fix URL, HTTPS, port, 2FA, plan tier
3 — Payload Alert Log → message body Literal {{…}} in message; 400 error from relay Validate JSON; fix placeholders
4 — Cloud Relay Relay dashboard / server logs No signal received in relay logs Go back to Layer 2; check relay response time
5 — Terminal / EA MT4 Experts tab Gap in log entries; sad face icon Enable AutoTrading; check EA properties; use VPS
6 — Broker MT4 Experts tab → error codes Error 130, 131, 133, 134, 138 Fix lot size, margin, stops, account type

How to Prevent This Entirely

The diagnostic matrix above works after the fact. The real question is how to build a setup that catches failures before they cost you money. Three things matter: monitoring, redundancy, and architecture.

Monitoring: your execution relay should tell you when signals arrive and when they don’t. If you’re building your own, add logging. If you’re using a managed copier, check that it provides an admin dashboard with signal and execution history.

Redundancy: your relay must respond to TradingView within 3 seconds or the signal is lost. A cloud-hosted relay handles this by design. A VPS keeps your terminal running through local machine outages.

Architecture: the reason traders hit these issues repeatedly is that they’re bolting together disconnected tools — a TradingView alert, a self-hosted Python script, a locally-running MT4 on a laptop. Every junction is a failure point with no visibility.

Nordman Connector was built to collapse layers 4 and 5 into one monitored step. The cloud server receives the webhook, validates the signal, and records it in the dashboard. The Receiver in your MetaTrader terminal maintains a persistent connection to that server and executes the trade locally. If the Receiver loses connection, a Telegram notification fires immediately — so you know within seconds, not hours.

~150 ms — Our Processing Based on our internal measurements, our webhook processing leg completes in approximately 150 milliseconds — well inside TradingView’s 3-second delivery window.
~0.5 s End-to-End Total time from TradingView alert condition to executed order. TradingView’s own dispatch (~350 ms) dominates the total — our infrastructure adds approximately 150 ms.
Dashboard Monitoring Every received webhook and every execution is logged in the Nordman Connector dashboard. No silent failures.
Telegram Alerts Instant Telegram notification if your VPS or terminal connection drops — so you know within seconds, not after a missed session.

You can see the full execution flow in this walkthrough: TradingView to NinjaTrader in ~0.5 Second — Auto Trade Copier. The same cloud infrastructure handles MT4, MT5, and NinjaTrader 8 — details on connecting all three are covered in Can You Connect TradingView to MT4, MT5, and NinjaTrader 8?

For more on execution latency and when it actually matters for your workflow, see When ~0.5s Execution Actually Matters in Automated Trading.

Who This Is For — And Who It Isn’t

This kind of webhook-to-terminal automation makes sense if you’re running TradingView strategies or indicator-based analytical conditions that need to execute on MT4, MT5, or NinjaTrader 8 without you sitting in front of the screen. Scalpers and intraday traders on prop firm accounts. Strategy developers who backtest on TradingView and execute elsewhere. Signal providers distributing to multiple terminals.

It doesn’t make sense if your strategy operates on daily or weekly charts and you have time to place trades manually — the automation overhead isn’t justified. It also won’t fix a losing strategy. If the analytical conditions are bad, faster execution just loses money faster. And if your broker is in a different region from the cloud infrastructure, execution latency may negate the speed advantage.

If that’s your situation, this article was useful for the diagnostics. Close the tab. Don’t spend €25/month on automation you don’t need.

Start Your 5-Day Free Trial →

Need something custom built? We develop automation to order → Forex EA Programming Services

Sources referenced in this article:

  1. TradingView. “How to configure webhook alerts.” TradingView Support: tradingview.com
  2. TradingView. “What do errors mean when sending webhooks?” TradingView Support: tradingview.com
  3. TradingView. “How to configure 2FA.” TradingView Support: tradingview.com
  4. TradingView. “I cannot send webhook to a URL with a port number.” TradingView Support: tradingview.com

Nordman Algorithms provides software infrastructure for trade automation and does not offer financial advice, trading signals, or managed trading services. This article is for informational and educational purposes only. Trading leveraged instruments such as Forex and CFDs carries a high level of risk and may not be suitable for all investors — only risk capital should be used. Full Risk Disclosure: https://www.nordman-algorithms.com/risk-disclosure/