¿Qué Es un Trailing Stop y por qué Necesitas Uno?
Un trailing stop es un tipo de stop que va persiguiendo al precio, en lugar de mantenerse estático en un nivel. Te sirve para asegurar parte de los beneficios que llevas acumulados en una posición abierta. Al mismo tiempo, te permite dejar correr el precio y capturar movimientos de muchos pips.
Si haces trading automático con bots y no te interesa limitar las ganancias potenciales de tus operaciones, puedes programar un trailing stop, en lugar de utilizar un take profit fijo. En caso de que seas un trader manual, esta herramienta facilita la gestión de tus posiciones:
- Elimina dudas e incertidumbre a la hora de ejecutar los cierres
- Evita que te dejes llevar por la avaricia y dejes tu trade abierto más de lo debido
- Puedes centrarte en otras operaciones sin riesgo de que ocurra un desastre
Top Brokers de Forex en línea
El Trailing Stop de las Plataformas de Trading
La mayoría de plataformas de trading de la actualidad, como MT4, Metatrader 5, TradingView o cTrader te permiten utilizar un trailing stop de forma fácil en cualquier posición. Sin embargo, presenta limitaciones básicas que lo convierten en una opción poco recomendable:
- Distancia fija al precio: al activarlo, debes especificar una distancia en puntos o en pips. Esta es la separación que se mantendrá entre la cotización y el stop en todo momento. Si la volatilidad cambia, la operación podría cerrarse por el ruido del mercado o el stop quedarse excesivamente lejos del precio
- Disponibilidad para bots: en muchos casos, esta herramienta sólo está disponible al hacer trading manual y no hay ninguna forma de activarla y desactivarla por código cuando creas un robot
Tanto si haces trading algorítmico como manual, es recomendable que aprendas a programar tu propio trailing stop.
Ventajas de Programar tu Propio Trailing Stop para MetaTrader
MetaTrader 4 te permite programar indicadores y bots a través de su lenguaje propietario mql4. Es muy similar a C y resulta sencillo de aprender. Programar tu propio trailing stop te proporciona las siguientes ventajas:
- Desarrollarás una herramienta totalmente adaptada a tus necesidades, que se comporta de la manera más adecuada a tu operativa
- Tendrás un trailing stop que puedes reutilizar tantas veces como quieras en tus bots o para ayudarte en tu operativa manual
- Evitas tener que contratar a un programador que lo haga por ti
- Aprendes una habilidad a la que puedes sacar un rendimiento económico en el futuro si así lo deseas
Diseñando un Trailing Stop para MT4
Antes de lanzarte a escribir código, el primer paso es definir las características de la herramienta que quieres crear, las funciones que debe cumplir y analizar qué se necesita para conseguirlo.
Descripción del Funcionamiento
- El trailing stop sólo se pone en marcha cuando tú lo activas
- Cuando el precio toca el nivel de stop loss, la operación se cierra
- El nivel de stop loss se actualiza con cada tick
- Si el precio avanza en una posición alcista o bajista, el stop loss también avanza
- Si la cotización retrocede en una posición alcista o bajista, el stop loss no retrocede
Herramientas Necesarias
No es necesario sacarse cálculos complicados de la manga. MetaTrader ya cuenta con un indicador que sigue los movimientos del precio reflejando su intención de fondo: la media móvil. Dependiendo de lo ceñido que quieras tu stop loss, de lo volátil que sea el mercado y del tipo de movimiento que quieres capturar, puedes elegir una con más o menos períodos:
- 3 a 5 períodos: válida para movimientos rápidos en entornos de alta volatilidad u operaciones cortas a contratendencia
- 9 períodos: útil para capturar movimientos impulsivos, en situaciones en las que no te interesa aguantar retrocesos demasiado amplios
- 20 períodos: te servirá para capturar tendencias un poco más largas. En ocasiones conseguirás un “home run”, pero también te expones a devolver una parte de lo ganado
- Configuración variable: si no sabes por cuál decidirte a la hora de programar la herramienta, puedes incluir un parámetro variable. Podrás modificar el valor a tu gusto desde la interfaz de MT para elegir diferentes períodos según sea más conveniente
Por otra parte, necesitas comprobar si hay alguna posición abierta y modificar sus valores. Para eso, cuentas con las funciones OrdersTotal y OrderModify respectivamente.
Filtros Extra
Recuerda que una media móvil acompaña al movimiento del precio, tanto hacia arriba como hacia abajo. En cambio, tu stop loss dinámico no debería moverse nunca en contra de la posición que tienes abierta. Por ello, vas a tener que crear un filtro que sólo permita el movimiento en una dirección.
Código en Mql4 para Crear un Trailing Stop en el MetaEditor de MT4
A continuación, te explicamos cómo utilizar las funciones necesarias para este proyecto y te mostramos código de ejemplo para construir un trailing stop de acuerdo al diseño anterior. Si estás programando un bot, añádelo como una función y ejecútalo cuando creas conveniente
Si eres un trader manual y quieres un stop loss dinámico más sofisticado que el que trae MT4, necesitas crear un asesor experto (EA o expert advisor) con el código que se muestra más abajo:
- Abre el editor MetaEditor 4
- Despliega el menú “Archivo” y elige “Nuevo”
- Selecciona “Asesor Experto”
- Dale un nombre al proyecto, por ejemplo “Trailing-stop-avanzado”
- Pulsa “Finalizar”
A partir de ese momento, tendrás frente a ti la pantalla del editor para empezar a escribir código. Como has visto más arriba, vas a utilizar las siguientes funciones:
- OrdersTotal()
- OrderModify()
- Media móvil
Función OrdersTotal() en Mql4
En Mql4, la función OrdersTotal() devuelve un valor de tipo entero, que indica el número de posiciones que hay abiertas en ese momento. No recibe ningún parámetro y puedes guardar su resultado en una variable int o utilizar el comando directamente en una comparación.
En el trailing stop la utilizaremos para verificar si realmente hay trades abiertos antes de ejecutar ninguna orden.
Programación en Mql4: Función OrderModify()
OrderModify() es una función de mql4 que te permite alterar algunos detalles de una orden que está abierta o en espera de ser ejecutada. Es de tipo booleano (si/no) y devuelve “true” si se realiza el cambio y “false” en caso contrario. En el momento de invocarla debes especificar 6 parámetros:
- Número de ticket: es el código único que identifica a cada orden. Es un valor de tipo entero
- Nuevo precio: si estás modificando una orden limitada que aún no se ejecutó, puedes alterar este valor para indicar un nuevo precio de entrada. Es un valor de tipo double
- Nuevo stop loss: este es el valor que queremos cambiar en el trailing stop. Al igual que el anterior, también se trata de un double
- Nuevo take profit: es otro valor de tipo double que contiene la salida por beneficios
- Caducidad: si quieres que la orden expire pasado un tiempo, debes cambiar este campo. Es de tipo fecha/hora
- Color de la flecha: las órdenes que se ejecutan a través de asesores expertos dibujan una flecha en el gráfico marcando la entrada y la salida
En este stop loss dinámico, se utiliza OrderModify() para ajustar el precio del stop loss a medida que el precio avanza a tu favor.
Para indicar que se utilizan el número de ticket, precio de apertura y take profit originales y que no se quieren alterar, se utilizan las funciones OrderTicket(), OrderOpenPrice() y OrderTakeProfit().
Medias Móviles (iMA) al Programar en Mql4
La tercera pieza de este trailing stop es una media móvil exponencial. En mql4 se programa a través de la función iMA(). Cuando la ejecutes, te devolverá un valor de tipo double con el nivel de precio en que se encuentra la media móvil en ese momento.
Requiere de 7 parámetros. Todos ellos son de tipo int, excepto el primero, que se trata de un string:
- Activo: hace referencia al mercado sobre el que quieres calcular la media móvil. Para hacerlo sobre el gráfico que tienes abierto, indica Symbol()
- Marco temporal: para hallar la media móvil de la dimensión temporal que estás visualizando, puedes especificar 0 o PERIOD_CURRENT. Si quieres calcular la media móvil del gráfico de 1 minuto, escribe 1 o PERIOD_M1. Para 5 minutos, 5 o PERIOD_M5 y así sucesivamente
- Períodos: con este entero se indica el número de velas que se tienen en cuenta para el cálculo de la media
- Desplazamiento: indicando valores inferiores a 0 puedes obtener una media móvil retrasada y con valores superiores una adelantada
- Tipo de media: puedes elegir entre simple (0 o MODE_SMA), exponencial (1 o MODE_EMA), suavizada (2 o MODE_SMMA) o ponderada-lineal (3 o MODE_LWMA)
- Precio: es el nivel que se toma como referencia para el cálculo. Puede ser el cierre (0 o PRICE_CLOSE), apertura (1 o PRICE_OPEN), máximo (3 o PRICE_HIGH), mínimo (4 o PRICE_LOW), mediano (5 o PRICE_MEDIAN), típico (6 o PRICE_TYPICAL) o ponderado (7 o PRICE_WEIGHTED)
- Vela: si quieres el valor de la media móvil en la vela actual, elige 0. Para la vela anterior, 1, para la previa, 2 y así sucesivamente
En este ejemplo se crea una media móvil de tipo simple a 50 períodos para el activo actual calculada sobre los máximos en el gráfico de 15 minutos:
Código de Ejemplo para Programar un Trailing Stop en MetaTrader 4
El siguiente paso es juntar todas las piezas del puzzle. A continuación, puedes ver el código del trailing stop que hemos creado en Daily Forex. Toma como referencia la media móvil exponencial de 20 períodos, calculada al cierre y se activa cuando así lo indicas en las opciones del asesor experto.
Cómo Activar tu Trailing Stop Personalizado en MT4
Si eres un trader manual y quieres utilizar el trailing stop de forma aislada, sin incluirlo en un bot, debes compilarlo:
- Despliega el menú archivo
- Pulsa “Compilar”
Ahora, si ejecutas MetaTrader4 > “Ver” > “Navegador” lo encontrarás listado allí, dentro de la carpeta “Asesores Expertos” o “Expert Advisors”. Arrástralo sobre el gráfico del activo en el que estés trabajando y su nombre aparecerá en la esquina superior derecha, indicándote que está listo para ser usado. Cuando llegue el momento de activarlo:
- Pulsa F7 o haz clic derecho > “Asesores Expertos” > “Propiedades”
- Sitúate en la pestaña “Parámetros de entrada”
- Despliega “¿Activar Trailing Stop?” y elige “True”
Si el trailing stop no funciona, dirígete a “Herramientas” > “Opciones” > “Asesores Expertos” y asegúrate que la casilla “Permitir trading automático” esté activada.
Ideas para Activar tu Trailing Stop Automáticamente
Si quieres ir un paso más allá y hacer que tu trailing stop se active automáticamente, estas son algunas de las alternativas que podrías utilizar:
- Precio
- Ratio
- Beneficio
- Tiempo
Para aplicar cualquiera de ellas, sólo tendrías que sustituir la comprobación inicial en donde se analiza si el parámetro “Activado” es igual a “True” por otra en la que se compruebe si ha pasado el tiempo requerido, se ha conseguido el ratio B/R especificado o la cotización ha alcanzado el nivel de precio indicado.
Conclusión
Aprender a programar un trailing stop en mql4 te será de utilidad tanto si te dedicas al trading algorítmico como si eres un trader manual. En este artículo te hemos presentado una propuesta para crear uno utilizando una media móvil y ya has visto que no necesitarás más de 26 líneas de código para programarlo.
Preguntas Frecuentes
¿Qué Indicador puedo Utilizar para Programar un Trailing Stop en Mql4?
Uno de los indicadores que puedes utilizar como referencia para programar un trailing stop para MetaTrader es la media móvil. Aunque tendrás que añadir algún filtro para impedir que se mueva en sentido contrario al de la posición que tienes abierta.
¿Cuál Es el Mejor Trailing Stop para MT4?
El mejor trailing stop para MT4 es uno que programes tú mismo teniendo en cuenta las características del mercado en el que operas y las necesidades de tus estrategias.
¿Cómo Activar el Trailing Stop en un Expert Advisor?
Puedes activar el trailing stop para una operación ejecutada por un asesor experto haciendo clic derecho sobre la posición y seleccionando “Trailing Stop”. También puedes programar un trailing stop más sofisticado e incluirlo en el código del bot.
¿Qué Función Activa el Trailing Stop en Mql4?
Mql4 no dispone de ninguna función para aplicar un trailing stop a las posiciones abiertas desde un asesor experto. Sin embargo, puedes crear una función propia utilizando una media móvil.
¿Cuál Es la Función de Mql que Permite Cambiar el Stop Loss de una Orden Abierta?
Mql4 te permite modificar diferentes valores de un trade abierto a través de la función OrderModify().