MT5 error 4758: Failed to calculate profit or margin (ERR_TRADE_CALC_FAILED)
OrderCalcMargin or OrderCalcProfit couldn't compute a value, often because a price or a conversion rate is missing.
4758ERR_TRADE_CALC_FAILED
Yes, after a waitSafe to retry?
Not a tradeCould it have executed?
What it means
You see this code in GetLastError() in MQL5, after a function fails.
The margin and profit helpers need current prices, and sometimes prices of other symbols to convert currencies. If any of these is missing, they fail with 4758.
Nothing was traded. It is a calculation error.
Common causes
- No quote yet for the symbol, for example right after start up.
- A missing conversion symbol, such as the pair that turns the profit currency into the account currency.
- A market that is closed, with no current price.
- A volume of 0 or a price of 0.
How to fix it
- Select the symbol and wait for a tick before calculating.
- Make sure the conversion pairs are available in Market Watch.
- Pass a real price and a valid volume.
Example in MQL5:
double margin;
double ask = SymbolInfoDouble(_Symbol, SYMBOL_ASK);
ResetLastError();
if(ask > 0 && OrderCalcMargin(ORDER_TYPE_BUY, _Symbol, 0.10, ask, margin))
Print("margin for 0.10 lots: ", margin);
else
Print("could not calculate, error ", GetLastError()); Is it safe to retry?
Yes, after prices are available.
Could the order have executed?
Not a trade code. Nothing was sent.
Related codes
- MT5 error 10019: Not enough money (TRADE_RETCODE_NO_MONEY)
- MT5 error 4302: Symbol is not selected in Market Watch (ERR_MARKET_NOT_SELECTED)
- MT5 error 4301: Unknown symbol (ERR_MARKET_UNKNOWN_SYMBOL)
Related MT5 Python functions
One API for MT4 and MT5
Clear trade outcomes, idempotent orders and an audit log. Read the error reference or the quickstart.