Question: ¿Qué significa el mensaje de error «S/L o T/P no válido» en las plataformas MT4/MT5?
Table of Contents
- «S/L o T/P no válido» en MT4/MT5: qué significa, por qué ocurre y cómo solucionarlo con certeza
- El reglamento que aplica la plataforma
- Lógica del lado del precio: la plataforma no aceptará stops en el lado incorrecto
- Lógica de distancia: StopLevel y FreezeLevel
- Las unidades importan: MetaTrader mide estas distancias en puntos, no en pips
- Las situaciones exactas que desencadenan un «S/L o T/P no válido»
- En qué se diferencia de otros mensajes
- Soluciones prácticas y deterministas que ponen fin al error
- Notas para desarrolladores (MT4/MT5)
- Referencia rápida: cuándo cada orden es válida
«S/L o T/P no válidos» en MT4/MT5: qué significa, por qué ocurre y cómo solucionarlo con certeza
«S/L o T/P no válido» significa que la plataforma rechaza su orden o modificación porque el Stop Loss o Take Profit que ha introducido incumple las reglas de precios de la plataforma para ese símbolo en ese momento. En MetaTrader 4, esta condición está vinculada al error 130 — «Stops no válidos» cuando se envía a través del código; en MT5 verá un resultado fallido con el mismo significado. En todos los casos, la plataforma está diciendo: los niveles que ha proporcionado no pueden aceptarse como stops válidos para esta orden en este momento.
A continuación se ofrece una explicación precisa de las reglas que aplica la plataforma, las situaciones exactas que activan el mensaje y las soluciones para eliminarlo.
Las normas que aplica la plataforma
MetaTrader aplica dos tipos de restricciones a los niveles de stop:
- Lógica del lado del precio (los stops deben estar en el lado correcto del precio para el tipo de orden).
- Lógica de distancia (los stops deben estar lo suficientemente lejos del precio actual y no dentro de una zona «congelada» protegida).
Estas restricciones se aplican tanto si está abriendo una orden de mercado, modificando una posición existente o colocando una orden pendiente con un SL/TP integrado. Si incumple cualquiera de estas dos familias de reglas, la terminal devuelve el mensaje «S/L o T/P no válidos.» Los centros de ayuda de los brókers y la documentación de MetaQuotes describen estas reglas directamente.
Lógica del lado del precio: la plataforma no aceptará stops en el lado incorrecto
Para órdenes de mercado:
- Compra: el Stop Loss debe estar por debajo del precio negociable actual y el Take Profit debe estar por encima de él.
- Venta: el Stop Loss debe estar por encima del precio negociable actual y el Take Profit debe estar por debajo de él.
Si intenta lo contrario (por ejemplo, una compra con un Stop Loss por encima del precio), se activará el mensaje «S/L o T/P no válido». Las preguntas frecuentes de los brókers señalan la colocación en el «lado incorrecto» como causa directa del error.
Para las órdenes pendientes, se aplica la misma idea, pero en relación con el precio de entrada de la orden pendiente. Por ejemplo, una orden de compra con stop (una entrada por encima del mercado) sigue requiriendo un stop loss por debajo de su entrada y un take profit por encima de ella; una Sell Limit (una entrada por encima del mercado) requiere un Stop Loss por encima de su entrada y un Take Profit por debajo de ella. Si se especifican stops que no coinciden con la lógica lateral de la orden pendiente que se está colocando, la plataforma rechaza la solicitud con un mensaje de SL/TP no válido; algunos brókers incluso muestran un mensaje complementario sobre una orden pendiente con «dirección incorrecta» cuando estas condiciones se mezclan.
Lógica de distancia: StopLevel y FreezeLevel
Dos parámetros del lado del servidor determinan cuán cerca pueden estar su SL/TP del precio actual y cuándo se le permite modificarlos:
- StopLevel : la distancia mínima (en puntos) entre el precio actual y cualquier Stop Loss o Take Profit. Si su stop está más cerca de este umbral, el servidor lo rechaza. MetaQuotes define MODE_STOPLEVEL (MT4) y proporciona accesos equivalentes en MT5 (por ejemplo,
CSymbolInfo.StopsLevel
). - FreezeLevel: un búfer sin modificar (también en puntos) alrededor del precio actual. Si los stops de su posición abierta se encuentran dentro de este búfer, no podrá modificarlos ni eliminarlos hasta que el precio se aleje. En MT4, MODE_FREEZELEVEL documenta esta restricción; el libro MQL4 y los hilos del foro de desarrolladores describen cómo se bloquean las modificaciones dentro de FreezeLevel y cómo las infracciones devuelven «stops no válidos».
Estas restricciones se aplican en el servidor de operaciones, no solo en su pantalla. Si envía stops dentro de StopLevel o intenta ajustarlos mientras el precio se encuentra dentro de FreezeLevel, la solicitud fallará y aparecerá el mensaje en cuestión.
Las unidades importan: MetaTrader mide estas distancias en puntos, no en pips
En MetaTrader, los límites de la plataforma y muchos parámetros de las órdenes se especifican en puntos. En la mayoría de las cotizaciones de divisas de 5 dígitos, 1 pip = 10 puntos; si piensa en pips pero introduce el número en puntos, puede equivocarse por un factor de diez y caer dentro de la distancia mínima. Las guías oficiales y las referencias de la comunidad aclaran constantemente esta conversión. La propiedad del símbolo MODE_STOPLEVEL es explícitamente «en puntos».
Implicación: si pretendías un margen de 15 pips y escribiste 15 (puntos), en realidad solicitaste 1,5 pips, lo que suele estar por debajo de StopLevel para muchos símbolos y se rechazará como SL/TP no válido.
Las situaciones exactas que desencadenan un «S/L o T/P no válido»
- 1) Los stops están demasiado cerca del precio actual (incumpliendo el StopLevel)
- Esta es la causa más común. Muchos brókers publican una distancia mínima de stop por símbolo; el terminal la aplica. Cuando el SL o TP solicitado está más cerca que el StopLevel del servidor, la orden o modificación se rechaza. La ayuda del bróker y la documentación de MetaQuotes nombran esta condición explícitamente. Solución: establezca su SL y TP más allá de la distancia mínima de stop para el símbolo.
- 2) Los stops están en el para el tipo de orden
- Una compra con un stop loss por encima del precio o un take profit por debajo del precio fallará. Una venta con un stop loss por debajo del precio o un take profit por encima del precio fallará. Solución: coloque el SL/TP en el lado correcto en relación con la orden y, en el caso de las órdenes pendientes, en relación con su precio de entrada. Las preguntas frecuentes de los brókers lo indican directamente.
- 3) Está intentando modificar mientras el precio se encuentra dentro del FreezeLevel
- Si el precio actual se encuentra dentro del FreezeLevel del servidor, no puede modificar ni eliminar stops hasta que el precio salga de ese búfer. Enviar un cambio que infrinja las reglas de FreezeLevel produce un error de stops no válidos. Solución: modifique solo cuando el precio esté fuera de FreezeLevel. La documentación y los ejemplos de MetaQuotes establecen esta limitación.
- 4) Puntos frente a pips: discrepancia (ha introducido un recuento de pips como puntos)
- Introducir un valor en puntos cuando se refiere a pips da como resultado una distancia diez veces menor en cotizaciones de divisas de 5 dígitos, lo que empuja su SL/TP dentro de StopLevel. Solución: convierta correctamente: 1 pip = 10 puntos en FX de 5 dígitos. Las guías de FXCM y otras referencias confirman la conversión utilizada en MT4.
- 5) Precisión decimal o errores de formato (número incorrecto de dígitos)
- Los símbolos difieren en el número de dígitos después del decimal (véase MODE_DIGITS). El uso de un nivel con un número incorrecto de decimales (o un redondeo incorrecto) puede producir un precio que el servidor no aceptará. Solución: formatear SL/TP utilizando la precisión de dígitos del símbolo; MetaQuotes expone esto en las propiedades del símbolo y vincula los límites de stop a puntos con esa precisión.
- 6) Orden pendiente configurada de forma inconsistente con su tipo
- Colocar una orden pendiente con SL/TP que implique el lado opuesto (por ejemplo, una orden de compra con un stop loss por encima de la entrada) se rechaza. Algunos brókers muestran un mensaje de «dirección incorrecta» junto con un SL/TP no válido en este escenario. Solución: definir SL/TP como lo harían para la posición después de que se complete la orden pendiente.
- 7) El servidor utiliza un nivel de stop mínimo flotante
- En algunos mercados, la plataforma informa de MODE_STOPLEVEL = 0, mientras que el servidor sigue aplicando una distancia mínima dinámica. La documentación de MetaQuotes señala que, en estos casos, es posible que siga recibiendo el error 130 («stop no válidos») aunque el nivel de stop informado sea cero. Solución: establezca siempre SL/TP a una distancia razonable más allá del spread y del movimiento típico del tick; no asuma que cero significa «sin límite».
En qué se diferencia de otros mensajes
- «Off quotes» indica que no hay ningún precio aceptable para ejecutar en ese momento (problema de disponibilidad de precios), no una infracción de la colocación de stops.
- «El contexto de la operación está ocupado» significa que la plataforma ya está procesando otra acción comercial (bloqueo de canalización), no un problema de colocación de stop.
- «Sin conexión» significa que el terminal está desconectado del servidor comercial; las reglas de stop ni siquiera se evalúan hasta que se restablece la conectividad.
Mantener estas categorías separadas agiliza la resolución: SL/TP no válido se refiere a las reglas de precio y distancia para este símbolo, en este momento.
Soluciones prácticas y determinísticas que ponen fin al error
- Coloque los stops en el lado correcto para el tipo de orden (y en relación con la entrada para las órdenes pendientes). Solo con eso se elimina toda una clase de fallos. Las preguntas frecuentes de los brókers identifican la colocación en el «lado incorrecto» como la causa principal.
- Respete la distancia mínima (StopLevel) y el búfer sin modificaciones (FreezeLevel). Cuando su SL/TP está dentro de StopLevel, el servidor lo rechaza; cuando el precio está dentro de FreezeLevel, el servidor bloquea las modificaciones. MetaQuotes documenta ambos límites y su aplicación.
- Introduzca las distancias en puntos correctamente. En la mayoría de los símbolos FX de 5 dígitos, 1 pip = 10 puntos. Si se refiere a 15 pips, introduzca 150 puntos. Las guías MT4 de FXCM detallan la conversión de puntos a pips utilizada por el terminal.
- Utilice la precisión de los dígitos del símbolo al escribir los niveles de precios absolutos. Confíe en la propiedad dígitos del símbolo para formatear precios limpios y aceptables. La tabla de propiedades de MetaQuotes los vincula a la validación de stop.
- Para las órdenes pendientes, cree SL/TP como si la orden ya se hubiera completado. El SL de una orden de compra stop pertenece por debajo de su entrada; el TP de una orden de venta limitada pertenece por debajo de su entrada, y así sucesivamente. Las páginas de asistencia de los brókers y los hilos de la comunidad de larga duración hacen hincapié en esta regla.
- Suponga que StopLevel puede ser dinámico incluso cuando la plataforma muestra 0. MetaQuotes advierte que algunos servidores aplican umbrales móviles; en esos casos, aún puede recibir el error 130 con MODE_STOPLEVEL = 0. No coloque stops ultra ajustados que no dejen margen para un límite flotante.
Aplique estas seis soluciones y el error desaparecerá en el trading normal, independientemente del símbolo.
Notas para desarrolladores (MT4/MT5)
- Utilice puntos, no pips: calcule las distancias mediante
_Point
(MT4/MT5) multiplicado por el tamaño de pip que desee; nunca codifique decimales de forma rígida. - Consulte StopLevel/FreezeLevel y respételos en sus validaciones. En MT4, consulte
MarketInfo(Symbol(), MODE_STOPLEVEL / MODE_FREEZELEVEL)
; en MT5, utiliceCSymbolInfo.StopsLevel()
ySymbolInfoInteger(..., SYMBOL_TRADE_FREEZE_LEVEL)
. La documentación de MetaQuotes define estos campos exactos. - Espere límites dinámicos: cuando MODE_STOPLEVEL devuelva 0, trátelo como «control externo/dinámico en uso», tal y como indica MetaQuotes, y mantenga un margen de seguridad; se seguirán generando errores si se supera el umbral móvil del servidor.
Con estas medidas de seguridad, las órdenes programáticas dejan de fallar con el error 130 y el trading manual refleja esa estabilidad.
Referencia rápida: cuándo es válida cada orden
- Compra en el mercado: válida solo cuando SL por debajo, TP por encima, ambos al menos a una distancia de StopLevel; modificaciones bloqueadas dentro de FreezeLevel.
- Venta en el mercado: válida solo cuando SL por encima, TP por debajo, ambos al menos a StopLevel de distancia; modificaciones bloqueadas dentro de FreezeLevel.
- Buy Stop / Buy Limit — SL por debajo de la entrada, TP por encima de la entrada; ambos deben satisfacer StopLevel en relación con el precio actual en el momento de la presentación y con las normas del bróker para las órdenes pendientes.
- Sell Stop / Sell Limit — SL por encima de la entrada, TP por debajo de la entrada; se aplican las mismas restricciones de distancia.
- Significado: «S/L o T/P no válidos» indica que su Stop Loss o Take Profit infringe las reglas de lógica lateral o distancia; en el código MT4 aparece como error 130 («Stops no válidos»).
- Causas principales: stops en el lado incorrecto, stops demasiado cerca (StopLevel), modificaciones intentadas dentro de FreezeLevel, puntos frente a pips no coincidentes u órdenes pendientes con una colocación SL/TP inconsistente.
- Soluciones que funcionan: colocar stops en el lado correcto, respetar StopLevel/FreezeLevel, introducir las distancias en puntos correctamente, formatear los niveles con los dígitos del símbolo y, para las órdenes pendientes, definir los stops tal y como quedarán después de la ejecución.
Siga estas reglas y los stops «S/L o T/P no válidos» dejarán de interrumpir sus operaciones: sus órdenes y modificaciones se alinearán con la lógica de precios de la plataforma y el servidor las aceptará.
- Close