[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Non potrei andare da nessuna parte senza di te - 2. - pagina 415

 

Punirlo, metterlo in un angolo. :)

E in sostanza - tienilo semplice, il fraseggio è così costruito che puoi romperti il cervello e non capire cosa stai cercando di fare. Nessuno sa cosa ha "imparato" da voi prima.

 
Shniperson:
Signori, come faccio ad "allenare" un EA a non fare trading di notte? Cioè il tempo terminale tra le 23 e le 02 ore (GMT)... Hour()>=2&Hour()<=23 non ha aiutato...

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:


C'è una delega in arrivo?
 
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);
  }
//--------------------------------------------------------------------

Questo algoritmo funziona correttamente, ma se si scambiano gli operatori di assegnazione nell'intestazione dell'istruzione for nella prima espressione, il programma non funziona più. Perché?

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:

Questo algoritmo funziona correttamente, ma se si scambiano gli operatori di assegnazione nell'intestazione dell'istruzione for nella prima espressione, il programma non funziona più. Perché?






for(int i=1, j=499;

dichiarare la variabile j una seconda volta

 
ilunga:

dichiarare la variabile j una seconda volta

Grazie)))

 
VladimirR:

Questo algoritmo funziona correttamente, ma se si scambiano gli operatori di assegnazione nell'intestazione dell'istruzione for nella prima espressione, il programma non funziona più. Perché?







Mi chiedo perché i valori dei contatori debbano essere cambiati due volte nel ciclo. E per qualche motivo non c'è un'assegnazione (preliminare) di S2. All'inizio è 0, e solo alla seconda iterazione (più precisamente alla terza) c'è un vero confronto di valori (dipende da come contare da zero o da uno)
 

Anche questo non funziona

int start()
{
int S1,S2; //s1 e S2 aree dei rettangoli successivo e precedente rispettivamente
//----
for( int i=1, j=499; i<500; i++,j--) //ricerca sequenzialmente i valori dell'area
{
S2=S1; S1=i*j; //calcolo area successiva e precedente
if(S2>=S1) //controllo valore massimo
{
i--; j++; //ritorno valori corrispondenti alla massima area
break;
}
}
//----
Alert("Area uguale a ",S2, "mm*mm A=",i, "mm B=",j, "mm");
return(0);
}
//+------------------------------------------------------------------+
Motivazione: