-
Keine neuen Order, wenn letzte Order Verlustorder
Ich hab mit allen möglichen SL bzw. Trailingstops experimentiert. Eregebnis: optimaler Trailingstop: 39 Punkte SL:24 Punkte. Zeitraum: 15.12.2009 -20.05.2010 Einen dynamischen SL müsste man aber an irgendetwas koppeln. Eine Veränderung dieser Werte bringt nur weniger Profit. Die Idee mit den Gegenpositionen ist daher nicht schlecht. Zur gleichen Zeit als Absicherung oder als neue Order? Die Logik dahinter müsste lauten: Wenn der letzte Trade ( in eine Richtung- SELl oder BUY) ein Verlusttrade, dann setze alle Signale in die Gegenrichtung und eröffne Gegenposition. Ergebnis: Ein weiterer Verlusttradewird nicht eröffnet, obwohl die Signale das eigentlich erwarten würden. Das Problem besteht beim realen traden manuell ja genauso, da man nie weiss- wann ist nun UNTEN. - oder OBEN. Unabhängig von Indikatoren, die in diesen Phasen immer nur neue Einstiege anzeigen, obwohl es immer weiter runter geht. Die Auswertung meiner Tester-Reports hat wiegesagt ergebn, das eine Reihe von Verlustrades unnötig waren, insbesondere an Tagen, wo der Markt extrem fällt oder steigt. Hier müsste das Handelssystem entweder anhalten- VERLUSTPAUSE- oder in die Richtung des momentanen Trends handeln und alles andere ausser acht lassen. Allerdings kenne ich keinen Indikator, der die tatsächliche Trendrichtung frühzeitig und sicher anzeigt. Gruß Freecode
-
Keine neuen Order, wenn letzte Order Verlustorder
Hi WOGO, habe jetzt 2 Tage experimentiert- dein Hinweis war richtig, das es mit TRUE nicht funktioniert, da die IF Schleife so immer wieder von vorn beginnt zu laufen. habe es jetzt mit einem Zähler realisiert- und der bringt das gewünschte Ergebnis mit der OrderPause. Die Idee mit dem Zähler find ich gut - allerdings produziert mein System mit 3 Indikatoren exakt zum gleichen Zeitpunkt die besten Ergebnisse - Profitfaktor über 6 Monate (Backtest) nahe 2,0 - mit einem Zähler ist wieder die Frage, wo soll nun der Einstieg erfolgen. Mein größtes Problem im Moment sind wiegesagt aufeinanderfolgende Verluste durch STOP-LOSS. Setze ich den Stop enger, wird der Gewinn geringer, setze ich den Stop großzügiger, weiten sich auch die Verluste aus- besonders an Tagen wie dem 06.05, 20.01 oder 27.04.2010. Hiersuch ich noch die Lösung. Gruß und dank nochmals Freecode
-
Keine neuen Order, wenn letzte Order Verlustorder
Hi WOGO, die Freude war etwas verfrüht. Der untenstehende Code funktioniert. if (OrderPauseBuy == true) { WaitTimeBuy = TimeLocal() + (OrderStop); // Wartezeit = Aktuelle Zeit + OrderStop (3600 s) OrderPauseBuy=false; } if (TimeLocal() < WaitTimeBuy) // solange aktuelle Zeit kleiner wie Wartezeit { return (true); // CheckOrderPauseBuy = TRUE--> keine neuen BUY Order werden geöffnet- SELL Order möglich } else { return (false); // nach Ablauf der Wartezeit --> CheckOrderpauseBuy = FALSE, neue BUY Order erlaubt. } ABER: Ich habe mehrmals länger als die eingestellte Zeit in Sekunden gewartet- und die Variable schaltet nicht von TRUE auf FALSE zurück. Nun habe ich mir TimeLocal() und TimeWaitingBuy in Echtzeit auf dem Chart angeschaut- und festgestellt: TimeLocal() und TimeWaitingBuy haben genau immer den Abstand zueinander, welchen ich mit OrderStop vorgebe. Das heisst, das die IF anweisung unendlich läuft. Problem: TimeWaitingBuy MUSS in dem Moment, in welchem es aufgerufen wir, als FESTE ZAHL stehenbleiben, damit die aktuelle Zeit in X- sekunden größer ist- und damit die OrderPause zurücksetzt. Im Moment laufen beide Variablen parallel zueinander. Für weitere Anregungen dankt Codefree
-
Keine neuen Order, wenn letzte Order Verlustorder
Hi WOGO, danke für die schnelle Antwort - ich habes jetzt so programmiert - im Backtest scheint es zu funktionieren. LIFE warte ich noch darauf. Werd mal die Indikatoren großzügiger einstellen. Sollte es nicht LIFE laufen, melde ich mich wieder. Danke nochmal - und Gruß von Freecode
-
Keine neuen Order, wenn letzte Order Verlustorder
Hallo Tradingfreunde, bin seit kurzem hier und beschäftige mich seit ca. 4 Wochen mit MQ4- habe auch schon ein relativ stabiles Handelssystem - nach einigen Anlaufschwierigkeiten- programmiert. Die Hinweise im Web zu MQ4 bzw. der Programmcode zu einzelnen Themen ist sehr vielfältig- zu meinem Problem habe ich zwar einiges gefunden, was passen könnte, aber eben im DEMO-Konto- und auch im Backtest- so einfach nicht funktioniert. Das Problem mit nur einer Order pro Balken kommt dem zwar nahe- aber eben nur teilweise, da sich dann das ganze immer auf den jeweiligen Zeitrahmen beschränken würde Mein System handelt wiegesagt relativ zuverlässig- bei der Auswertung habe ich aber festgestellt, das in Zeiten, in denen die Inidkatoren zwar richtig anzeigen- aber der Markt trotzdem weiter fällt oder steigt- nach einer Verlustorder (z.B. SELL) der Stop ausgelöst wird. Nun eröffnet mein System aber sofort eine neue Order, in diesem Falle wieder eine SELL-Order, welche im schlimmsten Fall nach erneutem SL mit Verlust geschlossen wird. Das ganze passiert schon mal 3-4 mal in Folge- was ich verhindern will. Der EA soll also maximal 2 Verlustorder in EINE Richtung akzeptieren -also 2x BUY oder 2x SELL Verlust. Dann soll er eine vordefinierte Zeit (OrderStop) warten. Ich habe einen Zähler, welche die BUY- oder SELL Order zählt und wenn die Anzahl größer wie vorgegeben ist UND die letzte Order mit Verlust geschlossen wurde, erhalte ich das Signal ORDERPAUSEBUY oder ORDERPAUSESELL= TRUE Der folgende Code liest die Variable aus und übergibt sie an die Bedingungen vor erneuter Orderausführung (CheckOrderPause...), OrderStop ist dabei die vordfinierte Zeit der OrderPause (bei mir 60 Minuten = 3600 s) bool CheckOrderPauseBuy() { static datetime WaitTimeBuy=0; // initialisierung Wartezeit if (OrderPauseBuy == true) WaitTimeBuy = TimeLocal() + (OrderStop); // Wartezeit = Aktuelle Zeit + OrderStop (3600 s) while (TimeLocal() < WaitTimeBuy) // solange aktuelle Zeit kleiner wie Wartezeit { return (true); // CheckOrderPauseBuy = TRUE--> keine neuen BUY Order werden geöffnet- SELL Order möglich } return (false); // nach Ablauf der Wartezeit --> CheckOrderpauseBuy = FALSE, neue BUY Order erlaubt. } Und hierher wird die Bedingung übergeben- vor Orderausführung: if ((Signal == 1) && (EnableNewBuy) && !CheckOrderPauseBuy())// Wenn Signal =1, Enable New BUY = true und OrderPause FALSE! ...nun erfolgt die Orderausführung, wenn alle Bedingungen richtig sind......................... Der Code funktioniert, die Variablen schalten von FALSE auf TRUE und umgekehrt- aber die Orderpause wird nicht ausgeführt. Frage: Weiß jemand einen Rat- was mache ich falsch oder wie kann man sonst eine solche Orderpause einfach realisieren ? Grüße und Dank im Voraus von Freecode P.S. Sollte ich nicht immer gleich antworten- sorry- bin viel unterwegs, deswegen auch die Idee mit dem EA;-)
Freecode
Rookie
-
Benutzer seit
-
Letzter Besuch