este codigo me da error por un desvalance de parentesis pero no encuentro solucionarlo:
MQL4:
//+------------------------------------------------------------------+ //| 20200.mq5 | //| Copyright 2024, MetaQuotes Ltd. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2024, MetaQuotes Ltd." #property link "https://www.mql5.com" #property version "1.00" #property strict // Definir las variables globales aquí int periodosMediaMovilCorta = 20; int periodosMediaMovilLarga = 200; double takeProfitPips = 140; double porcentajeCierre = 0.15; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { // Inicialización del asesor experto return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { // Obtener la información del mercado double mediaMovilCorta = iMA(_Symbol, 0, periodosMediaMovilCorta, 0, MODE_SMA, PRICE_CLOSE, 0); double mediaMovilLarga = iMA(_Symbol, 0, periodosMediaMovilLarga, 0, MODE_SMA, PRICE_CLOSE, 0); double precio = SymbolInfoDouble(_Symbol, SYMBOL_BID); // Comprobar si hay un cruce de medias móviles hacia arriba (posición larga) if (mediaMovilCorta > mediaMovilLarga && iMA(_Symbol, 0, periodosMediaMovilCorta, 0, MODE_SMA, PRICE_CLOSE, 1) <= iMA(_Symbol, 0, periodosMediaMovilLarga, 0, MODE_SMA, PRICE_CLOSE, 1)) { // Abrir una posición larga OrderSend(_Symbol, OP_BUY, 0.1, precio, 3, 0, 0, "Compra por EA", 0, 0, Green); } // Comprobar si hay un cruce de medias móviles hacia abajo (posición corta) if (mediaMovilCorta < mediaMovilLarga && iMA(_Symbol, 0, periodosMediaMovilCorta, 0, MODE_SMA, PRICE_CLOSE, 1) >= iMA(_Symbol, 0, periodosMediaMovilLarga, 0, MODE_SMA, PRICE_CLOSE, 1)) { // Abrir una posición corta OrderSend(_Symbol, OP_SELL, 0.1, precio, 3, 0, 0, "Venta por EA", 0, 0, Red); } // Comprobar si hay posiciones abiertas y cerrarlas según las condiciones for (int i = OrdersHistoryTotal() - 1; i >= 0; i--) { if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY) && OrderSymbol() == _Symbol) { if (OrderType() == OP_BUY && (precio - OrderOpenPrice()) >= takeProfitPips * Point) { // Cerrar la posición larga OrderClose(OrderTicket(), OrderLots(), SymbolInfoDouble(_Symbol, SYMBOL_BID), 3, Green); else if (OrderType() == OP_SELL && (OrderOpenPrice() - precio) >= takeProfitPips * Point) { // Cerrar la posición corta OrderClose(OrderTicket(), OrderLots(), SymbolInfoDouble(_Symbol, SYMBOL_ASK), 3, Red); } } } }
Last edited by a moderator: