StopLoss auf Break Even nachziehen
Kann mir jemand in Code-Form aufschreiben, wie ich den StopLoss einer bestehenden Order auf Break Even ziehe, sobald ich 20 Pips im Plus bin und die Order anschließend mit einem TrailingStop versehe ?
|
Joa das wäre cool!!
Aber nur So nebenbei: Breakeven bedeutet, dass man gerade an die Stelle kommt, an der man keinen Verlust mehr macht (aber auch noch keinen Gewinn). Man geht also +-0 aus dem Trade (bzw setzt den Stoploss so, dass man +-0 ausgehen würde). Der Breakeven wäre meiner Meinung nach also nicht der Einstiegskurs sondern wenn überhaupt der Einstiegskurs Plus Spread... als sicherheitsfanatiker oder "ganz genauer" könnte man auch noch Plus ein paar Pips als Ausgleich für die Evtl anfallende Kommission dazu rechnen;-p Nur fürs allgemeine Verständnis, damit keine Missverstände auftreten!!:p |
Hallo,
das ist kein Problem. Code:
Das void UpdateBE() rufst du aus der void Start() auf (also bei jedem Tick). Fertig! Spread wird berücksichtigt. Läuft die Order nach dem Break Even Update ins SL wird sie exakt mit 0 geschlossen. Gruß naranjoe |
Danke dir für den Code.
Und wie füge ich nun einen TrailingStop zu eben dieser Order hinzu ? |
Wenn ich den Code richtig verstehe, IST das der Training Stopp.
Bei jedem Tick, also jeder Kursänderung wird überprüft, ob der Kurs gestiegen ist. Wenn er gestiegen sein sollte wird der aktuelle StopLoss gelöscht und ein neuer mit dem vorgegebenen Abstand wird erstellt. Nichts anderes ist ein TrailingStop vom Broker;-p |
Diese Funktion beinhaltet keinen Trailing Stop.
Es funktioniert so: Wenn deine Order einen bestimmten Wert (UpdateToBE) im Plus ist, dann wird der Stop Loss auf den Eröffnungspreis der Order gesetzt. Läuft jetzt der Kurs zurück und der Stop Loss wird erreicht, (welcher ja jetzt mit dem Eröffnungspreis übereinstimmt) wird die Order genau bei 0 geschlossen. Code für den Trailling Stop folgt. Gruß naranjoe |
Trailing Stop
Eröffne deine Order mit TrailingStop Pips als Stop Loss (also z.B. 20).
Das SL wird dann immer mit dem Abstand von 20 Pips der Order nachgezogen oder halt eben ausgelöst (wenn der Kurs dreht). Dafür solltest du auch ein Take Profit wählen das etwas größer ist z.B. 50. Aufruf von void UpdateTS erfolgt wie beim void UpdateBE. Code:
void UpdateTS() Aber das überlasse ich mal dir ;) Gruß naranjoe |
Und wie weise ich diese 2 Funktionen einer bestimmten Order zu ?
Sorry, aber ich bin halt noch Anfänger. Ich habe gerade erst das visuelle Backtesting ausprobiert und festgestellt, dass die BreakEven-Funktion nichts tut. Zur Info: Ich habe die genannte Funktion innerhalb der Start-Funktion eingefügt aber ohne die letzte und die ersten 3 Zeilen, also folgendermaßen: HTML-Code:
for(int i = OrdersTotal() - 1; i >= 0; i--) |
Zitat:
Häng doch mal deinen kompletten Code hier dran, dann lässt sich der Fehler ganz leicht herausfinden und erklären. Gruß naranjoe |
HTML-Code:
extern double dLots=0.1; |
Da hat sich wohl der Fehlerteufel eingeschlichen.
Du hast die FOR-Schleife nicht original übernommen. Sie muss so anfangen: for(int i = OrdersTotal()-1; i >= 0; i--) Gruß naranjoe |
Jo danke, daran lags.
Ich hab die Indexverschiebung angewand bevor ich den Code richtig verstanden gehabt hatte^^ |
Hallo,
Ich bin neu in EA Programmieren und Lese hier alles was ich finde. Eins versteh ich nicht was das Void immer zusagen hat?. Ich wollte den Breakeven bei mir einsetzen aber irgendwie funktioniert es nicht ! Vieleicht könnte ein Profi mal drüber schauen. HTML-Code:
extern double UpdateToBE = 10 ; |
Code:
extern double UpdateToBE = 10 ; Als Zweites solltest Du Dir mal angewöhnen eine klare Struktur zu schreiben und immer entsprechend einrücken. void bedeutet nur "leer" bzgl. der Rückgabe von Funktionsergebnissen, im Gegensatz zu int Funktion(), bool Funktion(), double Funktion oder string Funktion(). In diesen Fällen wird die Rückgabe einer entsprechend deklarierten Variable erwartet. traderdoc |
Danke für deine Antwort woran erkennt man wie viel Digit meiner hat? am EUR/USD zb. ? (Nachkomma stellen ) ?
|
Genau, 4-DigitBroker geben in den Kurse 4 bzw. 2 Kommastellen aus und 5-DigitBroker demnach 5 bzw. 3.
Beim 5-DigitBroker würden Deine angedachten 10 Pips in der Variablen UpDateToBE nur 1Pip entsprechen. traderdoc |
Ok dann ist es ein 4 Digit Brokker, weil dax zb. 9800,5 und Eur/Dollar 1,3290
Ich hab das wie folgt reingebaut ist das ok ? HTML-Code:
extern double UpdateToBE = 10 ; |
Wenn es ein 4Digit-Broker ist, dann darf nicht! mit 10 multipliziert werden, sondern nur bei 5-DigitBrokern!
Die Abfrage müßte richtig lauten: int Multiplier = 1; if (Digits == 3 || Digits == 5) Multiplier = 10; Desweiteren steht plötzlich die eigene Funktion in der Funktion init(). Diese wird aber nur zur Initialisierung des Programms einmalig durchlaufen. Deine Funktion gehört in die Funktion start(). traderdoc |
Gut hab das so Übernommen und ein bisschen eingerückt.
Hab das in die start Funktion geschoben nur das bei mir steht void OnTick() ist das ok ?? sieht jetzt so aus besser? HTML-Code:
int Multiplier = 1; |
if(OrderType() == OP_BUY && OrderOpenPrice() > OrderStopLoss() && Bid - OrderOpenPrice() >= Multiplier * Point)
{ OrderModify(OrderTicket(), OrderOpenPrice(), OrderOpenPrice(), OrderTakeProfit(), 0); } if(OrderType() == OP_SELL && OrderOpenPrice() < OrderStopLoss() && OrderOpenPrice() - Ask >= Multiplier * Point) Da soll doch bestimmt das hin: ....>= UpdateToBE * Multiplier * Point) traderdoc |
Ja so steht es hab alten code gepostet sry.
Ist das soweit ok ?? im Test passiert noch nix ! HTML-Code:
int Multiplier = 1; |
Ok, dann solltest Du doch mal den gesamten Code als mq4-Datei anhängen.
traderdoc |
Ok hier das ganze.
Signale funktionieren Prima, macht auch nur ein Trade bei Signal auf und erst bei neuem Signal wieder. Hier der Ganze Code ; File-Upload.net - test.mq4 |
Sorry, unter File-Upload.net werde ich kein Download initieren.
Die Datei geht auch ganz normal hier anzuhängen. |
Liste der Anhänge anzeigen (Anzahl: 1)
Ah habs erst nicht gefunden ;)
|
Liste der Anhänge anzeigen (Anzahl: 1)
Na ja, da war einiges zu tun.
Das fing schon damit an, dass er EA keine Order geöffnet hatte usw. Und mal ordentlich durchgefegt habe ich! Nun löft er! traderdoc |
Mega Traderdoc danke.
Ich probiers morgen gleich mal und schau mir an was du alles geändert hast ;) gn8 |
So heute Probiert Funktioniert Prima. Danke nochmals Traderdoc.
Eine Frage hätte ich noch. Wenn ich Testläufe mache und er sagt mir das ich Z.B. 55% Erfolgtrades habe aber mache Trotzdem Minus Selbst mit CRV von 2. Sollte ich da drauf achten ob Gewinn raus kommt oder eher auf die erfolgsquote der Trades? Nur Informationshalber. :D |
Hallo Rico1040,
mit fast dem gleichen Prg habe ich damals auch angefangen. Nur hast du noch sehr wenige, für eine Strategietestingperiode zuwenig externe Verstell- oder Suchmöglichkeiten. Hier wären Einstellbare RSI, gesamt oder getrennt nach SELL oder Buy, vorstellbar. Deine Grundeinstellungen sind sehr groß und dürften ab H4 aufwärts laufen. Vermögend mußt du auch sein, bei einer so hohen LOT-Zahl, außer es sollte nur ein "Just for Fun"-EA sein. Ich quäle den Strategietester mit 50.- - 1.000.- Startvolumen. Dieses dürfte für die meisten Anfänger ein wirklich realistisches Startvolumen sein, das nach einer Euphorie dann erschrechend schnell Platt ist. Die Devise sollte sein, Spiele nur mit der DEMO-größe, welches man auch später unter LIVE einsetzen kann. |
Danke für deine Antwort als erstes ist es ein Test EA. Zwecks Programmieren Lernen usw. damit später nix schief geht bzw. zum nachvollziehen was sinnvoll ist was nicht wie BE gehen oder so. Wenn ich es Real machen sollte wird das MM. direkt eingehalten (1%-3% vom GesamtKapital.)
Und wenn bezieht er sich erstmal nur auf den Dax und da sind 3 lots (3cfd nicht viel) grüße |
Zitat:
Zu deiner anderen Frage: Wichtig ist, das am Ende die Gewinne stehen. Dafür machst du das Ganze doch. :) Selbst wenn du nen Roboter hast, der dir 90% Trefferquote bringt, aber du ein negatives CRV hast, dann ist über kurz oder lang dein Konto leer. Ein solides MM und positives CRV sind oft sogar wichtiger als eine Trefferquote von weit über 50%. Und zum Dax: Je nach Größe deines Kontos können 3 Lot schon sehr viel sein. Als Beispiel: 1000,00 € Konto MM = 3 % = 30,00€ 3 Lot kosten 3,00€ CRV= 2/1 = 60,00€ / 30,00€ bzw. 20 Pips / 10 Pips Bedeutet: Wenn du nicht gerade Ausbrüche tradest, kommst du mit einem SL von 10 im Dax nicht sehr weit. Die derzeitige Vola liegt da z.Zt. bei 120 Pips. Auch wenn du dich im Stundenchart im Trend/in einem Ausbruch befindest, sind kurze Rücksetzer von 30 Pips keine Seltenheit.... im Gegenteil. Ein Einsatz von nur 1 Lot würde in diesem Beispiel sogar deine Trefferquote erhöhen. lg |
Wie kann das CRV negativ sein?
CRV=potentieller Gewinn/potentieller Verlust (da es in diesem Zusammenhang keine negativen Pips gibt, kann das Ergebnis auch nicht negativ sein) Und das Ergebnis kann auch bei einer TQ von 55% und einem CRV von 2, negativ sein. Wichtig ist das realisierte CRV und nicht jenes welches du festlegst. Tritt z.B. Slippage auf und vergisst du den Spread mit einzuberechnen dann kann aus einem 30 Pip TP und einem 15 TP SL (=> CRV = 2) ganz schnell ein TP mit 27 Pip und ein SL mit 18 Pip werden (=> CRV 1.5). Grüße MM |
Super danke für eure Aufklärung.
Ich hatte das gefragt weil er das ja im Strategietester so anzeigt. Das es rein logisch nicht so ist ist mir bewusst. Deswegen wollte ich von euch wissen ob man drauf wert legen kann zb. gebe ich ein stopp von 20pkt TP von 40 pkt spuckt er mir aus 60% gewinntrades aber gesamtNetto von ca -1135 € grüße Rico |
@Money Maker
Ein negatives CRV ist ein CRV <1. Also, wenn du z.B. 30 Pips riskierst um 15 Pips zu bekommen. Das wäre dann ein CRV von 1/2 bzw. 0.5 bzw. <1. Den Spruch "Hin und her machts Konto leer!" kannst du meistens vergessen, da der Spread beim Eröffenen der Position (zumindest bei mir) schon eingerechnet wird. Wir sprechen doch hier von EAs. Und sobald der EA eine Position eröffent hat, wird ein SL von 15 und ein TP von 30 gesetzt. Der Trade endet dann entweder beim SL oder TP. Letztendlich lag dein CRV aber bei 2. Daran ändert auch ein Slipage nichts (es sei denn, der EA platziert zuerst den SL/TP und anschliessend die Eröffnung). Wenn das so ist, dann hast du natürlich recht. Das passiert z.B. auch, wenn du z.B. einen Sell-Stop in den Markt legst bzw. über die Ordermaske tradest. Das CRV kannst du höchstens beeinflussen, wenn du manuell in den Trade eingreifst, oder dein EA mit einem Trailing Stop arbeitet. Rico hat ja die Frage gestellt, worauf er sein Augenmerk richten soll... entweder auf den Gewinn oder auf die Trefferquote. Meiner Meinung nach zählt der Betrag, der unterm Strich rauskommt. Der sollte immer positiv sein. Wie man aber mit einem CRV von 2 und einer 55% TQ Minus macht, müsstest du mir erklären. Da steh ich jetzt etwas auf dem Schlauch. Das könnte passieren, wenn man den Spread und die sonstigen Kosten nicht einkalkuliert hat, bzw. die Kosten den Gewinn übersteigen. Dann sollte man mMn aber nochmal über sein MM nachdenken. :-) lg Zitat:
|
@ Rico
Sry, kann meinen vorherigen Beitrag nicht mehr editieren. Arbeitet dein EA mit einem Trailing-Stop (TS) oder Break Even? Dann ist dein CRV von 2 (TP 40 und SL 20) nämlich hinfällig. Wenn dein Trade oft per TS endet (z.B. wenn du mit 5 Pips im Plus bist) dann hast du den Trade zwar gewonnen, aber die Verlusttrades fressen deinen Gewinn auf. Beispiel: 100 Trades, 60 % TQ, TS beendet den Trade bei 5 Pips im Plus. 60 x 5 Euro = 300,00 € 40 x 20,00 € = 800,00 € Das macht trotz der TQ von 60% ein Minus von 500,00 €. Dein angestrebtes und festgelegtes CRV von 2/1 dreht dann logischerweise ins negative. Das bedeutet, dass deine Trefferquote, bei einem tatsächlichem CRV von 2, stark sinken würde. lg |
Liste der Anhänge anzeigen (Anzahl: 1)
Schaut mal vielleicht erkennt ihr ja eine Fehler.
Eingestellt wie gesagt 20 / 40 (Breakeven bei 10 ) als zusatz ! Berechnet auf jeden Tick (in der Tabelle das erste). Grüße Rico |
Hallo Rico,
wie ich oben schon geschrieben habe, liegt es mit Sicherheit dann am Break Even. Schau Mal im Strategiefenster unter Egebnisse und achte Mal auf kleinere Gewinnmitnahmen. |
Nachtrag:
Du erkennst das schon an den durchschnittlichen Gewinnen "Durchschnitt Profit Trade". Der liegt bei 30,45€. Dann schau dir mal den "Durchschnitt Loss Trade" an (53,61€) und du weist was Sache ist. :-) Schau dir einfach bei den Egebnissen an, wie oft bei deinen 483 Trades der TP (von 40 bzw. die 120,00 €) erreicht wurde. Durch die 10 Pips Break Even (der ja auch als Trailing Stop dient!) hast du nur noch einen Spielraum von eben diesen 10 Pips, sobald der Kurs 10 Pips in deine Richtung gelaufen ist. Das ist -wie gesagt- nicht viel in einem hochvolatilen Markt. Setze den mal auf Mindestens 20. Oder schraube deine Erwartungen an den Profit zurück. Wenn du mit Trailingstop arbeitest, dann wäre ein TP20 SL15 und TS 10 evtl auch ok. Musst du mal durchanalysieren. |
@ Rico
Einmal vorweg, bei einem 4-digit Broker mußt du im Strategietester "2", beim 5-digit Broker "20" für 2 Pips Spread eingeben. Spielen kannst du mit dem SL und/oder TP, um dort eine Tendenz zu erkennen. Ein TS würde ich am Anfang der Suche nicht aktivieren. Aber beim anklicken der 30 und 70% Beschränkung würden auch schon unsinnige Trades herausfallen. Profite unter 1 kann man vergessen. Wie gesagt. wie oben oder im Code kräftig nachbessern. Weiter wie groß sind die geschlossen, aber nicht abgeschlossenen Trades beim Stoppen ? |
Zitat:
Ja da hast du recht, es kommt natürlich auf die Strategie an. Ich habe nur gelernt, dass das reale CRV meist (immer) anders ist als das geplante. Grüße MM |
Alle Zeitangaben in WEZ +2. Es ist jetzt 14:36 Uhr. |
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.6.1
Powered by vBCMS® 2.7.0 ©2002 - 2024 vbdesigns.de
Copyright ©2009 - 2023 by Expert-Advisor.com - Das Metatrader Forum