Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools

Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools (http://www.expert-advisor.com/forum/index.php)
-   Programmierung MQL4 (http://www.expert-advisor.com/forum/forumdisplay.php?f=220)
-   -   Die letzte geschlossene Order ermitteln (http://www.expert-advisor.com/forum/showthread.php?t=1877)

forexAlexPH 25.01.12 09:19

Die letzte geschlossene Order ermitteln
 
Ich habe eine Funktion, die mir das letzte geschlossene Ticket zeigen soll.
Der Code dafuer steht unten.
Das richtige Ticket wird manchmal angezeigt und manchmal auch ein Ticket, das einige Tickets vorher geschlossen wurde. Manchmal 3, manchmal 8, manchmal 5..? Unregelmäßig eben.
Warum ist das so? Wie kann ich immer exakt, das zuletzt geschlossene Ticket ermitteln?

PHP-Code:

string lastTicket()                        

  
string lastTicket="";
  
int i;
  for(
i=0i<OrdersHistoryTotal(); i++) 
   {       
       
OrderSelect(i,SELECT_BY_POS,MODE_HISTORY); 
       if(
OrderSymbol()!=Symbol())     
       continue;                        
       
lastTicket=OrderTicket();   
  }
  return(
lastTicket);           



Bohne 25.01.12 10:03

Versuch mal sorum....

PHP-Code:

int lastTicket()                        

  
int lastTicket=0;
  
int i;
  for(
i=0i<OrdersHistoryTotal(); i++) 
   {       
       
OrderSelect(i,SELECT_BY_POS,MODE_HISTORY); 
         if(
OrderSymbol()!=Symbol()){
           if (
lastTicket<=OrderTicket()) lastTicket=OrderTicket();
         }
  }
  return(
lastTicket);           


[/QUOTE]

kannst natürlich auch ganz anders machen, indem du das datum prüfst... aber galube sio müsste es auch klappen.

Bohne 25.01.12 10:22

mist das ist verkehrt, das sehe ich ja jetzt erst...
if(OrderSymbol()!=Symbol())
die zeile ändern in
if(OrderSymbol()==Symbol())
:o

forexAlexPH 25.01.12 11:16

Habe es so ähnlich gelöst.
Es scheint jetzt zu passen.
Die Zeilen
if (OrderCloseTime() > lastClose )
{

lastTicket=OrderTicket();
}
ergänzt.
PHP-Code:

string lastTicket()                                
{                                                 
  
string lastTicket="";                           
  
int pos;                                        
  for(
pos=0pos<OrdersHistoryTotal(); pos++)  
   { 
       
OrderSelect(pos,SELECT_BY_POS,MODE_HISTORY);
       if(
OrderSymbol()!=Symbol())                 
       continue;
       if (
OrderCloseTime() > lastClose )   
       {                        
        
lastTicket=OrderTicket();            
       }                  
  }
  return(
lastTicket);  



Seroleashed 25.01.12 13:41

Soweit ich weiß ist doch 'OrderTicket()' ein interner und kein String oder??? o.O

Bohne 25.01.12 14:10

ja und nein. Klar ist die Orderticket eine nummerische zahl, also eine ganze zahl. Integer typ int. Du kannst die aber auch als String (Zeichekette zuordnen)
ab und zu ist das schon nützlich. Beide wege gehen.;)


Alle Zeitangaben in WEZ +2. Es ist jetzt 07:05 Uhr.

Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.6.1
Powered by vBCMS® 2.7.0 ©2002 - 2024 vbdesigns.de
Copyright ©2009 - 2023 by Expert-Advisor.com - Das Metatrader Forum