TROUBLESHOOTING · UPDATED OCTOBER 2026

Wrong symbol, lot size or account in MT5? Three checklists to fix it.

Your TradingView alert reached MT5, but the result is not what you sent: symbol not found on gold, 0.01 lots instead of 0.50, or a trade on the demo account instead of the live one. These are three different problems with three different fixes. Below are the checklists, in the order that usually finds the cause fastest.

BBenjamin SF · Founder Published Oct 4, 2026 Read 9 min

The 30-second diagnosis

Before changing anything, find out what MT5 actually received. In the MT5 Experts tab, the EA writes a [PROC] line for every signal it receives, with the signal id, action, symbol and lot; the [SEND] line is the order it sent to the broker. In the dashboard, each signal shows its status (EXECUTED, FILTERED, FAILED, NOT_DELIVERED or PENDING) and the reason. Compare those with your alert message and jump to the matching checklist:

Symptom
Most likely cause
Go to
FAILED, symbol not found
Broker uses another name (GOLD, DJ30, USTEC) or the default GOLD to XAUUSD mapping
Trade on the wrong instrument
Alert without a symbol (the EA used its chart) or the broker lists several variants
Lot is not the one you sent
Account in fixed mode, wrong field name (qty, lots) or broker volume rounding
Absurd SL/TP or error 10016
SL/TP unit mode of the account does not match the numbers in the alert
Trade on the wrong account, or on all of them
No account field, a typo in it, or demo and live connected with the same token

Checklist 1: the symbol

TradingView and your broker do not share a symbol dictionary. The same instrument often has a different name, a suffix that depends on the account type, or both. Typical patterns you will find across MT5 brokers (broker-by-broker notes in our MT5 broker guides and prop firm guides):

