A pending order touched the chart: five checks before calling it a missed trade
The candle appears to touch an EA's entry line, but no position appears. Is the robot faulty, did the broker reject something, or was the relevant order condition never met?
Start with the order record. A line on a chart can represent a planned level; it does not establish that the server accepted a pending order. These five checks help turn a screenshot into a useful diagnosis without changing trading settings.
1. Establish whether an order was accepted
Find the order in MT5's Trade tab or the relevant orders in History. Record its ticket, symbol, setup time and state. Match the ticket to the EA's messages where available.
Keep "the EA considered an entry", "a request was sent", "an order was placed" and "a deal executed" separate. If you cannot find an accepted order, investigate the request and response before assessing its fill conditions.
For developers, OrderSend returning true does not by itself prove a completed trade. Read the result's retcode and, where relevant, retcode_external, then reconcile subsequent order and deal events. Preserve the exact code and message:
https://www.mql5.com/en/docs/trading/ordersend
2. Copy the actual order type and prices
Read the server's order record rather than identifying the type from the line's colour. A Buy Limit and Buy Stop have different conditions, as do Sell Limit and Sell Stop.
Stop Limit orders add another stage. Reaching the stop price causes a limit order to be placed at the specified Stop Limit price. Activating that stage does not establish that the resulting limit order filled.
Record the order price, any separate Stop Limit price, requested volume, remaining volume and expiration. Capture the accepted values; they may differ from a planned level printed earlier by the EA. Official order properties distinguish these fields:
https://www.mql5.com/en/docs/constants/tradingconstants/orderproperties
3. Check the price that matters
Here is a hypothetical example for a typical OTC symbol using Bid/Ask pending-order conditions. It is not an ExpertCodeFX result or a suggested trade.
Assume an accepted Buy Limit at 2500.00. A particular quote shows:
Bid: 2499.80
Ask: 2500.30
The Bid is below the line, but the Ask is above 2500.00. That quote therefore does not satisfy the Buy Limit's Ask condition. A Bid-based candle touching the line does not prove the required Ask price was reached.
For these conditions, Buy Limit uses Ask at or below its level; Buy Stop uses Ask at or above it. Sell Limit uses Bid at or above its level; Sell Stop uses Bid at or below it.
Check the chart's price basis too: MT5 symbols can have charts built from Bid or Last. A candle screenshot alone may not retain the relevant Ask sequence. These chart modes are defined in the symbol properties:
https://www.mql5.com/en/docs/constants/environment_state/marketinfoconstants
Exchange symbols need a separate check. For Exchange Stocks, Exchange Futures and Futures Forts calculation modes, MT5 describes exchange-defined trigger rules, usually involving Last. Do not apply the OTC example universally. The platform's pending-order rules explain the distinction:
https://www.metatrader5.com/en/terminal/help/trading/general_concept
4. Reconstruct the order's lifecycle
Check History for the ticket over the relevant interval, including orders rather than only completed deals. Was it placed, partially filled, filled, cancelled, rejected or expired?
Look for changes to its price or expiry before the apparent touch. Retain the surrounding Experts and Journal messages. A later screenshot of a different level cannot establish what conditions applied earlier.
An accepted pending order can also fail at activation. MT5 documents that an operation that cannot execute, such as because free margin is insufficient, can move to History as rejected. Use the actual server message to identify the reason in your case.
Record the displayed timezone when aligning logs with order timestamps. Live platform Journal timestamps and order times can use different clock references. Preserve the original entries; do not invent a cancellation cause from the final state alone. MT5's log documentation explains the two journals:
https://www.metatrader5.com/en/terminal/help/start_advanced/journal
5. Build a support record someone can follow
Use this worksheet before sharing a screenshot:
EA name, installed version and retained inputs:
MT5 build and tester/demo/live context:
Broker server and exact symbol:
Order ticket and identifying EA comment or magic number:
Setup time, event time and timestamp references:
Accepted order type, price and Stop Limit price if applicable:
Initial volume, remaining volume and expiry:
Bid, Ask and Last evidence around the event:
Chart price basis and symbol execution/calculation mode:
Order states, modifications and linked deal tickets:
Exact response code and surrounding Experts/Journal messages:
What is confirmed and what remains unknown:
Redact account numbers and unrelated personal information. Never share passwords, tokens or trading-account login credentials.
I'm Jarrod Emery, the developer behind ExpertCodeFX. The current EcFx XAU Dual Crown listing, version 1.15, describes a Lock30x pending-order framework alongside Aurum market execution. Use its current setup reference when identifying which part of your installed EA produced an order:
https://www.mql5.com/en/market/product/190965
Which missing detail most often prevents you from explaining an unfilled order: the ticket, the Ask price or the cancellation record?
This is an educational diagnostic workflow. Trading can result in loss, and screenshots or historical tests do not guarantee future execution or performance.


