[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 4. - pagina 313

 
drknn:


No. Non è necessario dichiarare una variabile all'interno del ciclo ad ogni iterazione.

Hmmm... grazie
 
drknn:

Spero di non aver cancellato nulla, altrimenti il compilatore si lamenterebbe della parola else:


bool Torg=true;

if(OrdersTotal()>0){
for(int i=OrdersTotal()-1;i>=0;i--){
if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)){
if(OrderMagicNumber()!=MagicNumber) continue;
if(OrderOpenTime()>=Time[0]) Torg=false;
}
}
}
 
drknn:
Vladimir, il compagno è già stato bandito. Rimuovi il link dalla citazione.
 
GarKain:

Spero di non aver cancellato nulla di necessario, altrimenti il compilatore si lamenterebbe della parola else:

if(OrdersTotal()>0){// linea non necessaria - se non ci sono ordini, il contatore del ciclo sarà a zero e il ciclo non sarà eseguito
for(int i=OrdersTotal()-1;i>=0;i--){// passa attraverso tutti gli ordini
if (! OrderSelect(i, SELECT_BY_POS, MODE_TRADES)){// se nessun ordine è selezionato, allora...
if(OrderMagicNumber()!=MagicNumber) continue; //se il numero magico non è il nostro, allora procedete ad un altro ordine
if(OrderOpenTime()>=Time[0]) Torg=false;
}
// Ma cosa succede se l'ordine è ancora selezionato dalla lista?
}
}


P.S.

La linea che segnala un numero di errore quando si seleziona un ordine non dovrebbe essere stata rimossa per qualche motivo - a volte succede che salta in aria. In generale, la gestione degli errori è meglio usata ovunque possa verificarsi.

 
drknn:
if(OrdersTotal()>0){// linea non necessaria - se non ci sono ordini, il contatore del ciclo sarà a zero e il ciclo non sarà eseguito
for(int i=OrdersTotal()-1;i>=0;i--){// passa attraverso tutti gli ordini
if (! OrderSelect(i, SELECT_BY_POS, MODE_TRADES)){// se nessun ordine è selezionato, allora.
if(OrderMagicNumber()!=MagicNumber) continue; //se il numero magico non è il nostro, allora procedete ad un altro ordine
if(OrderOpenTime()>=Time[0]) Torg=false;
}
// Ma cosa succede se l'ordine è ancora selezionato dalla lista?
}
}


Che ne dite di questo?

bool Torg;
if(OrdersTotal()==0) Torg=true;
if(OrdersTotal()>0){
for(int i=OrdersTotal()-1;i>=0;i--){
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)){
if(OrderMagicNumber()!=MagicNumber) continue;
if(OrderOpenTime()>=Time[0]) Torg=false;
if(OrderOpenTime()<Time[0]) Torg=true;
}
}
}
 
GarKain:
Che ne dite di questo?

Cosa succede se provi a controllare tu stesso questo ciclo nello script? Beh, solo stampando il risultato - quale posizione assume la variabile Torg nei diversi casi. Pensi di non poterlo fare da solo?
 
drknn:
Cosa succede se provi a controllare tu stesso questo ciclo nello script? Beh, solo stampando il risultato - quale posizione assume la variabile Torg nei diversi casi. Pensi di non poterlo fare da solo?
Non credo
 
GarKain:
Non credo.

Scarica - ti aiuterà - http://depositfiles.com/files/eg4fmn3bp
 
GarKain: Le classi sono numerate dal basso verso l'alto. Premi il pulsante lodge e inizia con gli script.
 
Si è scoperto che un numero illimitato di ordini è stato aperto su una nuova barra. prima erano tutti aperti in una volta, ma ora si aspetta l'apertura di uno e tutti gli altri sono aperti.