En este artículo, nos enfocaremos en la creación de un sistema de trading automático (EA) utilizando la plataforma MetaTrader 4 (MT4). Esta estrategia se basa en el cruce de dos medias móviles, lo que permite identificar tendencias de mercado con mayor precisión.
Definiendo Variables de Entrada
Comenzamos definiendo las variables de entrada que nuestro EA utilizará:
//--- Parámetros de entrada input int period_ma_fast = 8 //Periodo de la Media Móvil Rápida input int period_ma_slow = 20; //Periodo de la Media Móvil Lenta input double takeProfit = 20.0; //Take Profit (pips) input double stopLoss = 20.0 //Stop Loss (pips) input double lotSize = 0.10 //Tamaño del Lote input double minEquity = 100.0; //Equidad Mínima ($) input int Slippage = 3; //Deslizamiento input int MagicNumber = 889 //Número Mágico
Definición de Variables Globales
A continuación, definimos variables globales que estarán accesibles en todas las funciones:
//Variables Globales double myPoint = 0.0; int mySlippage = 0; int BuyTicket = 0; int SellTicket = 0;
Inicialización del EA
Cuando se ejecuta el EA, la primera función que se llama es OnInit(). Este es un buen momento para validar y inicializar las variables globales.
int OnInit() { //Validación de entradas if (period_ma_fast >= period_ma_slow || takeProfit < 0.0 || stopLoss < 0.0 || lotSize < 0.01 || minEquity < 10){ Alert("ADVERTENCIA - Datos de entrada no válidos"); return (INIT_PARAMETERS_INCORRECT); } myPoint = GetPipPoint(Symbol()); mySlippage = GetSlippage(Symbol(),Slippage); return(INIT_SUCCEEDED); }
Función OnTick
Cuando el precio del mercado se mueve (tick), la función OnTick() se ejecutará, procesando todas las instrucciones dentro de su bloque:
void OnTick() { if (cekMinEquity()){ int signal = -1; bool isNewCandle = NewCandle(Period(), Symbol()); signal = getSignal(isNewCandle); transaction(isNewCandle, signal); setTPSL(); }else{ //Detener trading, porque la equidad no es suficiente Print("EA se detendrá debido a insuficiencia de capital"); } }
Configuración de Take Profit y Stop Loss
La función setTPSL() se encarga de establecer los niveles de take profit y stop loss para cada operación abierta:
void setTPSL(){ int tOrder = 0; string strMN = "", pair = ""; double sl = 0.0, tp = 0.0; pair = Symbol(); tOrder = OrdersTotal(); for (int i=tOrder-1; i>=0; i--){ bool hrsSelect = OrderSelect(i, SELECT_BY_POS, MODE_TRADES); strMN = IntegerToString(OrderMagicNumber()); if (StringFind(strMN, IntegerToString(MagicNumber), 0) == 0 && StringFind(OrderSymbol(), pair, 0) == 0 ){ if (OrderType() == OP_BUY && (OrderTakeProfit() == 0 || OrderStopLoss() == 0) ){ if (takeProfit > 0) { tp = OrderOpenPrice() + (takeProfit * myPoint); }else{ tp = OrderOpenPrice(); } if (stopLoss > 0) { sl = OrderOpenPrice() - (stopLoss * myPoint); }else{ sl = OrderStopLoss(); } if (OrderTakeProfit() != tp || OrderStopLoss() != sl ){ if(OrderModify(OrderTicket(), OrderOpenPrice(), sl, tp, 0, clrBlue)){ Print ("Orden Modificada con Éxito"); } } } if (OrderType() == OP_SELL && (OrderTakeProfit() == 0 || OrderStopLoss() == 0) ){ if (takeProfit > 0) { tp = OrderOpenPrice() - (takeProfit * myPoint); }else{ tp = OrderOpenPrice(); } if (stopLoss > 0) { sl = OrderOpenPrice() + (stopLoss * myPoint); }else{ sl = OrderStopLoss(); } if (OrderTakeProfit() != tp || OrderStopLoss() != sl ){ if (OrderModify(OrderTicket(), OrderOpenPrice(), sl, tp, 0, clrRed)){ Print ("Orden Modificada con Éxito"); } } } }//fin del ciclo for }
Únete a Nuestra Comunidad
Para más educación y compartir conocimientos en trading, únete a nuestro grupo de Telegram: t.me/codeMQL
Descarga Nuestra App
Si estás buscando una aplicación para apoyar tu trading, descarga nuestra app SignalForex en la Play Store: SignalForex
연관 포스트
- Estrategia de Trading con Medias Móviles en MT4 – Sistema de Automatisación para Inversiones
- Divergencia de Criptomonedas - Sistema de Trading para MetaTrader 4
- SAR_MACD_EA – Sistema de Trading Automático para MetaTrader 4
- EA Simple 2MA I: Estrategia de Trading Automático para MetaTrader 4
- Estrategia de Trading con Head and Shoulders - Sistema de Trading Automático para MetaTrader 4