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

 
( OrderType() < OP_BUYLIMIT ) est identique à ( OrderType () == OP_BUY ||OrderType() == OP_SELL )
 
Hand:


Les gars,

Merci beaucoup,

Laissez-moi vous dire pourquoi je veux utiliser LastOpenPrice(OP_BUY) et LastOpenPrice(OP_SELL) parce que je veux les utiliser dans certaines conditions comme par exemple

si ( 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.

Vous pouvez le faire... ça va marcher... essayez.
 
Ou peut-être voulez-vous dire le dernier ordre d'achat qui est maintenant fermé ?
 

l'explication de la fonction n.4 est-elle claire ?

fonction numéro 4 :

// je veux obtenir l'ordre fermé avant le dernier ordre fermé d'achat ou de vente.

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. merci.

 

les gars,

Cela ne fonctionne vraiment pas

// Used to keep global variables

extern int MagicNumberLong = 6658641;                     //Identifies long positions
extern int MagicNumberShort = 4167090;                    //Identifies short positions
  
 






double LastOpenPrice(int ordertype)
   { 

   double OpenPrice;                         
   datetime lastOpen;
   for ( int pos = OrdersTotal()- 1 ; pos >= 0 ; pos--)
      if ( OrderSelect (pos, SELECT_BY_POS) // Only my orders w/
      && OrderMagicNumber() == MagicNumberLong || MagicNumberShort // 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 )
         {
         OpenPrice = OrderOpenPrice();
         break;
         }
   return (OpenPrice);                                             //  <-------  this returns the Order Open Price  NOT the ticket
}

if (  ((iOpen("EURUSD",PERIOD_H1,0)-0.0030)>=MarketInfo("EURUSD",MODE_BID))   ) 
  {   BUY("EURUSD",B_EURUSD_LS_0,B_EURUSD_TP_0,B_EURUSD_SL_0,B_EURUSD_TS_0,"if (  ( ((iOpen(EURUSD,PERIOD_H1,0)-0.00...") ;}
if (  ( (LastOpenPrice(OP_BUY)-0.0030)>MarketInfo("EURUSD",MODE_BID) )  ) 
   {  SELL("EURUSD",S_EURUSD_LS_1,S_EURUSD_TP_1,S_EURUSD_SL_1,S_EURUSD_TS_1,"if (  ( (LastOpenPrice(OP_BUY)-0.0030)>=MarketInfo(" EURUSD",MODE_BID) )  )") ;}
if (  ( ((iOpen("EURUSD",PERIOD_H1,0)+0.0030)<=MarketInfo("EURUSD",MODE_BID)) )  ) 
  {   SELL("EURUSD",S_EURUSD_LS_0,S_EURUSD_TP_0,S_EURUSD_SL_0,S_EURUSD_TS_0,"if (  ((iOpen(EURUSD,PERIOD_H1,0)+0.00...") ;}
if (  ( (LastOpenPrice(OP_SELL)+0.0030)<MarketInfo("EURUSD",MODE_BID) )  ) 
   {  BUY("EURUSD",B_EURUSD_LS_1,B_EURUSD_TP_1,B_EURUSD_SL_1,B_EURUSD_TS_1,"if (  ( (LastOpenPrice(OP_SELL)+0.0030)<MarketInfo(" EURUSD",MODE_BID) )") ;}

Comme vous pouvez le voir dans les images

j'ai commencé à tester l'EA du 01/03/2011 au 11/04/2011

dans la première heure du 01/03/2011

la position a été ouverte mais aucune des conditions ci-dessus n'était disponible. cela m'a rendu vraiment fou.

 
Hand:

l'explication de la fonction n.4 est-elle claire ?

fonction numéro 4 :

// je veux obtenir l'ordre fermé avant le dernier ordre fermé d'achat ou de vente.

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. merci.

Prix de clôture? prix de clôture de la barre précédant la barre où le dernier ordre a été clôturé ? ou prix de clôture de l'ordre d'achat ou de vente qui a été clôturé avant le dernier ordre clôturé ?
 

la deuxième option :

le prix de clôture de l'ordre d'achat ou de vente qui a clôturé avant le dernier qui a clôturé ?

 
Hand:

la deuxième option :

le prix de clôture de l'ordre d'achat ou de vente qui a clôturé avant le dernier qui a clôturé ?

Essayez ceci ...

Pour obtenir le dernier prix de clôture du dernier ordre qui était un achat ou une vente et qui correspondait au symbole et au numéro magique, faites ceci LastClosePrice(1)

Pour obtenir l'ordre précédent, faites ceci... LastClosePrice(2 )

double LastClosePrice(int Order)
   { 
 
   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 )
         {
         Order--;
         if (Order == 0)                                            //  determines if we have found the Order we are interested in
            {
            ClosePrice = OrderCloseprice();
            break;
            }
         }
   return (ClosePrice);                                             //  <-------  this returns the Order Open Price  NOT the ticket
}

REMARQUE : ce code ne fonctionnera pas avec vos numéros magiques comme indiqué dans votre code ci-dessus ....

extern int MagicNumberLong = 6658641;                     //Identifies long positions
extern int MagicNumberShort = 4167090; 


WHY ? ? ? ?
 

Les gars.

Y a-t-il quelqu'un qui peut utiliser le programme Teamviewer, puis nous allons accéder ensemble et vérifier quel est le vrai problème.

 
Hand:

les gars,

Cela ne fonctionne vraiment pas

Comme vous pouvez le voir dans les images

j'ai commencé à tester l'EA du 01/03/2011 au 11/04/2011

dans la première heure du 01/03/2011

la position a été ouverte mais aucune des conditions ci-dessus n'était disponible. cela m'a rendu vraiment fou.

Ce n'est pas fou. Il est "raisonnable" qu'un ordre soit ouvert car :

double LastOpenPrice(int ordertype)
   { 

   double OpenPrice;                         
   datetime lastOpen;
   for ( int pos = OrdersTotal()- 1 ; pos >= 0 ; pos--)
      if ( OrderSelect (pos, SELECT_BY_POS) // Only my orders w/
      && OrderMagicNumber() == MagicNumberLong || MagicNumberShort // my magic number       
      && OrderSymbol() == Symbol()    // and my pair.             
      && OrderType() == ordertype 
      && OrderOpenTime() > lastOpen )
         {
         OpenPrice = OrderOpenPrice();
         break;
         }
   return (OpenPrice); //  <-------  this returns the Order Open Price OR ZERO.

Si la fonction ci-dessus retourne ZERO, alors n'importe quel scénario tel que celui ci-dessous peut se produire

 if (  ( (LastOpenPrice(OP_SELL)+0.0030)<MarketInfo("EURUSD",MODE_BID) )  ) <--------------- 0+0.0030=0.0030<Bid: TRUE
   {  BUY("EURUSD",B_EURUSD_LS_1,B_EURUSD_TP_1,B_EURUSD_SL_1,B_EURUSD_TS_1,"if (

Je vous suggère de placer une logique "maître", par-dessus tout cela. Si la fonction LastOpenPrice(...) renvoie zéro.... quel est votre plan de jeu ?