Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 6. - page 1069
Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
CloseAllBuy() est appelé à un seul endroit : dans la fonction OnTick() par la condition if(Bid>buycloseprice) CloseAllBuy() ; cette condition ne s'est pas produite lors de la nouvelle activation et ne s'est pas non plus produite pendant la période de désactivation, mais la fonction CloseAllBuy() a quand même été déclenchée lorsque l'EA a été réactivé.
Voici un morceau de code :
n'est pas visible.
Question:pourriez-vous me dire comment appliquer une variable globale dans ce cas précis ? Je n'arrive pas à comprendre. Merci.
Lisez la documentationVariables globales du terminal, consultez l'aide du méta-éditeur, la mise à jour y est plus rapide.
Vous pouvez également enregistrer les paramètres et les valeurs des variables importantes dans un fichier et les lire à partir de celui-ci lors du chargement.
Mais la plupart du temps, vous pouvez vous passer de tout cela, il suffit d'utiliser votre tête et de faire la bonne logique dans le code.
total=OrdersTotal() ;
if(total>0)
{
for(int i=0 ; i<=OrdersTotal() ; i++)
if(OrderSelect(i,SELECT_BY_POS)==true)
{
if(OrderType()==OP_BUY && OrderMagicNumber()==magic)
{ RefreshRates() ;
if(Bid>buycloseprice) CloseAllBuy() ;
}
if(OrderType()==OP_SELL && OrderMagicNumber()==magic)
{ RefreshRates() ;
if(Ask<sellcloseprice) CloseAllSell() ;
}
}
}
if((total==0) || (total>0 && OrderSelect(1,SELECT_BY_POS,MODE_TRADES)==true && OrderSymbol() !=Symbol())
{
Comment("Aucune position ouverte") ;
if(condition && timeBar !=iTime(Symbol(),Period(),1))
{
Print("Le critère-1 pour BAY est apparu") ;
int poz_1 = OrderSend(Symbol(),OP_BUY,lot,Ask,slip,0,0,NULL,magic,Blue) ;
Sleep(1000) ;
RefreshRates() ;
int poz_2 = OrderSend(Symbol(),OP_BUY,lot,Ask,slip,0,0,NULL,magic,Blue) ;
Sleep(1000) ;
RefreshRates() ;
int poz_3 = OrderSend(Symbol(),OP_BUY,lot,Ask,slip,0,0,NULL,magic,Blue) ;
Sleep(1000) ;
RefreshRates() ;
int poz_4 = OrderSend(Symbol(),OP_BUY,lot,Ask,slip,0,0,NULL,magic,Blue) ;
Sleep(1000) ;
RefreshRates() ;
int poz_5 = OrderSend(Symbol(),OP_BUY,lot,Ask,slip,0,0,NULL,magic,Blue) ;
timeBar=iTime(Symbol(),Period(),1) ;
double spread = (Ask-Bid) ;
buyopentime = iTime(Symbol(),Period(),0) ;
buycloseprice = NormalizeDouble((iOpen(Symbol(),Period(),0)+spread+75*Point),Digits) ;
Comment("Magic 510015 BAY") ;
Print("CLOSE PRICE = ",buycloseprice) ;
}
}
}
//+------------------------------------------------------------------+*/
void CloseAllBuy()
{
bool fc ;
for (int i=OrdersTotal()-1 ; i>=0 ; i--)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break ;
if (OrderType()==OP_BUY)
{
fc=OrderClose (OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),slip) ;
buycloseprice=0.0 ;
tc=OrderCloseTime() ;
}
}
}
Répétition dans le texte :
On ne sait toujours pas d'où vient le buycloseprice, ce qui lui arrive avant la conditionif(Bid>buycloseprice) CloseAllBuy() ;. Parce que je vois seulement ceci dans le code, après - buycloseprice = NormalizeDouble((iOpen(Symbol(), Period(), 0)+spread+75*Point), Digits) ;, mais où cebuycloseprice est déclaré et quelle valeur est initialisée ?
S'il s'agit du prix de clôture supposé d'un ordre d'achat, alors la logique s'effondre ici car la valeur est transmise à la variable après son déclenchement et vous ne nous avez pas montré ce qu'elle contenait auparavant.
Maintenant un peu d'arithmétique, il y a une telle boucle dans le code :
for(int i=0 ; i<=OrdersTotal() ; i++)
Disons qu'il y a 5 commandes allant de 0 à 4. La boucle compte de 0 à 5. Cette boucle fonctionne-t-elle correctement ?
De même, dans la ligne if(condition && timeBar!=iTime(Symbol(),Period(),1)), d'où viennent la condition et la timeBar?