Einzelnen Beitrag anzeigen
  #15 (permalink)  
Alt 14.03.18
next user next user ist offline
Premium Mitglied
 
Registriert seit: May 2015
Beiträge: 367
next user befindet sich auf einem aufstrebenden Ast
Standard

Mal ein kleines Beispiel:
(Davon ausgehend, das du immer nur 2 Orders offen hast...)
Code:
int   orderTicket1 = 0;
int   orderTicket2 = 0;

// Order eröffnen...
// ...
// ...

void OnTick()
{
   ...
   
   if(orderTicket1)
      updateSL(orderTicket1);
      
   if(orderTicket2)
      updateSL(orderTicket2);
   
   if(OrderSelect(orderTicket2,SELECT_BY_TICKET,MODE_HISTORY))
   {
      if(OrderSelect(orderTicket1,SELECT_BY_TICKET))
      {
         if(OrderType() == OP_BUY)
            OrderClose(orderTicket1,OrderLots(),Bid,3);
         else
            OrderClose(orderTicket1,OrderLots(),Ask,3);
      }
   }
   
   ...
}

void updateSL(int ticket)
{
   ResetLastError();

   if(OrderSelect(ticket,SELECT_BY_TICKET))
   {
      if(OrderType() == OP_BUY)
      {
         if(Bid - OrderOpenPrice() > Trail_Target *100 * Point)
         {
            if(OrderStopLoss() < Bid - TSL || OrderStopLoss() == 0)
            {
               if(!OrderModify(OrderTicket(), OrderOpenPrice(), Bid - TSL, OrderTakeProfit(), Blue))
                  Print("Error setting Buy trailing stop: ", GetLastError());
            }
         }
      }
      else if(OrderType() == OP_SELL)
      {
         if(OrderOpenPrice() - Ask > Trail_Target *100 * Point)
         {
            if(OrderStopLoss() > Ask + TSL || OrderStopLoss() == 0)
            {
               if(!OrderModify(OrderTicket(), OrderOpenPrice(), Ask + TSL, OrderTakeProfit(), Blue))
                  Print("Error setting Sell trailing stop: ", GetLastError());
            }
         }
      }
   }
}
"OrderClose(...)" ist hier nur im Beispiel. Kannst hier auch deine "CloseAllOrders()" aufrufen, wobei bei 2 Positionen ja
eh nur eine übrig bleibt und geschlossen werden muss.