[ARCHIVE !] Toute question de débutant, pour ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 4. - page 313

 
drknn:


Non. Vous n'avez pas besoin de déclarer une variable à l'intérieur de la boucle à chaque itération.

Hmmm... merci
 
drknn:

J'espère que je n'ai rien supprimé, sinon le compilateur se plaindrait du mot 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, le camarade a déjà été banni. Retirez le lien de la citation.
 
GarKain:

J'espère que je n'ai pas supprimé ce dont j'avais besoin, sinon le compilateur se plaindrait du mot else :

if(OrdersTotal()>0){// ligne inutile - s'il n'y a pas d'ordres, le compteur de la boucle sera à zéro et la boucle ne sera pas exécutée
for(int i=OrdersTotal()-1;i>=0;i--){// passer par tous les ordres
if (! OrderSelect(i, SELECT_BY_POS, MODE_TRADES)){// si aucun ordre n' est sélectionné, alors...
if(OrderMagicNumber()!=MagicNumber) continue ; //si le nombre magique n'est pas le nôtre, alors passez à une autre commande
if(OrderOpenTime()>=Time[0]) Torg=false ;
}
// Mais que faire si la commande est toujours sélectionnée dans la liste ?
}
}


P.S.

La ligne qui signale un numéro d'erreur lors de la sélection d'une commande n'aurait pas dû être supprimée pour une raison quelconque - il arrive parfois qu'elle saute. En général, il est préférable d'utiliser la gestion des erreurs partout où elles peuvent se produire.

 
drknn:
if(OrdersTotal()>0){// ligne inutile - s'il n'y a pas d'ordres, le compteur de la boucle sera à zéro et la boucle ne sera pas exécutée
for(int i=OrdersTotal()-1;i>=0;i--){// passer par tous les ordres
if (! OrderSelect(i, SELECT_BY_POS, MODE_TRADES)){// si aucun ordre n' est sélectionné, alors.
if(OrderMagicNumber()!=MagicNumber) continue ; //si le nombre magique n'est pas le nôtre, alors passez à une autre commande
if(OrderOpenTime()>=Time[0]) Torg=false ;
}
// Mais que faire si la commande est toujours sélectionnée dans la liste ?
}
}


Que pensez-vous de ça ?

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:
Que pensez-vous de ça ?

Et si vous essayez de vérifier vous-même cette boucle dans le script ? Eh bien, juste en imprimant le résultat - quelle position la variable Torg prend dans différents cas. Vous pensez que vous ne pouvez pas le faire vous-même ?
 
drknn:
Et si vous essayez de vérifier vous-même cette boucle dans le script ? Eh bien, juste en imprimant le résultat - quelle position la variable Torg prend dans différents cas. Vous pensez que vous ne pouvez pas le faire vous-même ?
Je ne pense pas.
 
GarKain:
Je ne pense pas.

Téléchargez - cela vous aidera - http://depositfiles.com/files/eg4fmn3bp
 
GarKain : Les classes sont numérotées de bas en haut. Appuyez sur le bouton "Lodge" et commencez avec les scripts.
 
Il s'est avéré qu'un nombre illimité d'ordres ont été ouverts sur une nouvelle barre. Avant, ils étaient tous ouverts en même temps, mais maintenant, l'un d'eux est censé s'ouvrir et tous les autres sont ouverts.
Raison: