Introducción: Creando un Robot de Trading Automático Gratis para MetaTrader4
MetaTrader4 cuenta con el lenguaje de programación mql4 para automatizar tus estrategias de trading. Es bastante fácil de aprender, aunque no tengas experiencia programando y dispone de gran cantidad de documentación para resolver cualquier duda que pueda surgirte.
La forma más efectiva de aprender mql4 es estudiando los fundamentos básicos a través de su manual online y poniéndote manos a la obra cuanto antes para practicar lo aprendido. En esta guía te guiaremos paso a paso para crear tu primer robot de forex gratis y desde cero.
Ten en cuenta que el objetivo de esta guía es puramente educativo. No te recomendamos utilizar el bot que vamos a crear aquí en una cuenta real si no tienes conocimientos de trading y de programación.
Hipótesis: ¿Qué Quieres explorar con tu Bot de Forex?
El primer paso al desarrollar una estrategia de trading, ya sea para ejecutar de forma automática o manual, es tener claro qué quieres explotar con ella. Es lo que los traders angloparlantes denominan “edge” y que se suele traducir como “ventaja” o “patrón recurrente”.
Puede definirse como “un fenómeno que se da en el mercado con suficiente frecuencia y tiene un resultado previsible del que puedes extraer un beneficio”. Es la hipótesis que sustenta y da sentido lógico a tu estrategia.
La situación que queremos explotar con la estrategia de trading automatizada que vamos a programar aquí es la siguiente:
- Cuando el precio forma una tendencia alcista en varios marcos temporales de manera simultánea es señal de que la demanda está ejerciendo más presión en un mercado
- Durante una tendencia alcista se producen avances y retrocesos. Un marco temporal inferior puede mostrar una lateralización o retroceso amplios que no son más que una pequeña consolidación en la tendencia de fondo
- Estas bajadas en la temporalidad inferior pueden llegar a marcar estados de sobreventa. Sin embargo, la presión predominante en el mercado continúa siendo alcista
- Cuando los compradores vuelven a tomar impulso, la corrección del marco temporal inferior se anula
- En ese momento, es posible efectuar una entrada a favor de la tendencia en curso que podría desembocar en una operación compradora ganadora
Top Brokers de Forex en línea
Indicadores a Utilizar en este Bot de Trading en Forex
Una vez que sabes exactamente qué quieres explotar, el paso siguiente es elegir las herramientas que te permitirán identificar cuándo se produce esa situación y sus diferentes estados. En nuestro caso elegimos:
- Medias móviles: nos permiten identificar si hay una tendencia alcista o no
- RSI: nos ayuda a identificar el fin de un retroceso y el posible inicio de un nuevo impulso
- ATR: es útil para determinar la ubicación del stop loss en función de la volatilidad
En las siguientes secciones puedes ver más en detalle el tipo de señales que buscaremos en cada uno de estos indicadores.
Medias Móviles Exponenciales para Identificar el Contexto
Hay muchas formas de identificar una tendencia alcista, tanto con indicadores como con la propia acción del precio. Para este bot utilizaremos 3 medias móviles:
- EMA 100
- EMA 50
- EMA 20
Cuando las 3 aparecen en un gráfico de manera ordenada (la de 100 abajo, la de 50 en medio y la de 20 por arriba), puede decirse que el mercado está en tendencia alcista de manera objetiva e inequívoca.
El primer requisito que nuestro bot analizará para decidir si ejecuta una operación o no, será que exista una tendencia alcista en 2 marcos temporales de la forma que se acaba de describir:
- 1 Hora
- 15 Minutos
Para evitar entradas en falso cuando el mercado esté iniciando un cambio de dirección, se utilizará el siguiente filtro:
- El precio actual debe estar por encima de la EMA50 en el gráfico M15 para dar por válida la tendencia
Señal de Entrada con el RSI
A continuación, vamos a indicar el tipo de señal que debe aparecer en el mercado para que el robot de forex ejecute su entrada. Teniendo en cuenta que queremos comprar en un pequeño retroceso durante una tendencia, esperaremos a ver la siguiente señal en el gráfico de M1:
- El RSI de 14 períodos cae en el área de sobreventa
- El RSI sale de la zona de sobreventa
Ubicación del Stop Loss Utilizando el ATR
Para colocar el stop loss, nuestro robot de trading tomará como referencia el mínimo de los últimos 15 minutos. A este valor se le añadirá un margen de seguridad para evitar posibles barridos de stops y el efecto del ruido del mercado si la volatilidad es elevada.
Para calcular este margen se utilizará un múltiplo del ATR de 14 períodos en el gráfico de 15 minutos.
Salida en Beneficios con un Trailing Stop
La salida en beneficios para este algoritmo de trading se efectuará en dos partes:
- Salida 1: cuando se consiga un ratio beneficio/riesgo de 1,1:1
- Salida 2: se deja correr el precio utilizando un stop loss dinámico emparejado con una media móvil
Uso de Parámetros Variables al Programar un Bot de Trading
A lo largo del tiempo, el comportamiento de los mercados financieros cambia. Es por esto que un bot puede funcionar durante una temporada y dejar de hacerlo más adelante. Uno de los motivos son los cambios en la volatilidad. Una estrategia que da buenos resultados con una volatilidad determinada, obtiene un rendimiento completamente diferente cuando esta cambia.
Por ello, es imprescindible crear el bot de trading de forma que sea capaz de adaptarse a la volatilidad cambiante del entorno. En este proyecto, vamos a ser flexibles con estos dos elementos:
- Múltiplo del ATR utlizado para el stop
- Número de períodos de la EMA en la toma de beneficios dinámica
En lugar de darles un valor fijo, utilizaremos una variable de tipo input que nos permita probar varios y elegir el que mejor resultado nos de. Para evitar caer en la sobreoptimización, utilizaremos la metodología walk-forward.
Creando un Robot de Forex paso a paso para MT4
MetaTrader4 cuenta con un entorno de programación llamado MetaEditor. Es el espacio que utilizarás para escribir tu código y compilar el bot.
Para facilitar la programación y que el código te quede mejor organizado y fácil de entender cuando lo revisas, te recomendamos que dividas cada una de las acciones del robot y las programes en forma de funciones separadas.
Después, llama a cada una de ellas desde el cuerpo principal del programa.
Código para Identificar si el Contexto es Alcista
De acuerdo a lo indicado anteriormente, el bot necesita saber si hay una tendencia alcista en 3 marcos temporales de forma simultánea.
Función para Calcular la Ubicación del Stop
Estas líneas de código le permiten al robot saber dónde debe ir colocado el stop loss inicial en el momento de abrir la posición.
Código para Detectar si se Da la Señal de Entrada
A través de esta función, se identifica el momento de ejecutar la orden de entrada al mercado:
Función Trailing Stop
El código de ejemplo para esta función está en este otro artículo en el que te explicamos cómo programar un stop loss en mql4 para MetaTrader paso a paso.
Contar las Posiciones Abiertas en este Activo
Adicionalmente, se necesita de la siguiente función para determinar si hay trades abiertos correspondientes a esta estrategia en un mercado concreto.
Código Completo del Bot de Trading
Ahora sólo te falta juntarlo todo y ejecutar cada parte dentro de la función OnTick():
Verifica si tu Robot de Forex es Rentable Haciendo un Backtest
Después de programar tu bot, debes ponerlo a prueba con datos históricos para ver qué resultados habría tenido en el pasado. Para ello:
- Abre MetaTrader4
- Despliega el menú “Ver”
- Pulsa sobre “Probador de estrategias”
- Elige tu estrategia en el cuadro desplegable
- Selecciona el activo en el que quieres probar el bot
- Especifica la fecha
- Dale a “Propiedades del experto” para determinar los parámetros que quieres utilizar en la EMA del trailing stop y el múltiplo del ATR para la distancia al stop loss
- Haz clic en “Iniciar”
Puedes probar varios valores distintos para la EMA del trailing stop y los múltiplos del ATR que se utilizan en el cálculo del stop loss. Así podrás identificar cuál es la configuración más adecuada para cada par de divisas.
Ten en cuenta que el backtesting te da una idea de si tu sistema podría haber sido rentable en el pasado o no. Pero esto no es una garantía de que vaya a seguir siéndolo en el futuro. Además, si haces un gran número de backtests con muchas configuraciones distintas en tu sistema, es cuestión de tiempo que aparezca alguna con resultados positivos.
Esto es lo que se llama sobreoptimización u “overfitting”. Para evitarlo y asegurarte de que tu bot es realmente robusto que lo pongas a prueba con el sistema walk-forward, en lugar de haciendo un backtest clásico.
Potenciales Problemas y Áreas de Mejora de este Robot de Forex
Aquí te estamos explicando cómo crear tu primer algoritmo de trading utilizando medias móviles y el RSI y te estamos dando código fuente de ejemplo. Pero no creas que ya está todo hecho; este es sólo el principio del camino.
A medida que adquieras más soltura programando en mql4, podrías añadir funcionalidades adicionales que mejoren sus resultados. Por ejemplo:
- Posibilidad de tener abierta más de una posición en un activo a la vez
- Uso en otros marcos temporales
- Cálculo automático del lotaje en base al riesgo que quieres asumir
- Selección de las ventanas horarias donde es más efectivo
Uno de los problemas que te encontrarás cuando pongas en marcha este bot es el cambio en los spreads que puede darse en determinados momentos. En algunos brokers, puedes encontrarte con spreads impracticables en las siguientes situaciones:
- Los minutos inmediatamente anteriores y posteriores a la publicación de noticias de alto impacto económico
- Al cierre del día
Es recomendable que desactives tu estrategia durante unos minutos y vuelvas a activarla cuando los spreads vuelvan a valores normales. Puedes hacerlo manualmente o buscar la manera de programarlo en tu robot.
¿Cómo Incorporar Análisis Fundamental en un Bot de Trading?
Los traders que basan su operativa en el análisis fundamental, ya sea en exclusiva o combinado con el análisis técnico, no suelen plantearse el uso de robots. Principalmente, por lo difícil que resulta incluir este tipo de análisis en su estructura.
Una manera sencilla de incorporar el análisis fundamental a tu trading algorítmico es utilizarlo para determinar si debes encender tu bot o dejarlo desconectado una temporada. Echa un vistazo a este escenario:
- Tienes un robot que obtiene beneficios operando en largo en el EUR/USD cuando hay una tendencia alcista
- Los últimos indicadores económicos muestran que la economía de la eurozona ha retrocedido respecto al mes anterior. Sin embargo, la de USA ha mejorado
- Las declaraciones más recientes de la Fed han tenido tintes “hawkish”, mientras que el BCE no está tomando las medidas esperadas para luchar contra la inflación
- Según tu análisis fundamental, el USD está más fuerte que el EUR y esto es una señal bajista para este par
En este contexto, ¿no sería más ventajoso para ti desactivar el bot y evitar entradas en falso? El estado actual de la economía muestra improbable que vayan a producirse movimientos alcistas sólidos en el valor del euro frente al dólar.
Aclarando Ideas Erróneas acerca de los Bots de Trading
Los traders que no están familiarizados con el trading algorítmico suelen tener ciertas ideas equivocadas:
- El bot está siempre encendido y ganando dinero
- Una vez que has terminado de programar, has hecho el backtesting y has pasado el sistema a real, no hay que hacer nada más
- Un buen robot es capaz de aprovechar todas las subidas y/o bajadas en el precio de un activo
- Todos los algoritmos de trading sirven para cualquier mercado y marco temporal
Como has visto al principio del artículo, una estrategia de trading se basa en aprovechar un evento concreto que se produce en el mercado. Si no se dan las condiciones necesarias, algunos traders algorítmicos optan por desconectar sus estrategias momentáneamente.
De la misma manera, cuando se producen cambios en los mercados, puede ser necesario ajustar la configuración del bot. Deberás mantenerte alerta en todo momento, monitorizar lo que está ocurriendo y hacer tests de manera frecuente.
Por otra parte, dicho evento concreto podría no producirse de la misma manera en todos los mercados, por lo que el bot no funcionará o necesitará de ajustes en su configuración. Al mismo tiempo, el precio podría estar subiendo o bajando, pero no de la forma esperada por tu bot. Esto hará que no tome la entrada.
Conclusión
Acabas de ver que programar un robot de trading rentable es más fácil de lo que parece en un principio. El primer paso, es tener clara qué característica del mercado quieres explotar. A continuación, debes definir una manera objetiva de detectar cuándo se produce.
Puedes hacerlo con indicadores técnicos o a través de la acción de precio. En cualquier caso, es vital que intentes mantener tu idea lo más simple posible y que tenga coherencia. Después de describir tu estrategia, escribe el código y haz un backtest. Para asegurarte de que tu estrategia es robusta y el bot puede ser rentable a largo plazo, es recomendable que lo hagas a través del sistema walk-forward.
Preguntas Frecuentes
¿Qué tan Efectivos son los Bots de Trading?
Los bots de trading programados sobre una idea de inversión coherente que efectúen una gestión del riesgo apropiada pueden ser efectivos a largo plazo. Una de sus ventajas frente al trading manual es que evitan los errores humanos y los comportamientos emocionales.
¿Cómo Funciona un Robot en Trading?
Un robot de trading monitoriza un mercado, esperando a que aparezcan unas señales predefinidas y abre automáticamente posiciones cuando esto sucede. Después, gestiona las operaciones y las cierra siguiendo las instrucciones que le ha dado el programador.
¿Qué Es el Bot de Forex?
Bot de forex es un término que se utiliza para referirse a las estrategias de trading automatizadas que se ejecutan sin intervención humana. Los robots son programas informáticos que analizan los mercados y abren o cierran posiciones cuando es conveniente.
¿Qué Es un Robot de Inversión?
Un robot de inversión es un programa informático que ejecuta de manera automática una estrategia de trading.