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

 
string PriceToStr(double p){ return( DoubleToStr(p, Digits) ); }
:
datetime    OOT         = OrderOpenTime();          // Assumes OrderSelect() done already
int         iOOT        = iBarShift(NULL,0, OOT);   // Bar of the open.
#define     iBarCURRENT   0                         // Include current bar.
int         nSince  = iOOT - iBarCURRENT + 1;       // No. bars since open.
int         iHi         = iHighest(NULL,0, MODE_HIGH, nSince, iBarCURRENT);
double      HH          = High[iHi];                // Highest high.
Print( "High since order opened on ", TimeToStr(OOT)," is ", PriceToStr(HH) );
 
WHRoeder:


Voici quelques erreurs pour le code ci-dessus.

'(' - définition de fonction inattendue D:\Program Files\FXDD Malta - MetaTrader 4\experts\test2.mq4 (343, 18)

cette erreur pour la chaîne PriceToStr(double p)

pour cette erreur je ne sais pas comment la corriger


'iBarCurrent' - variable non définie D:\Program Files\FXDD Malta - MetaTrader 4\experts\test2.mq4 (348, 30)

cette erreur parce que vous définissez #define iBarCURRENT puis vous le mettez comme iBarCurrent

Je vais la corriger.


2 erreur(s),

 

Mettez cette ligne à la toute fin de votre code, en dehors de la fonction start ....

string PriceToStr(double p){ return( DoubleToStr(p, Digits) ); }

et commencez à lire ceci si vous voulez apprendre à coder : https://book.mql4.com//

 

C'est clair les gars (RaptorUK et WHRoeder),

Merci.

datetime    OOT         = OrderOpenTime();          // Assumes OrderSelect() done already
int         iOOT        = iBarShift("EURUSD",PERIOD_H1, OOT);   // Bar of the open.
#define     iBarCURRENT   0                         // Include current bar.
int         nSince  = iOOT - iBarCURRENT + 1;       // No. bars since open.
int         iHi         = iHighest("EURUSD",PERIOD_H1, MODE_HIGH, nSince, iBarCURRENT);
double      HH          = High[iHi];                // Highest high.
int         iLi         = iLowest("EURUSD",PERIOD_H1, MODE_LOW, nSince, iBarCURRENT);
double      LL          = Low[iLi];                 // Lowest low. 

J'ai une autre question :

Si j'ai 2 ordres ouverts, un pour l'achat et l'autre pour la vente :

comment puis-je laisser mon EA comprendre et prendre la iOOT = iBarShift("EURUSD",PERIOD_H1, OOT) ; // Barre de l'ouverture. Pour la barre où j'ai obtenu une position d'achat et calculer le plus haut à partir de ce point.

Et

Prenez le iOOT = iBarShift("EURUSD",PERIOD_H1, OOT) ; // Barre de l'ouverture. Pour la barre où j'ai obtenu une position de vente et calculer le plus bas à partir de ce point.

Merci beaucoup

 
Pour obtenir OOT, vous devez avoir déjà effectué une commandeSelect.
for(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.
){
    datetime    OOT         = OrderOpenTime();          // Assumes OrderSelect() done already
    int         iOOT        = iBarShift("EURUSD",PERIOD_H1, OOT);   // Bar of the open.
    #define     iBarCURRENT   0                         // Include current bar.
    int         nSince      = iOOT - iBarCURRENT + 1;   // No. bars since open.
    if (OrderType == OP_BUY){
        int     iHi         = iHighest("EURUSD",PERIOD_H1, MODE_HIGH, nSince, iBarCURRENT);
        double  HH          = High[iHi];                // Highest high.
    }
    else{
        int     iLi         = iLowest("EURUSD",PERIOD_H1, MODE_LOW, nSince, iBarCURRENT);
        double  LL          = Low[iLi];                 // Lowest low. 
    }
}
 
WHRoeder:
Pour obtenir OOT, vous devez avoir déjà effectué un orderSelect.


Merci à tous.

J'ai également une autre question :

Comment puis-je faire ces conditions : if (last OrderClosePrice() for sell > before the last OrderClosePrice for sell ) && ( before the last OrderClosePrice for sell >= bid)

fermer la position

si quelque chose comme ceci est correct

if ( (OrderType == OP_SELL)&& OrderSelect(pos+1, SELECT_BY_POS,MODE_TRADES ) )          { if( pos>pos+1  && pos+1>MarketInfo("EURUSD",MODE_BID);
            // close the position


 

Juste,

Je veux savoir comment je peux obtenir : l'ordre avant le dernier ordre (ouverture ou fermeture) le prix () pour (achat ou vente) pour les ajouter pour certaines claculations.

Merci beaucoup.

 
Pas de réponse, j'ai juste besoin d'obtenir l'ordre avant le dernier ordre, même pour l'achat ou la vente, même si cet ordre est un ordre ouvert ou un ordre fermé, en attendant votre aide.
 
Hand:
Je veux savoir comment je peux obtenir : l'ordre avant le dernier ordre (ouverture ou fermeture) le prix() pour (achat ou vente) pour les ajouter pour certaines claculations.
Trouvez le dernier ordre, n'oubliez pas de trouver le prochain ordre antérieur.
    for(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.
    ){
       datetime OOTlatest = OrderOpenTime();  // found latest open order
       break;
    }
    for(pos--; pos >= 0 ; pos--) if (
        OrderSelect(pos, SELECT_BY_POS)                 // Only my orders w/
    &&  OrderMagicNumber()  == magic.number             // my magic number
    &&  OrderSymbol()       == Symbol()                 // and my pair.
    ){
       datetime OOTprevious = OrderOpenTime(); // found the previous
       break;
    }
    if (OOTlastest == 0) // no open orders
    if (OOTprevious == 0) // no previous
:
 

Merci WHRoeder,

Si j'ai besoin d'obtenir le dernier ordre d'achat et le dernier ordre de vente, puis de les comparer en faisant :

si ( le dernier ordreopenforbuy == OOTlastest )

{ faire quelque chose }

sinon

{ } ....... est le code ci-dessous fonctionnera.

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.
){
    if (OrderType() == OP_BUY){
        int lastorderforbuy= OrderOpenPrice();
    }
    else{
        int lastorderforsell= OrderOpenPrice(); 
         }
    }   for(pos--; pos >= 0 ; pos--) if (
        OrderSelect(pos, SELECT_BY_POS)                 // Only my orders w/
    &&  OrderMagicNumber()  == magic.number             // my magic number
    &&  OrderSymbol()       == Symbol()                 // and my pair.
    ){
       if (OrderType() == OP_BUY){
        int previousorderforbuy= OrderOpenPrice();
    }
    else{
        int previousorderforsell= OrderOpenPrice(); 
         }
     } 
    if ( ((lastorderforbuy+ previousorderforsell)/2)<=MarketInfo("EURUSD",MODE_BID))
               {  CLOSESHORT("EURUSD") ;}