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

 
Commencez à apprendre à coder et arrêtez de faire rebondir votre fil.
 

J'ai juste besoin d'un peu d'aide pour que tout se passe bien (j'ai besoin de connaître le dernier ordre d'achat, le dernier ordre de vente et l'ordre précédent pour n'importe quel achat ou vente).

Merci beaucoup pour votre aide.

int LastOpenTicketForBuy(){
    datetime lastTime  = 0;
    int      lastTicket = -1; // None open.
    int magi.number=0;
    //for(int pos=0; pos<OrdersTotal(); i++) {
      OrderSelect(pos, SELECT_BY_POS);
    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.
    &&  OrderOpenTime()     >  lastTime
    && OrderType()==OP_BUY
    ){
      lastTime   = OrderOpenTime();
      lastTicket = OrderTicket();
    }
    return(lastTicket);
}

int LastOpenTicketForSell(){
    datetime lastTime  = 0;
    int      lastTicket = -1; // None open.
    int magi.number=0;
    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.
    &&  OrderOpenTime()     >  lastTime
    && OrderType()==OP_SELL
    ){
      lastTime   = OrderOpenTime();
      lastTicket = OrderTicket();
    }
    return(lastTicket);
}

int previousorderforbuy(){
    datetime lastTime  = 0;
    int      lastTicket = -1; // None open.
    int magi.number=0;
    for(int 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.
    &&  OrderOpenTime()     >  lastTime
    && OrderType()==OP_BUY
    ){
      lastTime   = OrderOpenTime();
      lastTicket = OrderTicket();
    }
    return(lastTicket);
}

int previousorderforsell(){
    datetime lastTime  = 0;
    int      lastTicket = -1; // None open.
    int magi.number=0;
    for(int 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.
    &&  OrderOpenTime()     >  lastTime
    && OrderType()==OP_SELL
    ){
      lastTime   = OrderOpenTime();
      lastTicket = OrderTicket();
    }
    return(lastTicket);
}
 

Les gars,

Pourriez-vous jeter un coup d'oeil et me dire ce qui ne va pas.


J'ai besoin de créer quelques fonctions pour :
1- fonction pour obtenir et garder le dernier ordre ouvert pour l'achat.
2- Fonction pour obtenir et conserver le dernier ordre d'ouverture pour la vente.
3- fonction pour obtenir et conserver le dernier ordre de fermeture à l'achat ou à la vente.

int LastOpenTicketForBuy(){ datetime lastTime = 0 ; int lastTicket = - 1 ; // None open. 
int magi.number= 0 ;
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 )
{ lastTime = OrderOpenTime ();
lastTicket = OrderTicket (); }
return (lastTicket);}

int LastOpenTicketForSell()
{ datetime lastTime = 0 ; int lastTicket = - 1 ; // None open.

int magi.number= 0 ;
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_SELL )
{ lastTime = OrderOpenTime (); 

lastTicket = OrderTicket (); }
return (lastTicket);}

int lastcloseorder()
{ datetime lastTime = 0 ; int lastTicket = - 1 ; // None open. 
int magi.number= 0 ; 
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.
&& OrderCloseTime () > lastTime
&& OrderType ()==OP_BUY||OP_SELL )
{ lastTime = OrderCloseTime (); lastTicket = OrderTicket (); }
return (lastTicket);}




ensuite je mettrai si ((LastOpenTicketForBuy()+LastOpenTi cketForSell())/2)<MarketInfo("EURUSD",MODE_BID)Clo se la position

 
À votre avis, que fait return (lastTicket) ; ?
 

Voulez-vous dire que je devrais

1- mettre double LastOpenForBuy() au lieu de int

2-put mettre le double orderforbuy puis return( orderforbuy )

De cette façon, je peux obtenir le dernier ordre ouvert 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);}

 
Hand:

Vous voulez dire que je devrais...

C'est une question... Je ne veux rien dire d'autre que... quelle est votre réponse ?

Si tu veux que je t'aide, tu dois répondre à ma question... et "Je ne sais pas" n'est pas une réponse acceptable. Réfléchissez-y un peu.

 

A votre avis ... que fait return(lastTicket) ;?

Renvoie le numéro de ticket pour la commande actuellement sélectionnée.

 
Hand:

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.

est-ce que cela fonctionne vraiment ?

première boucle

for(int pos = OrdersTotal()-1; pos >= 0 ; pos--) if (

va dans la seconde

 for(pos--; pos >= 0 ; pos--) if (

pos décrémente jusqu'à zéro. la deuxième boucle se termine --> retourne à la première, et la première boucle ne sait pas où pos s'est arrêté depuis la dernière fois. il y a des chances que pos = zéro.

 

ce code peut éventuellement fonctionner... il faut juste changer une 1 chose :

la deuxième instruction for

for(pos--; pos >= 0 ; pos--) if (

par un itérateur différent comme

for(int a=pos--; a>=0 ; a--) if(// abort the use of pos again and introduce a new iterator, a

et de même, remplacer pos par le nouvel itérateur (dans ce cas, a) dans toute la logique de la deuxième boucle UNIQUEMENT.

 
Hand:

À votre avis... que fait return(lastTicket) ;?

Renvoie le numéro de ticket pour l'ordre actuellement sélectionné.

Vous avez dit...

"J'ai besoin de créer quelques fonctions pour :
1- fonction pour obtenir et conserver le dernier ordre ouvert pour l'achat.
2- Fonction permettant d'obtenir et de conserver le prix du dernier ordre ouvert à la vente.

3- Fonction permettant de récupérer et de conserver le dernier ordre de fermeture, qu'il s'agisse d'un achat ou d'une vente.

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

Raison: