|
Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4. |
|
Themen-Optionen | Thema durchsuchen | Ansicht |
|
|||
Trailing Stop in EAs einbauen
Hallo,
ich bin auf der Suche nach einem TrailingStop, den ich in eine vorhandenen EA einbauen kann. Ich habe hier schon mehrere gefunden, sowohl intregrierte als auch Einzel-TrailingStops. Leider funktionieren alle nicht so richtig, wenn ich sie in meinen EA eingebaut habe. Alle lassen meinen Metatrader/Strategietester extrem langsam laufen bzw. abstürzen, sodass man kein vernünftige Backtesting machen kann. Bei denen, wo ich ein bisschen was im Visual Modus erkennen konnte, ist der TrailingStop nur teilweise ausgelöst worden und ist dann auch noch in die entgegengesetzte Richtgung mitgelaufen, anstatt stehen zu bleiben. Habe es mit dem e-Trailing, dem TrailingStop, dem Trade-Protector und noch anderen versucht. Leider ohne Erfolg. Hat einer eine Idee, wo man einen funktionierenden TrailingStop herbekommt, den man in EAs einbauen kann? Würde mir enorm helfen |
|
||||
Zitat:
Zitat:
Ein Trailingstop ist eine erstellte, kleine Programmlogik, die sich so verhält, wie sie implementiert wurde. Es gibt daher nicht "den einen Triailingstop". Zitat:
das auch dein EA nicht von dir selbst programmiert wurde, oder? Zitat:
sofern du schon programmiert hast. Im einfachsten Fall hast du zwei Variablen als Eingabeparameter, z.B. so Code:
input int TrailingStop_Abstand = 15; input int TrailingStop_Schritt = 2; sodass er wieder einen Abstand von 15 Pips zum Kurs hat. Als nächstes überlegst du dir, welche Order du mit einem Trailingstop versehen möchtest. Im einfachsten Fall gehst du einfach alle offenen Positionen durch, z.B. so Code:
int OrdersT = OrdersTotal(); for(int i=OrdersT-1; i>=0; i--) { // Alle offenen Orders durchgehen... } Code:
input int TrailingStop_Abstand = 15; input int TrailingStop_Schritt = 2; int OrdersT = OrdersTotal(); string O_Sym; double O_Point, O_Price; for(int i=OrdersT-1; i>=0; i--) { // Alle offenen Orders durchgehen... OrderSelect(i,SELECT_BY_POS); ResetLastError(); O_Sym = OrderSymbol(); O_Point = MarketInfo(O_Sym,MODE_POINT); // Größe eines Punktes im Symbol der Order if(_Digits == 3 || _Digits == 5) O_Point = O_Point*10; if(OrderType() == OP_BUY) { O_Price = MarketInfo(O_Sym,MODE_BID); // Aktuellen Preis des entsprechenden Symbols if(OrderStopLoss() < O_Price-((TrailingStop_Abstand+TrailingStop_Schritt) * O_Point)) { if(!OrderModify(OrderTicket(),OrderOpenPrice(),O_Price-(TrailingStop_Abstand*O_Point),OrderTakeProfit(),0)) Alert("Order #",IntegerToString(OrderTicket())," konnte nicht modifiziert werden! Fehler Nr: ",IntegerToString(GetLastError())); } } else if(OrderType() == OP_SELL) { O_Price = MarketInfo(O_Sym,MODE_ASK); // Aktuellen Preis des entsprechenden Symbols if(OrderStopLoss() > O_Price+((TrailingStop_Abstand+TrailingStop_Schritt) * O_Point)) { if(!OrderModify(OrderTicket(),OrderOpenPrice(),O_Price+(TrailingStop_Abstand*O_Point),OrderTakeProfit(),0)) Alert("Order #",IntegerToString(OrderTicket())," konnte nicht modifiziert werden! Fehler Nr: ",IntegerToString(GetLastError())); } } } - Im Beispiel werden alle offenen Positionen bearbeitet. Daher können diese logischerweise unterschiedliche Symbole haben. - Für die Fehlermeldungen wäre diese Seite hilfreich. |
Lesezeichen |
Stichworte |
ea, mql4, programmierung, programmierung metatrader, programmierung mql4, trailing, trailingstop |
|
|