Einzelnen Beitrag anzeigen
  #1 (permalink)  
Alt 20.09.12
MarkusW MarkusW ist offline
Neues Mitglied
 
Registriert seit: Sep 2012
Beiträge: 10
MarkusW befindet sich auf einem aufstrebenden Ast
Standard Erkennen ob Position augestoppt wurde

Hi, bin noch nicht so vertraut mit der mq4-programmierung.

In meiner Strategie eröffne ich gleichzeitig eine long- und eine shortposition. Je nachdem welche Position der beiden durch StopLoss geschlossen wird, soll sich der EA anders verhalten. Ich öffne die Positionen so:

Code:
 ticket_long=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Bid-StopLoss*Point,Ask+TakeProfit*Point,"Opening Position....",12345,0,Green);    
            if(ticket_long>0)
            {
               if(OrderSelect(ticket_long,SELECT_BY_TICKET,MODE_TRADES))
               Print("BUY order opened : ",OrderOpenPrice());
               trade_aktiv=1;   
            }
            else 
            {
               Print("Error opening BUY order : ",GetLastError());
            }
         
            // Short Position öffnen
            ticket_short=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Ask+StopLoss*Point,Bid-TakeProfit*Point,"Opening Position....",12345,0,Red);
            if(ticket_short>0)
            { 
                if(OrderSelect(ticket_short,SELECT_BY_TICKET,MODE_TRADES))
                Print("SELL order opened : ", OrderOpenPrice());
                trade_aktiv=1;   
            }
            else 
            {
            Print("Error opening SELL order : ",GetLastError());
            }
Ich habe jetzt auf zwei wegen versucht herauszufinden, ob die jeweilige Position noch offen ist, oder ob sie bereits geschlossen wurde. Hier am beispiel der long Position:

Variante 1:
Code:
if(!(OrderSelect(ticket_long,SELECT_BY_TICKET,MODE_TRADES)))  // wenn long Position ausgestoppt wurde
         {
            Print("!! Long Position Ausgestoppt !!");
         }
Variante 2:

Code:
OrderSelect(ticket_long,SELECT_BY_TICKET,MODE_TRADES);
         closeTime=OrderCloseTime();
         
         if (closeTime!=0)
         {
            Print("!! Long Position Ausgestoppt !!");
         }
So bei Variante 1 sagt er immer die Position währe geschlossen, auch wenn sie offen ist.

Bei Variante 2 erkennt er nicht das sie geschlossen wurde.

Was mache ich falsch ?