MT4 error 1: No error returned, but the result is unknown (ERR_NO_RESULT)
On OrderModify it usually means you sent the values the order already has. On a send or close it means the outcome is unknown.
What it means
You see this code in GetLastError() in MQL4, after a trade function fails on the server side.
MQL4 returns 1 when a trade function didn't report an error but also didn't confirm a result.
Its most common source is OrderModify() with the same stop loss, take profit and price the order already has. Then nothing needed to change.
On OrderSend(), OrderClose() or OrderDelete() it is more serious: the result is unknown, and the trade may have happened.
Common causes
OrderModify()with unchanged values, often from a trailing stop that didn't move.- Prices that differ only beyond the symbol's digits, so they round to the same value.
- A send or close whose answer was lost.
How to fix it
- Compare the new values with
OrderStopLoss()andOrderTakeProfit()afterNormalizeDouble(x, Digits), and skip the call if they match. - After a 1 on a send or close, check open orders and history before doing anything else.
Example in MQL4:
if(OrderSelect(ticket, SELECT_BY_TICKET))
{
double sl = NormalizeDouble(newSl, Digits);
if(MathAbs(sl - OrderStopLoss()) >= Point) // only if it moves
{
if(!OrderModify(ticket, OrderOpenPrice(), sl, OrderTakeProfit(), 0))
Print("modify failed, error ", GetLastError());
}
} Is it safe to retry?
Check first. On a modify there is nothing to retry. On a send or close, check the account first.
Could the order have executed?
Maybe. On a modify, nothing needed to change. On a send or close, maybe.
How Tickwire handles it
On a modify, Tickwire treats it like MT5 10025, success with outcome no_change. On a send, close or delete, it treats it like MT5 10031: it looks for the effect and never sends new exposure. The MT4 code stays in the message.
Related codes
One API for MT4 and MT5
Clear trade outcomes, idempotent orders and an audit log. Read the error reference or the quickstart.