[¡Archivo!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no lo dejéis pasar. No podría ir a ningún sitio sin ti - 2. - página 415

 

Castigarlo, ponerlo en la esquina. :)

En esencia, manténgalo simple, la frase está construida de tal manera que puede romper su cerebro y no entender lo que quiere. Nadie sabe lo que ha "aprendido" de ti antes.

 
Shniperson:
Señores, ¿cómo "entrenar" a un EA para que no opere de noche? Es decir, la hora del terminal entre las 23 y las 02 horas (GMT)... Hour()>=2&Hour()<=23 no ayudó...

extern int bh = 0; // час начала
extern int bm = 0; // минута начала
extern int eh = 23;// час окончания
extern int em = 2; // минута окончания

int start()
{
   if(TradeTime() && Ваши условия входа) OrderSend(...);
}

bool TradeTime()
  { 
   int TimeNow = 60 * Hour() + Minute();   
   if (60 * bh + bm < TimeNow && TimeNow < 60 * eh + em) return (true);
   return (false);
  }
 

Здравствуйте всем. У меня МТ4 (демо) не связывается с сервером, даже не пытается. Постоянно горит надпись "нет связи". Пробовал "просканировать серверы" - не помогает.

 
Katso:


¿Hay algún apoderado en camino?
 
Vinin:

No
 
int start()                         
  {
//--------------------------------------------------------------------
   int
   S1,S2,                                                                 //S1 и S2 площадя следущего и предыдущего прямоугольников соответственно 
   j;                                                                     //значения стороны
//--------------------------------------------------------------------
   for( j=499, int i=1; i<500; i++,j--)                                   //последовательный перебор значений площади
      {
       S2=S1; S1=i*j;                                                     //вычисляем площадь следущую и предыдущую
       if(S2>=S1)                                                         //проверка максимального значения  
         {
          i--; j++;                                                       //возвращаем значения сторон соответствующие максимальной площади
          break;
         }
      }                 
//--------------------------------------------------------------------
Alert("Максимальная площадь равна ",S2,"mm*mm  A=",i,"mm B=",j,"mm");        
return(0);
  }
//--------------------------------------------------------------------

Este algoritmo funciona correctamente, pero si se intercambian los operadores de asignación en la cabecera de la sentencia for de la primera expresión, el programa deja de funcionar. ¿Por qué?

int start()                         
  {
//--------------------------------------------------------------------
   int
   S1,S2,                                                                 //S1 и S2 площадя следущего и предыдущего прямоугольников соответственно 
   j;                                                                     //значения стороны
//--------------------------------------------------------------------
   for(int i=1, j=499; i<500; i++,j--)                                    //последовательный перебор значений площади
      {
       S2=S1; S1=i*j;                                                     //вычисляем площадь следущую и предыдущую
       if(S2>=S1)                                                         //проверка максимального значения  
         {
          i--; j++;                                                       //возвращаем значения соответствующие максимальной площади
          break;
         }
      }                 
//--------------------------------------------------------------------
Alert("Максимальная площадь равна ",S2,"mm*mm  A=",i,"mm B=",j,"mm");        
return(0);
  }
//--------------------------------------------------------------------
 
VladimirR:

Este algoritmo funciona correctamente, pero si se intercambian los operadores de asignación en la cabecera de la sentencia for de la primera expresión, el programa deja de funcionar. ¿Por qué?






for(int i=1, j=499;

declarar la variable j por segunda vez

 
ilunga:

declarar la variable j por segunda vez

Gracias)))

 
VladimirR:

Este algoritmo funciona correctamente, pero si se intercambian los operadores de asignación en la cabecera de la sentencia for de la primera expresión, el programa deja de funcionar. ¿Por qué?







Me pregunto por qué los valores del contador deben cambiarse dos veces en el bucle. Y por alguna razón no hay asignación (preliminar) de S2. Al principio es 0, y sólo en la segunda iteración (más concretamente en la tercera) hay una comparación real de valores (depende de cómo se cuente desde cero o desde uno)
 

Esto tampoco funciona

int start()
{
int S1,S2; //S1 y S2 áreas de los rectángulos siguiente y anterior respectivamente
//----
for( int i=1, j=499; i<500; i++,j--) //buscar secuencialmente valores de área
{
S2=S1; S1=i*j; //calcular área siguiente y anterior
if(S2>=S1) //comprobar valor máximo
{
i--; j++; //devolver valores correspondientes al área máxima
break;
}
}
//----
Alert("El área es igual a ",S2, "mm*mm A=",i, "mm B=",j, "mm");
return(0);
}
//+------------------------------------------------------------------+
Razón de la queja: