Einzelnen Beitrag anzeigen
  #7 (permalink)  
Alt 21.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

Zitat:
Zitat von Karabiner Beitrag anzeigen
Ich hab irgendwo gelesen das man z.B. bei der LongOrder den TrailSL mit OrderType() == OP_BUY modifizieren muss, aber unbedingt auch den OP_SELL einbauen soll. ??? Keine Ahnung ob das richtig ist ???
Nein! Wie soll denn OP_SELL bei ner LongOrder zutreffen?
Wenn du etwas machen möchtest, das eine OP_SELL-Abfrage erfordert, dann brauchst du es.
Aber bitte nicht NUR, weil es irgendwo zu lesen war, du aber keine Verwendung dafür hast.

=== === === === === === === === === === === ===

Ich habe mir mal deinen Code angesehen und gleich mal falsche Klammersetzung gefunden.
Wenn das wirklich der ausgeführte Code von dir ist, so müsste da einiges an Fehlverhalten sein.
Auch sind "O_Sym, O_Point & O_Price" nur nötig, wenn sich Ordersymbol und aktuelles Symbol unterscheiden.
Bei dir höre ich aber nirgendwo raus, das dein "zusammengeschusteter" EA Orders eines anderen Symbols managed.
Auch sind in deinem Code sonst noch andere, unnötige Sachen.

Muss dein SL eigentlich so aussehen? OrderOpenPrice() / 1,002 ???
Und wieso setzt du nicht schon bei der Ordereröffnung einen SL, sondern erst mit OrderModify() ?

Dein Code mal etwas zusammengefasst:
Code:
// StopLoss Long
if(OrderSelect(LongOrder,SELECT_BY_TICKET))
{
   if(OrderCloseTime() == 0)
   {
      if(OrderStopLoss() == 0)
      {
         StoppLoss = NormalizeDouble(OrderOpenPrice() / (1+(SL_prozent/100)),Digits);
         
         if(OrderModify(OrderTicket(),OrderOpenPrice(),StoppLoss,OrderTakeProfit(),0,Yellow))
            // Fehler...
      }
      else
      {
         // Hier ggf. deine O_... Variablen, falls wirklich unterschiedliche
         // Symbole vom EA gemanaged werden, ansonsten:
         
         double O_Point = Point;
         
         if(Digits == 3 || Digits == 5)
            O_Point *= 10;
         
         if(OrderStopLoss() < Bid - ((TrailingStop_Abstand+TrailingStop_Schritt) * O_Point))
         {
            if(!OrderModify(OrderTicket(),OrderOpenPrice(),Bid - TrailingStop_Abstand * O_Point,OrderTakeProfit(),0))
               Alert("Order #",IntegerToString(OrderTicket())," konnte nicht modifiziert werden! Fehler Nr: ",IntegerToString(GetLastError()));
         }
      }
   }
   else
      // Order bereits geschlossen
}

// StopLoss Short
if(OrderSelect(ShortOrder,SELECT_BY_TICKET))
{
   if(OrderCloseTime() == 0)
   {
      if(OrderStopLoss() == 0)
      {
         StoppLoss = NormalizeDouble(OrderOpenPrice() / (1+(SL_prozent/100)),Digits);
         
         if(OrderModify(OrderTicket(),OrderOpenPrice(),StoppLoss,OrderTakeProfit(),0,Yellow))
            // Fehler...
      }
      else
      {
         // Hier ggf. deine O_... Variablen, falls wirklich unterschiedliche
         // Symbole vom EA gemanaged werden, ansonsten:
         
         double O_Point = Point;
         
         if(Digits == 3 || Digits == 5)
            O_Point *= 10;
         
         if(OrderStopLoss() > Ask + ((TrailingStop_Abstand+TrailingStop_Schritt) * O_Point))
         {
            if(!OrderModify(OrderTicket(),OrderOpenPrice(),Ask + TrailingStop_Abstand *O_Point,OrderTakeProfit(),0))
               Alert("Order #",IntegerToString(OrderTicket())," konnte nicht modifiziert werden! Fehler Nr: ",IntegerToString(GetLastError()));
         }
      }
   }
   else
      // Order bereits geschlossen
}