[Archive] Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Je ne peux aller nulle part sans toi - 2. - page 397

 
VOLDEMAR:

Oui, si vous le définissez comme x=0, il ira à zéro ; si vous le définissez comme x :, il n'ira pas à zéro, il augmentera.


Je suis désolé, je n'avais pas remarqué que c'était à l'intérieur du départ .....
 
Je suis sûr que ça va se réinitialiser. Merci à tous, c'est un peu hilarant.
 
int tiket,tikett;double volume=0.1;int i=0,R1=0,R2=0,A=1 ;
int start()
  { 
int    X=0; 
double price=(Ask+Bid)/2;      
int total=OrdersTotal();                                         
                                       
   for (int i=total-1; i>=0; i--)                                 
   {
    if(OrderSelect(i, SELECT_BY_POS))                          
     { 
      Alert ("Uy",i);
      if(OrderSymbol()==Symbol()&&OrderMagicNumber( )==1000||OrderMagicNumber( )==2000 &&OrderSymbol()==Symbol())
       {
       X ++;
       }  
       }
       }
       Alert ("X",X);}

if (X==0)
   {
   tiket= OrderSend( Symbol(), OP_BUYSTOP,  volume*A, price +otstup*Point, Point* 3, R1, price+takeprofit*Point+otstup*Point, "OP_BUYSTOP", 1000,  expiration, Red); 
   Alert ("OP_BUYSTOP", GetLastError( )); 
   tikett= OrderSend( Symbol(), OP_SELLSTOP,  volume*A, price -otstup*Point, Point* 3,R2, price-takeprofit*Point-otstup*Point, "OP_SELLSTOP" , 2000,  expiration,C'0,128,255' );
    Alert ("OP_SELLSTOP", GetLastError( )); 
    }       


   return(0);
  

C'est le bon chemin à suivre !!!!!

 
Dimka-novitsek:
Je suis sûr que c'est réduit à zéro. Merci à tous, c'est un peu hilarant.
Il est préférable d 'utiliser comment(); puis, pendant les tests, vous pouvez voir ce qui se passe avec vos variables en haut à gauche.......
 
Merci ! !!
 
J'ai mis votre code, il ne compile pas. Quelle est l'erreur, je n'arrive pas à comprendre. Mais la chose principale, j'ai encore demandé, il doit y avoir une sorte d'erreur logique, les ordres sont ouverts sur chaque tick, très probablement cette partie ne fonctionne pas.
 if(OrderSymbol()==Symbol()&& OrderMagicNumber( )==1000||OrderMagicNumber( )==2000 && OrderSymbol()==Symbol())
C'est la partie qui ne fonctionne pas et je n'arrive pas non plus à la comprendre ?
 
VOLDEMAR:

Guys une question plus compliquée......

Comment faire pour qu'un EA ferme tous les ordres lorsqu'un profit donné est atteint .... Fermer uniquement les ordres sur un symbole ...

Exemple : EA travaille sur 3 paires montant à fermer tous les ordres sur un symbole 100p ...

Si l'EUR a plus de 100p, il ne fermera que les ordres sur l'EUR alors que d'autres peuvent avoir 200p ...

Si je prends accountbalanse(), alors l'EA ne se fermera que lorsque la somme des trois paires sera supérieure à 100p. Cette option ne fonctionne pas pour moi ! !!!.

Aidez-nous s'il vous plaît.........



Probablement avec
OrderProfit( )
Et aussi If (OrderSymbol()==Symbol()) {Bien que je ne puisse pas l'écrire moi-même...
 

Veuillez me dire ce qui ne va pas dans ce code. Le robot doit fermer un ordre de vente et s'il n'y en a pas, il doit acheter. L'erreur 4105 apparaît, que j'essaie de traiter, mais sans résultat. Peut-être y a-t-il d'autres façons de le traiter ?

PRICECURRENTPPROFIT est le niveau d'achat.


// ROBOT SELLS
// détermine s'il y a des ordres de vente
if (Bid>=PRICECURRENTPPROFIT && PRICECURRENTMPROFIT>0)
{
for(cnt=OrdersTotal();cnt>=0;cnt--)
{OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES) ; mode = OrderType() ; if(OrderSymbol() == "EURUSD")
{if(mode == OP_BUY)
{go=OrderClose(OrderTicket(), Lots, Bid, slippage, Green) ;

}
}
} // Si ouvert, fermer
} if(go != true) {Print("Impossible d'ouvrir l'ordre SELL. Erreur N", GetLastError()) ;
switch(GetLastError()) {cas 4105 : OrderSend("EURUSD",OP_SELL,Lots,Bid,2*Point,0,0, "robot vend",MagicNumber,0,Red);break;}
}

 

Je veux y ajouter quelques fonctions pour qu'il soit ouvert à la vente et à l'achat, mais pour la vente et l'achat, il faut un numéro magique distinct.

Si un ordre Take Profit se déclenche, le robot ferme tous les ordres en cours. Je veux qu'il ferme tous les ordres en cours OP_SELLLIMIT et les laisse inchangés OP_BUYLIMIT, OP_BUY.

 
Dimka-novitsek:
J'ai mis votre code, il ne compile pas. Quelle est l'erreur, je ne comprends pas. Mais le plus important, c'est que j'ai encore demandé, il doit y avoir une sorte d'erreur logique, les ordres sont ouverts à chaque tick, il est probable que cette partie ne fonctionne pas, et je ne peux pas le comprendre non plus ?
Soit le code n'est pas entièrement affiché, soit il manque le crochet fermant tout en bas.