[Archive] Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Je ne peux aller nulle part sans toi - 2. - page 415

 

Le punir, le mettre dans le coin. :)

Et en substance - restez simple, le phrasé est tellement construit que vous pouvez vous casser le cerveau et ne pas comprendre ce que vous essayez de faire. Personne ne sait ce que vous lui avez "appris" auparavant.

 
Shniperson:
Messieurs, comment "entraîner" un EA à ne pas trader la nuit ? C'est-à-dire l'heure du terminal entre 23 et 02 heures (GMT)... Hour()>=2&Hour()<=23 n'a pas aidé...

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:


Y a-t-il une procuration en cours ?
[Удален]  
Vinin:

Non
 
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);
  }
//--------------------------------------------------------------------

Cet algorithme fonctionne correctement, mais si vous intervertissez les opérateurs d'affectation dans l'en-tête de l'instruction for de la première expression, le programme ne fonctionne plus. Pourquoi ?

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:

Cet algorithme fonctionne correctement, mais si vous intervertissez les opérateurs d'affectation dans l'en-tête de l'instruction for de la première expression, le programme ne fonctionne plus. Pourquoi ?






for(int i=1, j=499;

déclarer la variable j une seconde fois

 
ilunga:

déclarer la variable j une seconde fois

Merci)))

 
VladimirR:

Cet algorithme fonctionne correctement, mais si vous intervertissez les opérateurs d'affectation dans l'en-tête de l'instruction for de la première expression, le programme ne fonctionne plus. Pourquoi ?







Je me demande pourquoi les valeurs des compteurs doivent être modifiées deux fois dans la boucle. Et pour une raison quelconque, il n'y a pas d'attribution (préliminaire) de S2. Au départ, il est égal à 0, et ce n'est qu'à la deuxième itération (plus précisément à la troisième) qu'il y a une véritable comparaison des valeurs (cela dépend de la façon de compter à partir de zéro ou de un).
 

Cela ne fonctionne pas non plus

int start()
{
int S1,S2 ; //S1 et S2 sont respectivement les aires des rectangles suivant et précédent
//----
for( int i=1, j=499 ; i<500 ; i++,j--) //recherche séquentielle des valeurs d'aire
{
S2=S1 ; S1=i*j ; //calcul de l'aire suivante et précédente
if(S2>=S1) //vérification de la valeur maximale
{
i-- ; j++ ; //renvoi des valeurs correspondant à l'aire maximale
break ;
}
}
//----
Alert("Area equals ",S2, "mm*mm A=",i, "mm B=",j, "mm") ;
return(0) ;
}
//+------------------------------------------------------------------+