Geschrieben 16. Mai 20179 Jr. comment_158563 Hallo,ich möchte, dass mein EA zwischen 22:50 bis 00:30 keine Positionen eröffnet,weil mein Broker JFD dann extreme Spread-Erhöhungen erzeugt und so dann Fehlsignale,-Einstiege entstehen.mit: string Brokerzeit=TimeToStr(TimeCurrent(),TIME_MINUTES); komme ich wegen der Zeichenkette (sting) wohl nicht wirklich weiter.Danke für die Hilfe. Melden
Geschrieben 16. Mai 20179 Jr. comment_158564 Das müsste gehen: bool TimeCheck = true; if (TimeHour(iTime(NULL,0,0))==22 && TimeMinute(iTime(NULL,0,0))>=50) TimeCheck = false; if (TimeHour(iTime(NULL,0,0))==23) TimeCheck = false; if (TimeHour(iTime(NULL,0,0))==00 && TimeMinute(iTime(NULL,0,0))<30) TimeCheck = false; if (TimeCheck) { // Mach mich reich :) } Alternativ könntest Du natürlich auch den Spread abfragen und bei zu hohem Spread das handeln verhindern. Ich nutze meist beides. Melden
Geschrieben 16. Mai 20179 Jr. Autor comment_158565 danke für den Code,ich steh' aber gerade im Verständnis wegen der mittleren Zeile auf dem Schlauch:if (TimeHour(iTime(NULL,0,0))==23) TimeCheck = false; Melden
Geschrieben 16. Mai 20179 Jr. comment_158566 Bei einem Einzeiler nach einer if Abfrage kann man die Klammern weglassen lag das Verständnis evt daran?Du kannst es auch so schreiben: bool TimeCheck = true; if (TimeHour(iTime(NULL,0,0))==22 && TimeMinute(iTime(NULL,0,0))>=50) { TimeCheck = false; } if (TimeHour(iTime(NULL,0,0))==23) { TimeCheck = false; } if (TimeHour(iTime(NULL,0,0))==00 && TimeMinute(iTime(NULL,0,0))<30) { TimeCheck = false; } if (TimeCheck) { // Mach mich reich :) } Gruß Melden
Geschrieben 16. Mai 20179 Jr. Autor comment_158567 also ich lese in der ersten Zeiledie Start-(Pausen-)zeit 22:50und in der drittendie End-(Pausen-)zeit 00:30Was soll mir aber die mittlere Zeile mit der 23 sagen?grübel, grübel Melden
Geschrieben 16. Mai 20179 Jr. comment_158568 also ich lese in der ersten Zeiledie Start-(Pausen-)zeit 22:50und in der drittendie End-(Pausen-)zeit 00:30 Was soll mir aber die mittlere Zeile mit der 23 sagen? grübel, grübel Nun ja, die erste Zeile sagt ja handele nicht, wenn es 22 Stunden und mehr als 50 Minuten sind. Die dritte sagt handele nicht, wenn es 0:00h und weniger als 30 Minuten sind. Da er aber ja auch in der kompletten Stunde dazwischen (also 23h - 23:59h) nicht handeln soll, muss man ihm das auch noch mitteilen.Es würde sicher auch gehen in dem man berechnet, wie viele Minuten am Tag schon vergangen sind aber für die schnelle fiel mir halt diese Lösung ein . Melden
Geschrieben 17. Mai 20179 Jr. comment_158572 Wobei man sich natürlich auch um den Ausstieg Gedanken machen sollte:Was passiert wenn um 22:50 noch Positionen offen sind? Melden
Geschrieben 17. Mai 20179 Jr. comment_158573 if (TimeCheck) { // geliebter Zeitraum: // normale Tradinglogik... } else { // ungeliebter Zeitraum: if(Orders_offen) { // schließe alle offenen Orders } } Melden
Geschrieben 18. Mai 20179 Jr. Autor comment_158574 Über die offenen Orders um diese Zeit mache ich mir hier in meiner EA-Strategie keine Sorgen,weil die SL/TP nicht davon berührt werden.Aber danke für den Gedanken. Melden
Geschrieben 18. Mai 20179 Jr. comment_158575 Über die offenen Orders um diese Zeit mache ich mir hier in meiner EA-Strategie keine Sorgen,weil die SL/TP nicht davon berührt werden. Da es etwas unter gegangen ist erstmal noch nachträglich Herzlich Willkommen bei Tom-Next . P.S.: falls Dein(e) Anliegen gelöst werden bzw. wurden kannst Du hier auch Thanks und Pfeil up vergeben. Dies aber nur am Rande. Bei weiteren Fragen zur Programmierung hau einfach in die Tasten. Melden
Geschrieben 18. Mai 20179 Jr. Autor comment_158576 Das mache ich natürlich gerne,wenn ich den Code oben erfolgreich zum Laufen gebracht habe.z.Zt. sind allerdings noch andere Baustellen zu erledigen...Quasi wie am BER ;D Melden
Geschrieben 23. Mai 20179 Jr. Autor comment_158589 ich habe die Schleife im MQL4 nun wie folgt getestet: //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { bool TimeCheck = true; if (TimeHour(iTime(NULL,0,0))==22 && TimeMinute(iTime(NULL,0,0))>=50) TimeCheck = false; if (TimeHour(iTime(NULL,0,0))==23) TimeCheck = false; if (TimeHour(iTime(NULL,0,0))==00 && TimeMinute(iTime(NULL,0,0))<30) TimeCheck = false; if (TimeCheck) { Print("innhalb TimeCheck"); } Print("außerhalb TimeCheck"); } //+------------------------------------------------------------------+ und folgendes Ergebnis insofern erhalten,dass während der getesteten 24h folgende Meldung bekam:http://prntscr.com/fb0grlWas mache ich falsch? Melden
Geschrieben 23. Mai 20179 Jr. comment_158593 Er macht doch alles richtig. Du sagst ihm ja schreibe bei jedem Tick "außerhalb Timecheck" ohne irgendwelche Bedingungen. Und das tut er ja auch anscheinend. Melden
Geschrieben 24. Mai 20179 Jr. Autor comment_158607 Also ich leg mir die Karten mit dem Code...Sei mal bitte so nett und ändere den Code auf eine Zeit zwischen 11:05 bis 13:30damit ich ihn am Tage testen kann...ich versteh die logic irgendwie nich.und warum kann ich die TimeHour(iTime(NULL,0,0)), TimeMinute(iTime(NULL,0,)) nicht mit einem Print-Befehl anzeigen lassen? Melden
Geschrieben 24. Mai 20179 Jr. Autor comment_158608 ich kann eingeben was ich will, ich bekomme einfach keinen TimeCheck = 0 ------------------------------------------------------------------------------------------------------------enum YesNo{No=0,Yes=1}; input YesNo Zeitsperre_YesNo = 1; extern int MagicNumber = 2017; int SELL_Ticket,BUY_Ticket; //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { // --------------- TimeCheck-Modul ------------------------------------------------------------- if(Zeitsperre_YesNo == 1) { bool TimeCheck = true; if (TimeHour(iTime(NULL,0,0))==07 && TimeMinute(iTime(NULL,0,0))>=15) { TimeCheck = false; } if (TimeHour(iTime(NULL,0,0))==08) { TimeCheck = false; } if (TimeHour(iTime(NULL,0,0))==09 && TimeMinute(iTime(NULL,0,0))<40) { TimeCheck = false; } if (TimeCheck) { Print("innhalb TimeCheck || Variable (TimeCheck): ",TimeCheck); } else { Print(" ELSE TimeCheck || Variable (TimeCheck): ",TimeCheck); } Print("außerhalb TimeCheck || Variable (TimeCheck): ",TimeCheck); } // Zeitsperre_YesNo - Schleife // --------------- Order-Modul ------------------------------------------------------------- // Im Order-Modul: if(TimeCheck==0) { Print("Order-Modul - Zeitsperre || Variable (TimeCheck): ",TimeCheck); BUY_Ticket=OrderSend(Symbol(),OP_BUY,0.01,Ask,3,0,0,MagicNumber,NULL,0,clrRed); } } // void OnTick - Schleife Melden
Geschrieben 24. Mai 20179 Jr. comment_158609 Also ich leg mir die Karten mit dem Code... Sei mal bitte so nett und ändere den Code auf eine Zeit zwischen 11:05 bis 13:30damit ich ihn am Tage testen kann... Derzeit sind andere Baustellen zu erledigen ... P.S.: Da TimeCheck eine boolsche Variable ist bietet sich an auf !TimeCheck oder TimeCheck==false zu überprüfen. Außerdem macht diese Zeile "Print("außerhalb TimeCheck || Variable (TimeCheck): ",TimeCheck);" noch immer keinen Sinn. Die wird bei jedem Tick ausgegeben - TimeCheck hin oder her. TimeHour etc. kann man natürlich auch per Print ausgeben lassen. Melden
Geschrieben 29. Mai 20179 Jr. comment_158627 bool TimeCheck = true; if (TimeHour(iTime(NULL,PERIOD_H1,0))==22 && TimeMinute(iTime(NULL,PERIOD_M1,0))>=50) TimeCheck = false; if (TimeHour(iTime(NULL,PERIOD_H1,0))==23) TimeCheck = false; if (TimeHour(iTime(NULL,PERIOD_H1,0))==00 && TimeMinute(iTime(NULL,PERIOD_M1,0))<30) TimeCheck = false; if (TimeCheck) { // Mach mich reich :) } Wenn es bei Dir nicht funktioniert hat kann es daran liegen, dass Du nicht den Minutenchart genutzt hast. Oben nun die Version, die mit jeder Zeitebene funktioniert. Melden
Hallo,
ich möchte, dass mein EA zwischen 22:50 bis 00:30 keine Positionen eröffnet,
weil mein Broker JFD dann extreme Spread-Erhöhungen erzeugt und so dann Fehlsignale,-Einstiege entstehen.
mit:
komme ich wegen der Zeichenkette (sting) wohl nicht wirklich weiter.
Danke für die Hilfe.