Redactaré un asesor de forma gratuita - página 17

 
Hola, he empezado a aprender MQL4 y he empezado con el Asesor Experto de ejemplo MACD. Lo tengo todo resuelto. Creo que lo tengo claro, pero no consigo que funcione en mi Demo para varios pares de divisas a la vez. Si ya hay una posición abierta en el terminal (manualmente o por Expert Advisor) no funcionará. He probado todo lo que sé. No tengo suficientes conocimientos, por favor, aconséjenme qué debo añadir o arreglar.
 
igor.malish:
Hola, empecé a aprender MQL4 y empecé a usar el Asesor Experto de Muestra MACD. Lo he analizado. Creo que lo tengo todo resuelto, pero no puedo hacer que funcione como Asesor Experto de demostración en más de un símbolo al mismo tiempo. Si ya hay una posición abierta en el terminal (manualmente o por Expert Advisor) no funcionará. He probado todo lo que sé. No tengo suficientes conocimientos, por favor, aconséjenme qué debo añadir o corregir.

La muestra MACD no está diseñada para operar con múltiples instrumentos

total=OrdersTotal();

   if(total<1)

     {...
En esta condición, está prácticamente prohibido abrir operaciones, si ya se ha abierto al menos una, para cualquier instrumento.
 
dimeon:

La muestra MACD no está diseñada para operar con múltiples instrumentos

Esta condición prohíbe prácticamente la apertura de operaciones si al menos una, para cualquier instrumento, ya está abierta.
Tuve un problema similar, pero para un comercio por día. Es decir, la condición no es sólo OrdersTotal(), sino también del historial de los cerrados.
 
¿Hay alguna manera de vincular OrdersTotal, OrderSymbol y OrderMagicNumber?
 
igor.malish:
¿Hay alguna manera de vincular OrdersTotal, OrderSymbol y OrderMagicNumber?
Una pregunta tonta.
 
Saludos. ¿Puede alguien adaptar mi EA al nuevo mql? (#property strict) Se está desarrollando y su funcionalidad está mejorando, pero el lenguaje en el que está escrito es obsoleto. Este Asesor Experto es una modificación posterior de ZigZaHod v1.1 y necesita cambios mínimos para que pueda dominarlo y modificarlo. Estoy dispuesto a implicarme a fondo en ella. Me falta entender lo que hay que rehacer.
 

Ayuda a corregir el error: La idea es que el EA debe trabajar una vez al día, cuando el nuevo día comienza. 1am. debe abrir dos órdenes pendientes en un alto y bajo

Me refiero a la vela que cerró a las 00:00. No debería hacer nada más hasta el día siguiente. ¿Qué estoy haciendo mal?


extern string Times = "Time";
extern int StartHour    = 1;
extern int TakeProfit   = 50;
extern int StopLoss     = 50;
extern int Lots         = 1;

void OnTick()
{ 
   static bool IsFirstTick = true;
   static int ticket = 0;
   int h=TimeHour(TimeCurrent());
   Alert("TimeHor: ", h);
   if(Hour() == StartHour)
   {
    if (IsFirstTick == true)
      IsFirstTick - false;
      
      bool res;
      res= OrderSelect(ticket, SELECT_BY_TICKET);
      if(res == true)
      { 
         if(OrderCloseTime() == 0)
         {
            bool res2;
            res2 = OrderClose(ticket, Lots, OrderClosePrice(), 10);
            
            if(res2 == false)
            {
               Alert("Error Closing Order #", ticket);
               }
         }   
      }
       if(Open[0] < Open[StartHour])
      {
         ticket = OrderSend(Symbol(), OP_BUYLIMIT, Lots, High[1],10, Low[1]-StopLoss*Point, High[1]+TakeProfit*Point,"Set bu ForexRobot");
         if(ticket < 0)
         {
           Alert("Error Sending Order!");
         }  
       }
       else
       {
         ticket = OrderSend(Symbol(), OP_SELLLIMIT, Lots, Low[1],10, High[1]+StopLoss*Point, Low[1]+TakeProfit*Point,"Set bu ForexRobot");
         if(ticket < 0)
         {
           Alert("Error Sending Order!");
         } 
    }   
}
 
MIR_KAZAN:

Ayuda a corregir el error: La idea es que el EA debe trabajar una vez al día, cuando el nuevo día comienza. a la 1 am. debe abrir dos órdenes pendientes en la alta y baja

Me refiero a la vela que cerró a las 00:00. No debería hacer nada más hasta el día siguiente. ¿Qué estoy haciendo mal?


Al pegar el código, por favor, utilice las capacidades incrustadas del foro:pegue el código correctamente en el foro
 
barabashkakvn:
Al pegar el código, por favor, utilice las funciones integradas en el foro:Inserte el código correctamente en el foro
Lo tengo.
 
MIR_KAZAN:

Ayuda a corregir el error: La idea es que el EA debe trabajar una vez al día, cuando el nuevo día comienza. 1am. debe abrir dos órdenes pendientes en un alto y bajo

Es decir, una vela que cerró a las 00:00. No debería hacer nada más hasta el día siguiente. ¿Qué estoy haciendo mal?


Hay un error:

      IsFirstTick - false;

Debería ser =