Qu'est-ce que l'identifiant de commande ? - page 2

 
toi10005doi:

@Raptor :

Oui, mais je n'ai pas compris parce que j'ai juste envie d'écrire l'EA. Sr pour vous déranger.

Je ne comprends pas pourquoi mon ordre se ferme instantanément après son démarrage.

Si vous ne comprenez pas mon fil de discussion, vous devez lire le livre plus . . . . le fil de discussion est juste sur une boucle et la fermeture des ordres et est très simple et clair et vous n'avez toujours pas pris en compte de celui-ci.


Pourquoi essayez-vous de fermer votre ordre 4 fois ? deux fois à l'achat et deux fois à la vente ?

 
Ma condition proche est une condition de cobine. Mais quand je l'ai écrit, ça n'a pas marché. Donc jel' aiséparée.
 
toi10005doi:
Ma condition proche est une condition de cobine. Mais quand je l'ai écrit, ça n'a pas marché. Donc jel' aiséparée.
Mais vous essayez de fermer le même ordre (par numéro de ticket) quatre fois... pourquoi ?
 
toi10005doi:

Oui ! Je l'ai eu.

J'ai corrigé mon code mais ma commande se ferme toujours instantanément après le démarrage. S'il vous plaît montrez-moi ce que j'ai fait de mal.

Dans la boucle où vous fermez votre ordre, imprimez ces valeurs . DIPlus1 DIMinus1 Main0 Rsi assurez-vous que vous utilisez DoubleToStr() pour obtenir le nombre correct de décimales.
 
Raptor t'a déjà dit ce qu'il faut faire. Ajoutez quelques instructions d'impression avec la valeur complète de la variable dans votre boucle et vous découvrirez pourquoi
 
RaptorUK:
Dans la boucle où vous fermez votre ordre, imprimez ces valeurs . DIPlus1 DIMinus1 Main0 Rsi assurez-vous que vous utilisez DoubleToStr() pour obtenir le nombre correct de décimales.

Faites-le. Qu'obtenez-vous dans le journal ?
 
RaptorUK:
Faites-le. Qu'obtenez-vous dans le journal ?

Pouvez-vous me montrer le code ?

 
toi10005doi:

Pouvez-vous me montrer le code ?

Vous plaisantez ? C'est juste une ligne qui utilise Print() et DoubleToStr() ....

Ecrivez-le vous-même, postez-le ici et je donnerai gratuitement de mon temps pour le réviser pour vous.
 
RaptorUK:
Vous plaisantez ? Il s'agit d'une simple ligne utilisant Print() et DoubleToStr() ....

Ecrivez-le vous-même, postez-le ici et je vous donnerai gratuitement de mon temps pour le réviser.

int start()
{
   int i ,times;
   string DIPlus1;
   string DIPlus0;
 
   string DIMinus1;
   string DIMinus0;
   
   string Main1;
   string Main0;
   
   string MACD_main;
   string MACD_signal;
   string Rsi;
   
   string err = 26;
   string x = 70;
   string xx = 30;
   
   double sl = 300;
   double tp = 50;
   
   int MagicNumber1=1234,MagicNumber2=4321;
//----
/*DIPlus1=DoubleToStr(  DIPlus1, 4);
DIPlus0=DoubleToStr(    DIPlus0, 4);
DIMinus1=DoubleToStr(   DIMinus1, 4);
DIMinus0=DoubleToStr(   DIMinus0, 4);
Main1=DoubleToStr(      Main1, 4);
Main0=DoubleToStr(      Main0, 4);
Rsi=DoubleToStr(        Rsi, 4);
//err=DoubleToStr(err,4);
//x=DoubleToStr(x,4);
//xx=DoubleToStr(xx,4);*/

//---
 
DIPlus1=iADX(NULL,0,14,PRICE_CLOSE,MODE_PLUSDI,1);
DIPlus0=iADX(NULL,0,14,PRICE_CLOSE,MODE_PLUSDI,0);
 
DIMinus1=iADX(NULL,0,14,PRICE_CLOSE,MODE_MINUSDI,1);
DIMinus0=iADX(NULL,0,14,PRICE_CLOSE,MODE_MINUSDI,0);

Main1=iADX(NULL,0,14,PRICE_CLOSE,MODE_MAIN,1);
Main0=iADX(NULL,0,14,PRICE_CLOSE,MODE_MAIN,0);

Rsi = iRSI(NULL,0,14,PRICE_CLOSE,0);

times = Minute() % 15 ==0 && Seconds() ==0;

//MACD_main = iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,0); 
//MACD_signal = iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,0);
   
//----
if(Minute() % 15 ==0 && Seconds() ==0)
{
  if( Main0 > err && Main1 < err && DIPlus0 > DIMinus0 && Rsi < x )

    
       OrderSend(Symbol(),OP_BUY,0.03,Ask,5,Ask-sl*Point,Ask+tp*Point,"",1234,0,Blue);
          
   

   if (Main0 > err && Main1 < err && DIPlus0 < DIMinus0  && Rsi > xx)
     
       OrderSend(Symbol(),OP_SELL,0.03,Bid,5,Bid+sl*Point ,Bid-tp*Point,"",4321,0,Red);
}
     
  //---
 int PositionIndex;    
 
int TotalNumberOfOrders;  

TotalNumberOfOrders = OrdersTotal();   

for(PositionIndex = TotalNumberOfOrders - 1; PositionIndex >= 0 ; PositionIndex --)  
   {
   if(  OrderSelect(PositionIndex, SELECT_BY_POS, MODE_TRADES) ) continue;   
   
   if( OrderMagicNumber() == MagicNumber2      
     && OrderSymbol() == Symbol()          
      && OrderType() == OP_BUY         
       || OrderType() == OP_SELL )  
       Print("DIPlus1",DoubleToStr(     DIPlus1, 4));
         Print("DIMinus1",DoubleToStr(  DIPlus1, 4));
          Print("Main0",DoubleToStr(    DIPlus1, 4));
           Print("Rsi",DoubleToStr(     DIPlus1, 4));  
     {if( DIPlus1 > DIMinus1 || Main0 < err || Rsi < xx)
                   OrderClose(OrderTicket(),OrderLots(),Bid,3,Green);
     } 
   if( OrderMagicNumber() == MagicNumber1      
     && OrderSymbol() == Symbol()          
      &&  OrderType() == OP_BUY          
        || OrderType() == OP_SELL )  
        Print("DIPlus1",DoubleToStr(    DIPlus1, 4));
         Print("DIMinus1",DoubleToStr(  DIPlus1, 4));
          Print("Main0",DoubleToStr(    DIPlus1, 4));
           Print("Rsi",DoubleToStr(     DIPlus1, 4));
    { if( DIPlus1 < DIMinus1 || Main0 < err || Rsi > x  )
                   OrderClose(OrderTicket(),OrderLots(),Ask,3,Green);   
   }
      {  if ( ! OrderClose( OrderTicket(), OrderLots(), OrderClosePrice(), 3 ) )               
         Print("Order Close failed, order number: ", OrderTicket(), " Error: ", GetLastError() ); 
    }           
    }
 return(0);
 }
   
Voulez-vous dire ceci ? Mais maintenant, la commande ne se ferme pas.
 
toi10005doi:
Est-ce que vous voulez dire ceci ? Mais maintenant, il ne ferme pas la commande.
J'ai dit d'ajouter une ligne... c'est tout ce qu'il fallait.

Regardez votre code. ... suis-le ligne par ligne, vois ce que tu as ajouté, vois pourquoi tu l'as cassé... c'est comme ça que tu apprends. Comprends-tu comment fonctionne une instruction if? Comprends-tu le but des accolades { }?