chimbonda Posted March 3, 2016 Report Share Posted March 3, 2016 Ich bin seit einer Woche am "coden", wenn man meine ersten Gehversuche so nennen kann. Ich habe sogar bei meinem ersten Backtest einen critical error beseitigen können hat auch "nur" ca. 4,5 Stunden gedauert. Seit dem (also Dienstagnacht) stehe ich vor dem nächsten Problem. Wie lasse ich eine Pending Order auslaufen? Konkret: Am ersten Tag t=0 habe ich ein Setup. Das möchte ich am darauffolgendenTag t=1 per Stop Order handeln. Wenn mein Einstieg jedoch nicht erreicht wurde, möchte ich, dass die Order um eine Minute vor Close des Tag t=1 gecancelled wird. Ich verwende die OrderSend Funktion. Die vorletzte Variable in der Funktion soll ja angeblich genau dafür gedacht sein (Expiration). Das Problem ist halt nur, dass es sich hierbei um eine datetime Variable handelt und ich damit nicht umgehen kann. datetime rechnet ja von 01.01.1970 an. Ich habe auch schon versucht eine TimeMinute dort ein zu bauen und vieles mehr aber am Ende wird immer nach einer datetime gefragt. Was erschwerend jetzt noch hinzu kommt ist, dass nicht alle Tage um die selbe Uhrzeit schließen, sodass wenn ich auch mit der Variable datetime umgehen könnte, es unweigerlich zu Verschiebungen kommen würde. Wichtig ist mir dass die Order Kurz vor Close nach nicht Ausführung geschlossen wird. OrderSend(Symbol(),OP_BUY,0.01,Ask,3,(Ask-0.01),(Ask+0.02),NULL,0,0,Green);(ich hoffe ich habe das jetzt richtig gemacht) Ich hoffe es kann mir jemand helfen. Quote Link to comment Share on other sites More sharing options...
chimbonda Posted March 3, 2016 Author Report Share Posted March 3, 2016 (edited) void Kaufen(){OrderSend(Symbol(),OP_BUY,0.01,Ask,3,(Ask-0.01),(Ask+0.02),NULL,0,0,Green);} (jetzt aber ) Edited March 3, 2016 by chimbonda Quote Link to comment Share on other sites More sharing options...
conglom-o Posted March 3, 2016 Report Share Posted March 3, 2016 Was erschwerend jetzt noch hinzu kommt ist, dass nicht alle Tage um die selbe Uhrzeit schließen, sodass wenn ich auch mit der Variable datetime umgehen könnte, es unweigerlich zu Verschiebungen kommen würde. Wichtig ist mir dass die Order Kurz vor Close nach nicht Ausführung geschlossen wird. Das ist wahrlich unschön und lässt sich IMHO nur über verschiedene Abfragen lösen. Eine Minute finde ich allerdings etwas knapp bemessen. Würde da eher auf 5 oder mehr gehen. Bei Deinem OrderSend Beispiel sendest Du übrigens keine Pending sondern eine Market Order ab. Die kann naturgemäß nicht verfallen, da sie sofort ausgeführt wird. 2 Quote Link to comment Share on other sites More sharing options...
chimbonda Posted March 3, 2016 Author Report Share Posted March 3, 2016 Ach so. Dann kann da auch nichts draus werden. Ich schau nochmal richtig nach. Hatte da mal so eine Tanelle mit den Orderarten gesehen. Vielen Dank für den Tipp. Werde dann meine Fortschritte hier posten. 1 Quote Link to comment Share on other sites More sharing options...
chimbonda Posted March 5, 2016 Author Report Share Posted March 5, 2016 (edited) JUHUU sauber ich hab´s !!! Ich arbeite zwar immer mit StoppOrders aber das muss der EA ja nicht wissen ;) also habe ich aus aus dem OP_SELLSTOPP einfach ein OP_STOPP gemacht (oben habe ich versehentlich die falsche Formel hineinkopiert). Hier die "echte" also bereits verbesserte. (ich hatte wirklich ein OP_SELLSTOPP in der Ausgangsformel)void Short(){OrderSend(Symbol(),OP_SELL,0.01,entry,3,sl,tp,NULL,0,0,Green);// OrderSend(akt Symbol,Kaufen,Lot,entry,Abw3Punkte,sl,tp,Kommentartext,ID,Datum,Farbe} Wenn man also eine StoppOrder am Ende des Tages verfallen lassen möchte muss man nur die Bedingungen um einen Tag in die Vergangenheit versetzen und Market einsteigen. Nur was mache ich wenn wenn die möchtegern StoppOrder zwei Tage stehen bleiben soll??? Jetzt muss ich nur noch den Sonntag mit hilfe von 20000 if Funktionen eliminieren und alles ist gut :D PS.:Warum schreibt der immer den Code zwei mal dahin obwohl ich den nur einmal einfüge? Und dann noch diese komischen <br>. Ach Gott wat ne. Dat han wa so nit jewollt. Edited March 5, 2016 by chimbonda Quote Link to comment Share on other sites More sharing options...
conglom-o Posted March 5, 2016 Report Share Posted March 5, 2016 Wenn man also eine StoppOrder am Ende des Tages verfallen lassen möchte muss man nur die Bedingungen um einen Tag in die Vergangenheit versetzen und Market einsteigen. Nur was mache ich wenn wenn die möchtegern StoppOrder zwei Tage stehen bleiben soll??? Oder man sendet die Order einfach vernünftig ab . Quote Link to comment Share on other sites More sharing options...
chimbonda Posted March 5, 2016 Author Report Share Posted March 5, 2016 Und genau darin liegt meine derzeitige Herausforderung. Habe immer noch nicht herausgefunden wie man die Order nach x Tagen verfallen lässt. Quote Link to comment Share on other sites More sharing options...
conglom-o Posted March 5, 2016 Report Share Posted March 5, 2016 Schau mal hier:https://forum.mql4.com/4992 Ist zumindest ein Anfang zum rein denken. 1 Quote Link to comment Share on other sites More sharing options...
chimbonda Posted March 6, 2016 Author Report Share Posted March 6, 2016 Hab es gerade mal quer gelesen. ich gucke mir das gleich mal genauer an. So wie es aussieht ist es genau das was ich brauche bzw. der direkte Weg zu meinem Ziel. Vielen Dank für den Link Quote Link to comment Share on other sites More sharing options...
chimbonda Posted March 25, 2016 Author Report Share Posted March 25, 2016 (edited) Als erstes wünsche ich allen hier in der community schöne Ostertage. Ich persönlich versuche nicht zu viel zu futtern aber das ist heute (erster Familientag) schon mächtig in die Hose gegangen :D Zweitens möchte ich mich dafür entschuldigen, dass ich meinem Versprechen meine Vortschritte hier zu posten nicht ganz nachgekommen bin. Das "Semester" hat zwischenzeitlich wieder angefangen und die Semestervorbereitungen haben mich voll eingespannt und in ca. drei Monaten stehen schon wieder Prüfungen an. @ conglom-o: das war tatsächlich genau das wonauc ich gesucht habe. Vielen Dank nochmal. Obwohl ich weiß, dass die meisten hier meine Problemchen belächeln mögen, gibt es vielleicht jemanden wie mich der gerade vor dem gleichen Problem Steht bzw. die selben Fargen hat. Deswegen jetzt das Update: datetime et;et = (TimeCurrent()+86400);void Short() { OrderSend(Symbol(),OP_SELLSTOP,0.01,entry,3,sl,tp,NULL,0,et,Green);// OrderSend(akt Symbol,Kaufen,Lot,entry,Abw3Punkte,sl,tp,Kommentartext,ID,Datum,Farbe et steht für exporation time und ich habe es als globale Variable definiert. Die 86400 Sekunden sind die Sekunden pro Tag und et voilà die StopOrder wird nach einem Tag bei Nichtausführung gelöscht Das hat fast auf Anhieb funktioniert. Nur wenn das Ziel am selben Tag/ Bar erreicht wird, wird beim take profit nochmal eine Order gesendet. Und manchmal wird eine Order gesendet die nicht im geringsten meinem Setup entsprechen. Ich definiere es mal als Schluckauf. Das Setup folgt folgenden einfachen Regeln: Wenn a > b und a > c dann mach am nächsten Tag einen SellStopp, der nur einen Tag stehen bleibt. Und der Schluckauf setzt hin und wieder absolut willkürlich und ohne Sinn eine Orde. Ich vermute mal, dass es an der OrderSend Funktion liegt. Es steht immer folgende Warnug "return value of 'OrderSend' should be checked". Jetzt habe ich herausgefunden, dass wenn ich die OrderSend Funktion in einer if() Funktion Verwurste, dass diese Meldung nicht mehr kommt. Nur hatte diese if Funktion absolut keine Auswirkungen auf das o.g. Problem gehabt weswegen ich das wieder rückgängig gemacht habe. Ich hatte es auch schon mal mit einem return (0) versucht nur ist dann immer die Handelsplattform abgestürtzt. Return (0) hat der Kasten dann wahrscheinlich zu wörtlich genommen und absolut nichts mehr zurück gegeben Ich habe auch schon in diesem mql4 forum gesucht bin aber nicht fündig geworden. Wahrscheinlich verwende ich die falschen Suchbegriffe. Edited March 25, 2016 by chimbonda 2 Quote Link to comment Share on other sites More sharing options...
conglom-o Posted March 25, 2016 Report Share Posted March 25, 2016 @conglom-o: das war tatsächlich genau das wonauc ich gesucht habe. Vielen Dank nochmal. Immer gerne. Dafür ist das Forum hier ja da. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.