Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 534

 
PolarSeaman:

Puede que sí:

¿Dónde está el estado del día anterior? Resulta que después de la primera orden en el período 0-8, el paso ya será 10. Y necesitamos que sean 5. Y sólo después de las 8 se convertirá en 10. Entonces devolvemos el paso =5 a 0 si no hay órdenes abiertas del día anterior. Si la serie continúa, entonces paso =10 antes de su cierre.
 
PolarSeaman:

La cuestión es que si se establece el intervalo de tiempo como en el EA

Necesito excluir de los cálculos las velas que están en el intervalo.

En el indicador se trabaja en bucle. Entonces, ¿por qué hay que salir del bucle?

¿No sabes cómo saltar una iteración en el bucle?

continuar

 
Tigerfreerun:
¿Dónde está la condición del día anterior? Resulta que después de la primera orden en el período 0-8, el paso ya será 10. Y necesitamos que sean 5. Y sólo después de las 8 se convertirá en 10. Entonces devolvemos el paso =5 a 0 si no hay órdenes abiertas del día anterior. Si la serie continúa, entonces paso =10 antes de su cierre.

La función debe devolver тру, si hay un pedido abierto ayer

   OP_TO(int mn)
     {
     int i, k=OrdersTotal();
      for(i=0; i<k; i++) 
        {
         if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) 
           {
            if(OrderSymbol()==Symbol()) 
              {
               if(OrderType()==OP_BUY || OrderType()==OP_SELL) 
                 {
                  if(OrderMagicNumber()==mn) 
                    {
                     if(TimeDay(OrderOpenTime())==(Day()-1)
                      &&  TimeMonth(OrderOpenTime())==Month()
                      &&  TimeYear (OrderOpenTime())==Year()) return(True);
                    }
                 }
              }
           }
        }

      return(False);
     }
if(Hour()>=0&&Hour()<=8&&!OP_TO(mag_n))step = 5; else step =10;
 
Artyom Trishkin:

En el indicador se trabaja en un bucle. Entonces, ¿por qué hay que salir del bucle con return?

¿Sabes cómo saltar una iteración en un bucle?

continuar

Gracias. No lo entiendo, he limitado la hora pero la impresión muestra la hora a las 19:30 y a las 23:00 y a las 5:50, ¿qué pasa?

   for(int i=limit-2; i>0; i--) 
     {
     if(Hour()>=17&&Hour()<=11)continue;
      if(i%2==0) 
        {
         if(open[i]<close[i] && open[i+1]>close[i+1]) 
           {
            k1++;
           // if(k1>max) {max=k1; dat_max=time[i];}
            if(k1>=4)Print("Num: ",k1,"dat_max ",time[i]);
            SetText("Obj_"+(string)time[i],(string)k1,time[i],high[i],Arr);
           }
         else k1=0;
         
           } else {
         if(open[i]<close[i] && open[i+1]>close[i+1]) 
           {
            k2++;
            //if(k2>max){ max=k2; dat_max=time[i];}
            if(k2>=4)Print("Num: ",k2,"dat_max ",time[i]);
            SetText("Obj_"+(string)time[i],(string)k2,time[i],high[i],Arr);
           }
         else k2=0;
         
        }
      
     }
 
PolarSeaman:

Gracias. No entiendo, la impresión muestra la hora como 19:30 y 23:00 y 5:50 ¿qué pasa?

¿Qué devuelve la función Hour()?
 
PolarSeaman:

La función debe devolver тру, si hay un pedido abierto ayer

Es un poco complicado para mí. ¿Podría explicar en qué parte del código para agregar y qué significa mn y mag_n? ¿dónde debo poner mi EA medjic aquí?




 
Señores programadores, ayúdenme a entender el error. minPrice = NormalizeDouble (GetMinPrice(),Digits); Error: 'minPrice' - se esperaba punto y coma.
 
KRIKS:
Señores, por favor ayúdenme a entender el error. minPrice = NormalizeDouble (GetMinPrice(),Digits); Error: 'minPrice' - se esperaba punto y coma.

Mira el código antes de minPrice. Ahí no hay ; (punto y coma).

 
Ihor Herasko:

Mira el código antes de minPrice. Ahí no hay ; (punto y coma).

int inicio()

{

minPrice = NormalizeDouble (GetMinPrice()Digits);

maxPrice = NormalizeDouble(GetMaxPrice()Digits); ¿Puede el inicio del int ir seguido de (;) ?

 
KRIKS:

int inicio()

{

minPrice = NormalizeDouble(GetMinPrice()Digits);

maxPrice = NormalizeDouble(GetMaxPrice()Digits); ¿Puede el inicio del int ir seguido de (;) ?

{

minPrice = NormalizeDouble (GetMinPrice(),Digits);

maxPrice = NormalizeDouble(GetMaxPrice(),Digits);

Razón de la queja: