Einzelnen Beitrag anzeigen
  #27 (permalink)  
Alt 19.03.18
piptrade piptrade ist offline
Mitglied
 
Registriert seit: Sep 2012
Beiträge: 157
piptrade befindet sich auf einem aufstrebenden Ast
Standard

Hallo an alle user, die das Thema begleiten,
und natürlich ein Hallo an next user !

Mit Bangen hatte ich dem Moment entgegengesehen, der nun über Erfolg oder Misserfolg entscheiden würde: Die ersten
Tradingstunden der neuen Woche. Und um nicht lange drumherum zu reden, - der Code funktioniert NICHT !
Was könnte jetzt noch falsch sein ? "Sehe ich den Wald vor lauter Bäumen" nicht mehr?

Hier nochmals der vollständige Code:

Code:
int OnInit() 
{
//--- calculate open orders by current symbol --> and close by TP
   if (CalculateCurrentOrders(Symbol()) == 0) CheckForOpen();

//--- calculate open orders --> and opening a hedging position 
   if (CalculateCurrentOrders(Symbol()) != 0) CheckHedgeOpen();

//+==================================================================+
//|  Check for Trailing_StopLoss Conditions                          |  
//+==================================================================+  

int    orderTicket1 = 0;
int    orderTicket2 = 0;

//--- Nachträgliches Schließen Ticket1 (Pos.1) ---------------------+
//    völlig NEU (next user) und innerhalb der "void OnTick"

   if (orderTicket1) 
       TrailStopLoss(orderTicket1);
      
   if (orderTicket2) 
       TrailStopLoss(orderTicket2);


   if(orderTicket1 && orderTicket2)                                         
   {
      if(OrderSelect(orderTicket2,SELECT_BY_TICKET,MODE_HISTORY))
      {
         if(OrderSelect(orderTicket1,SELECT_BY_TICKET))
         {
            if(OrderType() == OP_BUY)
            {
               if(!OrderClose(orderTicket1,OrderLots(),Bid,3))
                  Print("Order konnte nicht geschlossen werden, weil: ", GetLastError());
               else
                  Print("BIN ZU !!!");
            }
            else if (OrderType() == OP_SELL)
            {
               if(!OrderClose(orderTicket1,OrderLots(),Ask,3))
                  Print("Order konnte nicht geschlossen werden, weil: ", GetLastError());
               else
                  Print("BIN ZU !!!");
            }
            orderTicket1 = 0;
            orderTicket2 = 0;
         }
      }
   }
}

//--- Trailing SL - openOrder ----------------------------------------+
//    Diese Funktion "TrailStopLoss()" außerhalb "void OnTick()" setzen 

void TrailStopLoss(int ticket)  
{
   ResetLastError();

   if(OrderSelect(ticket,SELECT_BY_TICKET))
   {  
      if(OrderType() == OP_BUY  &&  (openOrders == 1  ||  openOrders == 2))
      {
         if(Bid - OrderOpenPrice() > Trail_Target_1 *100 * Point)
         {
            if(OrderStopLoss() < Bid - TSL || OrderStopLoss() == 0)
            {
               if(!OrderModify(OrderTicket(), OrderOpenPrice(), Bid - TSL, OrderTakeProfit(), Blue))
               return;
                  Print("Error setting Buy trailing stop: ", GetLastError());
            }
         }
      }
      else if(OrderType() == OP_SELL  &&  (openOrders == 1  ||  openOrders == 2))
      {
         if(OrderOpenPrice() - Ask > Trail_Target_1 *100 * Point)
         {
            if(OrderStopLoss() > Ask + TSL || OrderStopLoss() == 0)
            {
               if(!OrderModify(OrderTicket(), OrderOpenPrice(), Ask + TSL, OrderTakeProfit(), Blue))
               return;
                  Print("Error setting Sell trailing stop: ", GetLastError());
            }
         }
      }
   }
}
Das Problem ist jetzt noch größer, als zuvor: Position 2 erreicht das Trail_Target [BUY = +9] (setzt jetzt den TP [+18]) und schließt
sofort danach Pos.1 und Pos. 2 bei eben diesen + 9 Punkten (abzüglich Spread), - ohne sichtlichen Grund.
Auch in der 1. Position wird nun gar nicht mehr getrailt !

Schade, eine ganze Woche Arbeit, ohne den gewünschten Erfolg. Ich habe zwar vieles dazugelernt und kann die gewollten
Schritte auch nchvollziehen, dennoch liegen ein oder mehrere Fehler vor !

In meinem ursrünglichen Code hatte wenigstens die Pos.1 tadellos funktioniert.
Ursprünglich entstand das o.a. Problem nur bei der Pos. 2, hatte ich (CloseAllOrder()" eingefügt.
Ließ ich "CloserAllOrder()" weg, funktionierte auch hier das Trailing hervorragend; - allerdings wurde die Pos. 1 dann nicht geschlossen.
Soweit zur Erinnerung.

Was nun ??? Große Trauer, - ich war soooo zuversichtlich !

LG. pt.