error de compilacion mql5

freygiron

Trader
Jan 11, 2024
1
0
6
40
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: