comment puis-je obtenir le prix le plus élevé après l'ouverture de l'ordreopenprice. - page 3

 

Alors pourquoi renvoyer le numéro du ticket ? Lisez le code que vous copiez et collez, comprenez-le, apprenez....

Je l'ai utilisé pour faire ce qui suit

if(OrderSelect(LastOpenTicketForBuy(), SELECT_BY_POS)==true)
{l'ordre d'achat= OrderOpenPrice();}

alors si (( ordre d'achat+ ordre de vente)/2))<MarketInfo("EURUSD",MODE_BID) )

fermer la position

 
Hand:


if(OrderSelect(LastOpenTicketForBuy(), SELECT_BY_POS)==true)


un petit changement avec votre permission

if(OrderSelect(LastOpenTicketForBuy(), SELECT_BY_TICKET)==true)
 

Cher qjol

merci beaucoup pour votre aide réelle. mais je ne suis toujours pas sûr si cela va fonctionner ou non (je pense que mes fonctions sont un peu difficiles). voyons voir

première fonction :

fonction pour obtenir et conserver le prix d'ouverture du dernier ordre pour l'achat seulement

double LastOpenForBuy(){ datetime lastTime = 0 ; int lastTicket = - 1 ; // None open. 
int magi.number= 0 ; double orderforbuy;
for ( int pos = OrdersTotal ()- 1 ; pos >= 0 ; pos--)
if ( OrderSelect (pos, SELECT_BY_POS) // Only my orders w/
&& OrderMagicNumber () == magic.number // my magic number
&& OrderSymbol () == Symbol () // and my pair.
&& OrderType ()==OP_BUY )
{ orderforbuy = OrderOpenprice ();
lastTicket = OrderTicket (); }
return (orderforbuy);}

if(OrderSelect(LastOpenForBuy(), SELECT_BY_TICKET)==true)
{ order for buy= OrderOpenPrice();}

// then something like// // if ( (( order for buy+ order for sell)/2))<MarketInfo("EURUSD",MODE_BID) )

//close the position

     Ce dont j'ai besoin est : 1- une fonction pour obtenir et conserver le prix de clôture du dernier ordre d'achat ou de vente. Dernier ordre ouvert pour l'achat seulement 
2- Fonction pour obtenir et conserver le dernier ordre ouvert pour la vente.
3- fonction permettant de récupérer et de conserver le cours de clôture du dernier ordre à l'achat ou à la vente.
4- fonction pour obtenir et conserver le cours de clôture précédent avant le dernier ordre de clôture à l'achat ou à la vente.
 

OK, essayez ceci...

Cela fera 1 et 2...

LastOpenPrice(OP_BUY) pour le prix ouvert du dernier achat.

LastOpenPrice(OP_SELL) pour le prix ouvert de la dernière vente.

double LastOpenPrice(int  OrderType)
   { 
 
   double OpenPrice;                         

   for ( int pos = OrdersTotal()- 1 ; pos >= 0 ; pos--)
      if ( OrderSelect (pos, SELECT_BY_POS) // Only my orders w/
      && OrderMagicNumber() == magic.number // my magic number       //  <-------  what Magic Number do you use when you place a trade ?  it must match  ! !
      && OrderSymbol() == Symbol()  // and my pair.                  //            magic.number  should be a Globally defined variable that has your Magic Numer  
      && OrderType() == OrderType )
         {
         OpenPrice = OrderOpenprice();
         break;
         }
   return (OpenPrice);                                             //  <-------  this returns the Order Open Price  NOT the ticket
}
 

Et ce...

pour 3...

double LastClosePrice()
   { 
 
   double ClosePrice;                         

   for ( int pos = OrdersHistoryTotal()- 1 ; pos >= 0 ; pos--)
      if ( OrderSelect (pos, SELECT_BY_POS, MODE_HISTORY)            // Only my CLOSED  orders 
      && OrderMagicNumber() == magic.number // my magic number       //  <-------  what Magic Number do you use when you place a trade ?  it must match  ! !
      && OrderSymbol() == Symbol()  // and my pair.                  //            magic.number  should be a Globally defined variable that has your Magic Numer  
      && OrderType() < OP_BUYLIMIT )
         {
         ClosePrice = OrderCloseprice();
         break;
         }
   return (ClosePrice);                                             //  <-------  this returns the Order Open Price  NOT the ticket
}
 
Je ne suis pas sûr de comprendre ce que vous entendez par n°4.
 

raptor

je pense que tu rates quelque chose s'il a plus d'une commande sur la même paire (et la même magie) donc je pense que c'est mieux comme ça

double LastOpenPrice(int OrderType)
   { 
 
   double OpenPrice;                         
   datetime lastOpen; // First line added

   for ( int pos = OrdersTotal()- 1 ; pos >= 0 ; pos--)
      if ( OrderSelect (pos, SELECT_BY_POS) // Only my orders w/
      && OrderMagicNumber() == magic.number // my magic number       //  <-------  what Magic Number do you use when you place a trade ?  it must match  ! !
      && OrderSymbol() == Symbol()  // and my pair.                  //            magic.number  should be a Globally defined variable that has your Magic Numer  
      && OrderType() == OrderType
      && OrderOpenTime() > lastOpen) // Second line added
         {
         OpenPrice = OrderOpenprice();
         break;
         }
   return (OpenPrice);                                             //  <-------  this returns the Order Open Price  NOT the ticket
}

ton opinion

 
Si l'on fait le compte à rebours, le premier ordre qui correspond au nombre et au symbole magiques sera le dernier placé pour l'EA et le symbole en question, non ?
 
Pas sûr
 
qjol:

raptor

je pense que tu rates quelque chose s'il a plus d'une commande sur la même paire (et la même magie) donc je pense que c'est mieux comme ça

votre avis


les gars,

Merci beaucoup,

Je vais vous dire pourquoi je veux utiliser LastOpenPrice(OP_BUY) et LastOpenPrice(OP_SELL) parce que je veux les utiliser dans certaines conditions, par exemple

if ( LastOpenPrice(OP_BUY) -LastOpenPrice(OP_SELL)) > 0.0090 // pour cette raison j'ai besoin de garder le dernier ordre ouvert pour l'achat et le dernier ordre ouvert pour la vente, donc j'ai besoin d'un dernier ordre séparé un pour l'achat et l'autre pour la vente.

-----

pour le double LastClosePrice() // puis-je utiliser if ( OrderType() == OP_BUY || OP_SELL) au lieu de *** OrderType() < OP_BUYLIMIT*** pour obtenir la dernière clôture, qu'elle soit d'achat ou de vente.

----

pour la fonction numéro 4 :

4- fonction pour obtenir et conserver le cours de clôture précédent avant le dernier ordre de clôture d'achat ou de vente. // je veux obtenir l'ordre fermé avant le dernier ordre fermé d'achat ou de vente.

merci