Home Troubleshooting Trades that don't execute as expected

Trades that don't execute as expected

Last updated on Jul 22, 2026

You asked your AI to place a trade, it said something happened, and nothing showed up in your terminal. Almost every case falls into one of a few buckets. Here they are, most common first.

1. It was a dry run (by far the most common)

Every trade-affecting tool defaults to dry_run: true — it validates and describes the trade without sending it. If your AI reported what "would" happen but no order appeared, it was almost certainly a dry run. A real order requires dry_run: false to be passed explicitly. Ask again and be explicit: "Place that order for real" / "execute live." See Placing trades safely with dry_run.

2. Trading is disabled on the EA

Even a live request won't execute if the Expert Advisor isn't allowed to trade. The EA needs inp_AllowTrading = true, and algorithmic trading must be enabled in the terminal (the Algo Trading button green, and the chart's Allow Algo Trading checked). This is a deliberate second gate — see EA won't connect / shows "disconnected" for the exact toggles.

3. You're on a tier without trading

The free tier is read-only. Trade tools require the trade capability (Pro and up); calling them below that returns a 403. See Choosing a plan and subscribing.

4. The broker rejected it

If the request was live and trading was enabled, your broker may still have said no. Common reasons MTContext surfaces or the broker enforces:

  • Market closed / outside trading hours for that symbol.
  • Lot size too small — below the symbol's minimum or step (LOT_TOO_SMALL). Re-size the trade (see Sizing positions by risk, not lots).
  • Insufficient margin for the requested volume.
  • Symbol not available in your Market Watch or not tradable on your account.

MTContext validates against these and fails safe rather than sending an order it knows will bounce.

5. The position or order changed underneath the request

Closing or modifying by ticket can return POSITION_NOT_FOUND or ORDER_NOT_FOUND if the position was already closed (for example, a stop was hit) between the dry-run preview and the live call. Re-check current positions and try again with a valid ticket.

6. An equity guard is blocking new trades

If you've set an equity guard and it has breached, new live trades are blocked until the daily reset (or until you remove the guard). Check with "What's my equity guard status?" — see Setting up equity protection guardrails.

Quick diagnosis

Ask your AI to "show me the exact result of that order request." The returned status usually names the reason directly — dry run, capability, lot size, margin, market hours, or a missing ticket — and points you straight at the fix above.

Next steps

For the safety model behind all of this, see Understanding the dry_run safety model.

Check your account at mtcontext.com/dashboard.