[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate. Non posso andare da nessuna parte senza di te. - pagina 14

 

la funzione stessa smetterà di funzionare, se c'è un requote dalla condizione else

if ( res!=-1){    
//..
}else{
    err = GetLastError();
    if ( err > 1) try = 0;
    Comment("Ошибка - ", err);          
}

try = 0, così il ciclo while si ferma e openOrder() restituisce false

Ma se usiamo il costrutto while(!openOrder(...)){}, allora continuerà ad andare avanti finché non apre un ordine

 
keekkenen . È quello che mi incuriosisce nella tua funzione start() while(!openOrder(...)){} non riveli cosa viene fatto lì in {}. Limita il numero di tentativi di riquotazione?
 

Dato che avete scritto che l'ordine dovrebbe aprirsi, ho dato una costruzione così "rigida", se deve aprirsi, si aprirà indipendentemente da quanti tentativi ci vogliono... Se apriamo gli ordini normalmente, allora mentre non è necessario, possiamo passare il numero di tentativi in try e nella funzione determinare già se reagire agli errori critici o ignorarli e provare solo ad aprire l'ordine try once...


Il punto di while(!openOrder(...)){} è che creiamo un ciclo eterno, cioè, funzionerà finché l'ordine non sarà aperto.

In realtà, definire quali tattiche dovrebbero essere utilizzate quando si aprono gli ordini, vi aiuteremo...

 

Ecco la domanda:

Non posso lavorare con un array.

Inizializzo l'array, lo riempio con qualsiasi dato, ma quando lo leggo, ci sono degli zeri.

Cosa sto facendo di sbagliato?


double MASS[];

for (int i = 0; i < 10; i++)
 {
  MASS[ i]= i;
 }
for (int n = 0; n < 10; n++)
 {
  Print( MASS[ n]);
 }
 
Kontra писал(а) >>

Non posso lavorare con un array.

Dovete specificare la dimensione dell'array, per esempio quando lo dichiarate:

double MASS[10];

O allora:

ArrayResize(MASS,10);
 

Cosa succede se non so che dimensioni avrà il mio array?

E anche se lo faccio, non si compila:

Inserisco una variabile esterna:

extern int Razmer = 10;

E il resto del testo:

   double MASS[ Razmer];

for (int i = 0; i < 10; i++)
 {
  MASS[ i]= i;
 }
for (int n = 0; n < 10; n++)
 {
  Print( MASS[ n]);

L'uscita è:

'Razmer' - numero intero atteso C:\Program Files\MetaTrader - Alpari2\experts\temp.mq4 (36, 16)
']' - virgola o punto e virgola attesi C:\Program Files\MetaTrader - Alpari2\experts\temp.mq4 (36, 22)
'MASS' - variabile non definita C:\Program Files\MetaTrader - Alpari2\experts\temp.mq4 (40, 3)
'MASS' - variabile non definita C:\Program Files\MetaTrader - Alpari2\experts\temp.mq4 (44, 9)

 
Kontra писал(а) >>

Cosa succede se non so che dimensione avrà il mio array?

Quindi dovete usare la funzione ArrayResize quando sapete quanti elementi ci saranno nell'array.

Con una variabile esterna, come potete vedere, non funziona:)

Si può fare in questo modo:

ArrayResize(MASS,Razmer);
 

Grazie, caro chirurgo.

Funziona tutto :)

 
int init()
  { 
   double A=AccountBalance()         //Определяем баланс
   double B=NormalizeDouble( A/50,0)  //Выполняем вычисления и делаем результат целым числом
   double Lots= B*0.01                //Вычисление лота.

if ( Lots>0)Alert("Лот будет ", Lots )

   return(0);
  }
Qual è l'errore qui e come può essere implementato?
 

Cosa sta cercando di ottenere esattamente?