Wie kann ich den höchsten Preis erhalten, nachdem die Bestellung geöffnet wurde? - Seite 2

 
Fangen Sie an, programmieren zu lernen und hören Sie auf, Ihren Thread zu überladen.
 

Ich brauche nur ein wenig Hilfe, dann wird alles gut. (Ich muss die letzte Bestellung für den Kauf, die letzte Bestellung für den Verkauf und die vorherige Bestellung für jeden Kauf oder Verkauf wissen)

Vielen Dank für Ihre Hilfe.

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);
}
 

Leute,

würden Sie einen Blick haben und sagen Sie mir, was ist das falsch.


Ich muss einige Funktionen für erstellen:
1- Funktion, um den letzten offenen Preis der Bestellung für den Kauf zu erhalten und zu behalten.
2- Funktion, um den letzten offenen Preis für den Verkauf zu ermitteln und zu speichern.
3- Funktion, um den letzten geschlossenen Auftrag zu erhalten und zu behalten , egal ob Kauf oder Verkauf

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);}




dann werde ich wenn ((LastOpenTicketForBuy()+LastOpenTi cketForSell())/2)<MarketInfo("EURUSD",MODE_BID)Clo se t the position

 
Was bewirkt Ihrer Meinung nach return (lastTicket);?
 

Meinen Sie, ich sollte

1- double LastOpenForBuy() statt int eingeben

2-ein double orderforbuy dann return( orderforbuy )

auf diese Weise kann ich nur die letzte für den Kauf geöffnete Bestellung erhalten.

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:

Meinen Sie, ich sollte

Das ist eine Frage... Ich meine nichts anderes als... wie lautet Ihre Antwort?

Wenn Sie wollen, dass ich Ihnen helfe, müssen Sie meine Frage beantworten... und "Ich weiß es nicht" ist keine akzeptable Antwort. Denken Sie ein wenig darüber nach.

 

Was bewirkt Ihrer Meinung nach return(lastTicket);?

Gibt die Ticketnummer für die aktuell ausgewählte Bestellung zurück.

 
Hand:

Danke WHRoeder,

Für Ihre wirkliche Hilfe. wenn ich die letzte Bestellung für Kauf und die letzte Bestellung für Verkauf erhalten muss, dann vergleichen Sie sie, indem Sie tun:

wenn ( die letzte Kaufbestellung == OOTlastest )

{ etwas tun }

sonst

{ } ....... ist der unten stehende Code wird funktionieren.

Funktioniert das wirklich???

erste Schleife

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

geht in die zweite

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

pos dekrementiert bis auf Null. zweite Schleife endet --> springt zurück zur ersten, und die erste Schleife weiß nicht, wo pos seit dem letzten Mal geblieben ist. die Chancen stehen gut, dass pos = Null ist.

 

dieser Code kann möglicherweise funktionieren... müssen nur eine 1 Sache zu ändern:

die zweite for-Anweisung

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

in einen anderen Iterator wie

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

und ebenfalls pos durch den neuen Iterator (in diesem Fall a) in der gesamten zweiten Schleifenlogik NUR ersetzen.

 
Hand:

Was bewirkt Ihrer Meinung nach return(lastTicket);?

Gibt die Ticketnummer für die aktuell ausgewählte Order zurück.

Sie sagten...

"Ich muss einige Funktionen für erstellen:
1- Funktion, um den letzten offenen Preis der Bestellung für den Kauf zu erhalten und zu behalten.
2- Funktion, um den letzten offenen Auftragspreis für den Verkauf zu erhalten und zu behalten.

3- Funktion um die letzte geschlossene Bestellung zu erhalten und zu behalten , egal ob Kauf oder Verkauf "

Warum geben Sie also die Ticketnummer zurück? Lesen Sie den Code, den Sie kopieren und einfügen, verstehen Sie ihn, lernen Sie...