A veces, especialmente durante backtesting o en caso de un asesor experto mal diseñados, el error OrderSend 134 (o ERR_NOT_ENOUGH_MONEY) aparece en el registro diario de su plataforma de MetaTrader. En MT5 este error se llama TRADE_RETCODE_NO_MONEY y tiene un código 10019. La razón de este error es el mismo para ambas versiones de la plataforma – la falta de margen de libertad para ejecutar …
Si obtiene el error Metatrader 4: OrderSend Error 134 (Error de pedido 134), significa que no tiene suficiente dinero en su cuenta para realizar un pedido con el tamaño de lote dado.
Que deberias hacer?
El error de pedido enviado 134 tiende a suceder mucho cuando las personas codifican asesores expertos con un estilo de administración de dinero que aumenta el tamaño de los lotes, como Martingala. Eventualmente, el tamaño del lote se hace demasiado grande y no tiene suficiente margen para colocar el comercio. Esto también puede suceder con el tiempo si el saldo de su cuenta es demasiado bajo o si selecciona un tamaño de lote demasiado grande.
El error ocurre cuando intenta colocar el comercio, por lo tanto, es un “error de pedido”. Para evitar este error, puede verificar el margen libre de su cuenta antes de intentar realizar una operación. Para hacer esto, usará la función AccountFreeMarginCheck ():
doble AccountFreeMarginCheck (símbolo de cadena, int cmd, doble volumen)
Devuelve el margen disponible que queda después de que la posición especificada se haya abierto al precio actual en la cuenta corriente. Si el margen libre es insuficiente, se generará un error 134 (ERR_NOT_ENOUGH_MONEY).
Parámetros:
símbolo: símbolo para la operación comercial.
cmd: tipo de operación. Puede ser OP_BUY u OP_SELL.
volumen – Número de lotes.
Un ejemplo sería:
if (AccountFreeMarginCheck (Symbol (), OP_BUY, Lots) <= 0) {
// no hay suficiente margen en la cuenta, así que no opere
regreso();
}
Otra función que puede usar para encontrar el margen restante es:
doble AccountFreeMargin ()
Esto devuelve el valor de margen libre de la cuenta corriente.
El siguiente ejemplo imprime el margen libre para su cuenta:
Imprimir (“El margen libre es =”, AccountFreeMargin ());