Start Trading Now Get Started
Tabla de contenidos
Divulgación del anunciante
DailyForex.com se adhiere a estrictas directrices para preservar la integridad editorial para ayudarle a tomar decisiones con confianza. Algunas de las reseñas y contenidos que presentamos en este sitio están respaldados por asociaciones de afiliados de las que este sitio web puede recibir dinero. Esto puede impactar en cómo, dónde y qué compañías/servicios revisamos y sobre los que escribimos. Nuestro equipo de expertos trabaja para reevaluar continuamente las revisiones y la información que proporcionamos en todas los principales brókers de Forex / CFD que aparecen aquí. Nuestra investigación se centra en gran medida en la custodia de los depósitos de los clientes y la amplitud de su oferta de clientes. La seguridad se evalúa por la calidad y la duración del historial del bróker, además del alcance de la posición reguladora. Los principales factores que determinan la calidad de la oferta de un bróker incluyen el costo de las operaciones, la gama de instrumentos disponibles para operar, y la facilidad general de uso con respecto a la ejecución e información de mercado.

Cómo Programar un Trailing Stop en Mql4 para MetaTrader 4

Por Ramon Carreno
Ramón Carreño es Técnico Superior en Desarrollo de Aplicaciones Informáticas por el Instituto San Clemente de Santiago de Compostela desde 2012. Es un apasionado del trading algorítmico y colabora con varios websites redactando contenido relacionado con medios de pago electrónicos, finanzas y blockchain.

Aquí te explicamos como programar un trailing stop en mql4 para MetaTrader 4 paso a paso e incluimos código de ejemplo. Podrás añadirlo a tus robots de forex o utilizarlo a para automatizar parte de tu operativa de trading manual.

¿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

1
Get Started 74% of retail CFD accounts lose money Read Review

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:

  1. Abre el editor MetaEditor 4
  2. Despliega el menú “Archivo” y elige “Nuevo”
  3. Selecciona “Asesor Experto”
  4. Dale un nombre al proyecto, por ejemplo “Trailing-stop-avanzado”
  5. 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.

Función OrdersTotal() en Mql4

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.

OrderModify en Stop Loss Dinamico, Trailing Stop

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:

Media móvil en Trailing Stop MT4

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ódigo de Ejemplo para Programar un Trailing Stop en MetaTrader 4Código de Ejemplo, para Programar un Trailing Stop en MetaTrader 4

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:

  1. Despliega el menú archivo
  2. 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:

  1. Pulsa F7 o haz clic derecho > “Asesores Expertos” > “Propiedades”
  2. Sitúate en la pestaña “Parámetros de entrada”
  3. 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().

Ramon Carreno
Sobre Ramon Carreno
Ramón Carreño es Técnico Superior en Desarrollo de Aplicaciones Informáticas por el Instituto San Clemente de Santiago de Compostela desde 2012. Es un apasionado del trading algorítmico y colabora con varios websites redactando contenido relacionado con medios de pago electrónicos, finanzas y blockchain.
 

Los Brokers de Forex Más Visitados