Instrument
On TradingView
Names you may see in MT5
Euro / Dollar
EURUSD
EURUSD, EURUSD.m, EURUSD.raw, EURUSDm
Gold
XAUUSD, GOLD
XAUUSD, XAUUSD.raw, GOLD
Dow Jones
US30, DJI
US30, US30.cash, DJ30
Nasdaq 100
NAS100, NAS100USD
NAS100, USTEC, US100.cash
  • Read your broker's real name. In MT5 open View → Symbols (Ctrl+U) and search for the instrument. Check that it exists on your account: at some brokers a Raw and a Standard account list the same instrument with different suffixes.
  • Know what {{ticker}} sends. According to TradingView's help on alert placeholders (checked 4 October 2026), {{ticker}} is the ticker alone, such as AAPL or BTCUSD, and {{exchange}} is a separate placeholder. So an alert on OANDA:XAUUSD sends XAUUSD, not the exchange prefix. But it is still TradingView's ticker: a chart of OANDA:NAS100USD sends NAS100USD. If the server receives the literal text {{ticker}} because the placeholder was not replaced, the alert is rejected with HTTP 400.
  • Let the EA resolve suffixes. The SignalForge EA tries the exact name first, then the name plus common suffixes (.a .b .i .pro .raw .std .stp m pro #), and finally the first broker symbol that contains the name. That is why EURUSD finds EURUSDm or EURUSD.raw, and US30 finds US30.cash, without you touching the alert.
  • Send the exact name when it is a different word. No suffix logic turns US30 into DJ30 or NAS100 into USTEC: the EA reports symbol not found. Also send the exact name when your broker lists several variants of one instrument, because the last fallback takes the first match it finds.
  • Gold named GOLD. The server applies two global aliases, GOLD → XAUUSD and SILVER → XAGUSD (never the other way round), because most brokers use the XAU/XAG names. If your broker literally calls gold GOLD, you will see symbol not found: XAUUSD. Do not switch the alert to XAUUSD (your terminal has none): keep GOLD and email [email protected] so support adds a per-account alias that keeps GOLD as GOLD. The same per-account alias covers other renames, such as US30 to DJ30.
  • No symbol in the alert = the chart's symbol. If the alert has no symbol, the EA trades the symbol of the chart it is attached to. An EA sitting on a EURUSD chart turns a symbol-less gold alert into a EURUSD trade.
  • Closed market looks like a symbol problem but is not. If the symbol exists but its session is closed, the broker answers retcode 10018 (market closed). The server does not check trading hours; the broker does.
Alert message - symbolJSON
// broker names the Dow "DJ30": send the broker's exact name
{"action":"buy","symbol":"DJ30","lot":0.1,"sl":150,"tp":300}

// broker uses EURUSDm or EURUSD.raw: the plain name is enough
{"action":"sell","symbol":"EURUSD","sl":20,"tp":40}

// TradingView ticker placeholder (ticker only, no exchange prefix)
{"action":"buy","symbol":"{{ticker}}","sl":20,"tp":40}

Checklist 2: the lot size (and SL/TP units)

The number one cause of “the lot is not the one I sent” is not a bug: it is the position size type of the account. Work down the list:

  • Fixed mode ignores the alert's lot. In Dashboard → Execution each account has a position size type: fixed (the default, 0.01), risk % or lot from the signal. Only the last one uses the lot in your alert. In fixed mode, "lot":0.5 still opens the fixed lot.
  • Use lot or volume. Those are the lot fields (plus PineConnector's syntax). lots, qty and quantity are not read as a lot. That is deliberate: in tools like TradersPost, quantity means contracts or shares, and treating quantity: 1 as one MT5 lot could open a position far larger than intended.
  • Stay between 0.01 and 500. A lot outside that range is rejected by the server with HTTP 422 and never reaches MT5.
  • Risk mode needs a stop loss. In risk % mode the EA computes the lot from the stop-loss distance. Without an SL in the signal it falls back to the fixed lot. There is no risk field in the alert: the percentage lives in the dashboard, per account.
  • The broker's volume rules win. The EA adapts the lot to the symbol's minimum, maximum and step: below the minimum it rises to the minimum, above the maximum it is capped, and it is rounded down to the step. Example: with a step of 0.01, 0.257 becomes 0.25; if a broker's minimum for an index is 0.10, a 0.01 alert opens 0.10, ten times what you planned. Check the values in the symbol's Specification window (right-click the symbol in Market Watch).
  • Same lot, different money. A lot is a number of contracts, and the contract size is set by each broker. Worked example: if gold's contract size is 100 oz, 1.00 lot moves about $100 for every $1 change in price; at a broker where the contract is smaller, the same 1.00 lot moves proportionally less. Index CFDs vary even more between brokers. Copying a fixed lot from one broker to another can therefore change your risk several times over; the Specification window shows the contract size.
  • Match the SL/TP unit mode. sl and tp are plain numbers; what they mean depends on each account's SL/TP mode in the dashboard: pips (default), points, price or units. Sending prices like "sl":2381.5 to an account in pips mode produces absurd levels or error 10016 (invalid stops; the EA retries without stops and adds them afterwards). On gold and indices, what one pip means varies by broker: test on demo, or use price mode.
  • Relative fields have limits. entry_pct, sl_pct, tp_pct and entry_pips must be greater than 0 and no more than 50, otherwise the alert gets HTTP 422.
Alert message - lot and SL/TPJSON
// account set to "lot from the signal" and SL/TP mode "price"
{"action":"buy","symbol":"XAUUSD","lot":0.5,"sl":2381.5,"tp":2410.0}

// NOT read as a lot: falls back to the account's sizing
{"action":"buy","symbol":"XAUUSD","qty":0.5}

// relative stops: 0.5% below / 1% above the entry
{"action":"buy","symbol":"XAUUSD","lot":0.2,"sl_pct":0.5,"tp_pct":1}

To turn a risk amount into lots before you write the alert, use the lot size calculator. Full field reference in the documentation.

Checklist 3: the account

With several MT5 accounts on one plan, routing mistakes are silent: the trade executes, just not where you expected.

  • One token, every live account. Your webhook token is per user, not per account. An alert without an account field goes to every live account, meaning every EA with a heartbeat in the last 15 minutes (the EA beats every 30 seconds). A demo terminal you forgot to close counts.
  • Target with account. It accepts the MT5 login or the account label and must match exactly; send it as a quoted string. A plural accounts field or a list is not read, so the alert is broadcast to all accounts.
  • A dead target does not fall back. If the account you name has no heartbeat in the last 15 minutes, the alert is rejected with HTTP 422 (no live broker accounts) and no other account takes it. That is safer than trading the wrong account, but it means a closed terminal silently skips the signal.
  • Same login on two servers. Some brokers and prop firms reuse login numbers across servers (a demo and a live account, or two challenge phases). Targeting by login then picks only one of them. Give each account a distinct label and target the label.
  • More EAs than your plan allows. If more accounts are connected than the plan covers (Starter 1, Trader 3, Pro 5, Elite 10), only that many receive signals, the ones registered first. Add extra accounts for $3/mo each (up to 3 on Starter, 5 on Trader) or move up a plan: pricing.
  • One MT5 account, one terminal with the EA. The same login running the EA on your PC and on a hosted terminal at the same time can execute one webhook twice. See duplicate orders.
  • Wrong lot on one account only? Position size type, SL/TP mode and trading hours are per account. If the alert is right and only one account misbehaves, compare its Execution settings with the others.
Alert message - accountJSON
// every live account on your token
{"action":"buy","symbol":"EURUSD","sl":20,"tp":40}

// only MT5 login 12345678 (quoted string)
{"action":"buy","symbol":"EURUSD","sl":20,"tp":40,"account":"12345678"}

// by label, when two accounts share a login on different servers
{"action":"buy","symbol":"EURUSD","sl":20,"tp":40,"account":"ftmo-phase2"}

Running several accounts: hosting multiple MT5 accounts covers terminals, hosting and per-account risk.

Printable checklist

Print this page (the navigation is hidden on paper) or copy the table into your notes. Run it once per MT5 account, with a demo alert, before you go live.

Check
How
Pass when
Broker symbol name
View → Symbols (Ctrl+U) in MT5
The name in the alert, or name plus suffix, exists on this account
Renamed instruments
Look for DJ30, USTEC, GOLD and similar
The alert sends the broker's exact name, or support set an alias
Symbol in the alert
Read the message box
symbol is present, or the EA chart is the instrument you want
Position size type
Dashboard → Execution, per account
Lot from the signal if the alert carries the lot; risk % only with an SL
Lot field
Read the JSON
lot or volume, between 0.01 and 500
Broker volume limits
Symbol Specification in Market Watch
Your lot is within min/max and a multiple of the step
Contract size
Symbol Specification
You know what 1.00 lot is worth at this broker
SL/TP unit mode
Dashboard → Execution
Pips, points, price or units matches the numbers you send
Account routing
Read the JSON and the dashboard account list
account matches a login or label exactly, or broadcast is intended
Live accounts
Dashboard account list
No forgotten demo EA, no account above the plan limit
Test signal
The [PROC] line in the Experts tab shows the symbol and lot you expect

FAQ

Why does MT5 open 0.01 lots when my alert says 0.5?

Because the account is in fixed lot mode, which is the default and uses 0.01. In fixed mode the lot in the alert is ignored. Switch the position size type to lot from the signal in Dashboard > Execution, and make sure the field is called lot or volume (lots, qty and quantity are not read as a lot).

Do I have to add my broker's suffix (EURUSD.m, EURUSDm) to the alert?

Usually not. The EA tries the exact name, then the name plus common suffixes (.a, .b, .i, .pro, .raw, .std, .stp, m, pro, #), then the first broker symbol that contains the name. Send the broker's exact name when it is a different name altogether (DJ30 for US30, USTEC for NAS100) or when your broker lists several variants of the same instrument.

My broker calls gold GOLD and I get symbol not found: XAUUSD. Why?

The server maps GOLD to XAUUSD by default because most brokers name gold XAUUSD. If your broker literally uses GOLD, that default breaks it. Keep sending GOLD and email [email protected]: support adds a per-account alias so GOLD stays GOLD on that account.

How do I send an alert to only one of my MT5 accounts?

Add an account field with the MT5 login or the account label, for example "account":"12345678". Without it, the signal goes to every live account on your token. If the named account has no heartbeat in the last 15 minutes, the alert is rejected with HTTP 422 and no other account trades it.

Why did one alert open a trade on both my demo and my live account?

Both EAs are connected with the same token and the alert has no account field, so it is broadcast to every live account. Add the account field, or remove the EA from the demo terminal: an account stops counting as live 15 minutes after its last heartbeat.

Can I set the risk percentage inside the alert?

No. There is no risk field in the alert. The risk percentage is set per account in the dashboard, and risk mode needs a stop loss in the signal; without a stop loss the EA falls back to the fixed lot.

The right symbol, lot and account. Every alert.

Suffixes resolved by the EA, lot and SL/TP mode per account, and routing by login or label. 14-day free trial, no card required.

SignalForge AI is an order-execution tool. We do not provide investment advice. Trading involves risk of loss. Test every alert on a demo account before trading live.

Alerts landing on the wrong symbol, lot or account? Fix it per account · from $4.99/moSee pricing →