Mi terminal mql4 abre mas operaciones de las que mi boor le indica

 

Buenas tardes, a ver si porfavor alguien me puede echar un cable, tengo un sistema automatizado de cruce de medias el caso es que ayer el activo en el que lo puse en marcha se abrieron 3 operaciones correctamente el inconveniente es que en vez de 3 se abrieron nueve y no entiendo porque os lo agradezco 

Saludos

Archivos adjuntos:
 
Pedroteva:

Buenas tardes, a ver si porfavor alguien me puede echar un cable, tengo un sistema automatizado de cruce de medias el caso es que ayer el activo en el que lo puse en marcha se abrieron 3 operaciones correctamente el inconveniente es que en vez de 3 se abrieron nueve y no entiendo porque os lo agradezco 

Saludos


  • Debe compartir código usando el botón 'Código'.

 

  • Por lo general, las personas que no pueden codificar no reciben ayuda gratuita en este foro, aunque podría suceder si tiene suerte. Sea paciente.
  • Si muestra sus intentos y describe su problema con claridad, probablemente recibirá una respuesta de la comunidad.
  • Si no quiere aprender a codificar, eso no es un problema. Puede mirar la sección CodeBase donde encontrara código libre y gratuito, o en el Market para productos de pago (también a veces gratis). Por último, también tiene la opción de contratar a un programador en la sección Freelance.
 
input int SL= 30;
input int TK= 90;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   
   
   
   if( Comprar() )
   { 
       OrderSend(NULL,OP_BUY,0.50,Ask,1,Ask-(Point*SL*10),Ask+(Point*TK*10));
       
      
   
  }
  
  }
//+------------------------------------------------------------------+

bool Comprar()
 {
   double MediaCortaActual = iMA(NULL,0,45,0,MODE_EMA,PRICE_CLOSE,1);
   double MediaCortaAnterior = iMA(NULL,0,45,0,MODE_EMA,PRICE_CLOSE,2);
   double MediaLargaActual = iMA(NULL,0,200,0,MODE_SMA,PRICE_CLOSE,1);
   double MediaLargaAnterior = iMA(NULL,0,200,0,MODE_SMA,PRICE_CLOSE,2);

   if(MediaCortaActual>MediaLargaActual && MediaCortaAnterior<MediaLargaAnterior)
       return true;

    return false;
  }
 
Pedroteva #:
Es todo el código? 

El EA está configurado para ejecutarse en cada tick, sin comprobar si ya hay una orden abierta. Esto podría provocar la apertura de múltiples operaciones consecutivas.

Además, te recomendaría añadir un temporizador que impida la apertura de una nueva operación mientras se esté procesando una anterior.

Adicionalmente, por lo general, se suele imprimir en una linea si todo ha ido bien al mandar una orden, y si no ha sido asi, qué error ha habido

Razón de la queja: