|
Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4. |
|
Themen-Optionen | Thema durchsuchen | Ansicht |
|
|||
Ergänzung: Nach einigem "Hin und Her" habe ich nun eine Möglichkeit gefunden, den code etwas "freundlicher" zu gestalten, welcher darüber hinaus die üblichen Zeitangaben "modelliert".
extern int TradeTime_1_Begin = 09:30; extern int TradeTime_1_End = 11:30; TradeTime_1_Begin = a : b int a = Minute()*60; int b = Minute(); TradeZone_1_Begin = a + b TradeTime_1_End = c : d int c = Minute()*60; int d = Minute(); TradeZone_1_End = c + d int Hour(); int Minute(); CurrentTime = (TimeHour(TimeCurrent())*60) + TimeMinute(TimeCurrent()); bool ... Kann man hier ggf. auch - int a, c = Minute()*60 - zusammenfassen ? Bitte sagt mir Eure Meinung dazu. Vielleicht gibt es aber auch eine bessere, programmkonforme Lösung (mit üblichen Zeitangaben), für die ich natürlich dankbar wäre. LG. piptrade |
|
|||
Das geht so überhaupt nicht!
Gut, dann lege mal vor: Das Umrechnen der Zeitangabe als String in ein Format datetime geht wie folgt: extern string TradeTime_1_Begin = "09:30"; ..... datetime TimeBegin; ..... TimeBegin = StrToTime(TimeToStr(TimeCurrent(), TIME_DATE) + " " + TradeTime_1_Begin); Damit liegt jetzt die Zeit des Beginns an diesem Tag als TimeBegin vor (das sind die Sekunden, die seit dem 01.01.1970 bis TradeTime_1_Begin vergangen sind). Mit der Variablen TimeBegin kann dann weitergearbeitet werden. traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis. |
|
|||
Oh, Man, das ist ja "riesig"! Danke für die kompetente Unterstützung!
Hier muss ich aber erst versuchen, jeden einzelnen Part zu verstehen - und erst, wenn das "sitzt", - werde ich den ersten Versuch zum Aufbau eines entsprechenden codes in die Tat umsetzen. Für die Hinweise zur Funktion "datetime" und die Möglichkeit der "Umwandlung" schon erst einmal - Thanks! Ganz LG. piptrade |
|
|||
"Morgenstund hat Gold im Mund", - und so ist hier der erste "Gehversuch" bei der Umsetzung des vollständigen codes:
extern string TradeTime_1_Begin = "09:30"; extern string TradeTime_1_End = "11:30"; extern string TradeTime_2_Begin = "15:50"; extern string TradeTime_2_End = "17:30"; //+------------------------------------------ datetime Time_1_Begin, Time_1_End, Time_2_Begin, Time_2_End; //+------------------------------------------ bool TradingTime() { { Time_1_Begin = StrToTime(TimeToStr(TimeCurrent(), TIME_DATE)+" "+TradeTime_1_Begin); Time_1_End = StrToTime(TimeToStr(TimeCurrent(), TIME_DATE)+" "+TradeTime_1_End); Time_2_Begin = StrToTime(TimeToStr(TimeCurrent(), TIME_DATE)+" "+TradeTime_2_Begin); Time_2_End = StrToTime(TimeToStr(TimeCurrent(), TIME_DATE)+" "+TradeTime_2_End); //+------------------------------------------ if (((TradeTime_1_Begin < TradeTime_1_End) && ((Time_1_Begin < TradeTime_1_Begin) || (Time_1_End >= TradeTime_1_End))) && ((TradeTime_2_Begin < TradeTime_2_End) && ((Time_2_Begin < TradeTime_2_Begin) || (Time_2_End >= TradeTime_2_End)))) return(false); } return(true); } //+--------- int start() { if (TradingTime() == false) return(0); and so on ... } Bangen Herzens einerseits, andererseits mit ein bisschen Zuversicht, bin ich auf den Kommentar gespannt. Kann man den code (insgesamt) so schreiben ? Ist da eventuell ein Klammerpärchen zu viel ? ... Oder ... ? Ganz LG. (ein ungeduldiger) piptrade |
|
|||
Warum hast du nach bool TradingTime() 2 Klammern? {{
Du vergleichst wieder Strings miteinander. So wird es nicht klappen. |
|
|||
Damit wäre die Frage nach:"1 Klammerpärchen zu viel?" - beantwortet. Klammerpärchen wurde entfernt.
Und zum 2.: Klar, Du hast recht ! - wieder strings. "Ups"! Mit dem veränderten Code sollten jetzt strings in Integerzahlen gewandelt werden und ein Vergleich von Integerzahlen möglich sein: extern string TradeTime_1_Begin = "09:30"; extern string TradeTime_1_End = "11:30"; extern string TradeTime_2_Begin = "15:50"; extern string TradeTime_2_End = "17:30"; //+------------------------------------------ datetime Time_1_Begin, Time_1_End, CurrentTime_1; datetime Time_2_Begin, Time_2_End, CurrentTime_2; //+------------------------------------------ void init() { Time_1_Begin = StrToTime(TimeToStr(TimeCurrent(), TIME_DATE)+" "+TradeTime_1_Begin); Time_1_End = StrToTime(TimeToStr(TimeCurrent(), TIME_DATE)+" "+TradeTime_1_End); Time_2_Begin = StrToTime(TimeToStr(TimeCurrent(), TIME_DATE)+" "+TradeTime_2_Begin); Time_2_End = StrToTime(TimeToStr(TimeCurrent(), TIME_DATE)+" "+TradeTime_2_End); } //+------------------------------------------ bool TradingTime() { CurrentTime_1 = StrToTime(TimeToStr(TimeCurrent(), TIME_DATE|TIME_MINUTES)); if (Time_1_Begin < Time_1_End) { if ((CurrentTime_1 < Time_1_Begin) || (CurrentTime_1 >= Time_1_End)) returne(false); } CurrentTime_2 = StrToTime(TimeToStr(TimeCurrent(), TIME_DATE|TIME_MINUTES)); if (Time_2_Begin < Time_2_End) { if ((CurrentTime_2 < Time_2_Begin) || (CurrentTime_2 >= Time_2_End)) returne(false); } return(true); } //int start() { if (TradingTime() == false) return(0); // EA Code } Ist das SO ? Oder bin ich dem richtigen Ergebnis wenigstens ein Stück näher gekommen ? (Ich denke, dass ich in den letzten Tagen - Dank Eurer Hilfe - sehr viel dazu gelernt habe und langsam ein Verständnis dafür bekomme, welcher Analogie MQL4 folgt. - Somit auch an dieser Stelle ein herzliches "Danke" !!!) LG. piptrade |
|
|||
Für
CurrentTime_1 = StrToTime(TimeToStr(TimeCurrent(), TIME_DATE|TIME_MINUTES)); und CurrentTime_2 = StrToTime(TimeToStr(TimeCurrent(), TIME_DATE|TIME_MINUTES)); kann statt CurrentTime_1 und CurrentTime_2 gleich und nur TimeCurrent() genommen werden, weil diese Zeit bereits im Format datetime vorliegt. Es braucht auch keine zwei getrennte Variablen dafür. traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis. |
|
|||
Wenn ich die "Vereinfachungen" richtig verstanden habe, müßte der Code in der Endkonsequenz - SO - aussehen:
extern string TradeTime_1_Begin = "09:30"; extern string TradeTime_1_End = "11:30"; extern string TradeTime_2_Begin = "15:50"; extern string TradeTime_2_End = "20:30"; //+------------------------------------------ datetime Time_1_Begin, Time_1_End; datetime Time_2_Begin, Time_2_End; datetime CurrentTime; //+------------------------------------------ void init() { Time_1_Begin = StrToTime(TimeToStr(TimeCurrent(), TIME_DATE)+" "+TradeTime_1_Begin); Time_1_End = StrToTime(TimeToStr(TimeCurrent(), TIME_DATE)+" "+TradeTime_1_End); Time_2_Begin = StrToTime(TimeToStr(TimeCurrent(), TIME_DATE)+" "+TradeTime_2_Begin); Time_2_End = StrToTime(TimeToStr(TimeCurrent(), TIME_DATE)+" "+TradeTime_2_End); } //+------------------------------------------ bool TradingTime() { if (((Time_1_Begin < Time_1_End) && ((CurrentTime < Time_1_Begin) || (CurrentTime >= Time_1_End))) || ((Time_2_Begin < Time_2_End) && ((CurrentTime < Time_2_Begin) || (CurrentTime >= Time_2_End)))) return(false); return(true); } Soll das richtig sein ? Wenn "Ja", das wär` natürlich toll ! LG. |
|
|||
Oh, sorry,
ich habe da etwas vergessen : bool TradingTime() { CurrentTime = (TimeHour(TimeCurrent()) + TimeMinute(TimeCurrent())); if (((Time_1_Begin < Time_1_End) && ((CurrentTime ....... Ist das so besser ? LG. piptrade |
|
|||
Ne, nicht so richtig.
Beser ist auch beim Schreiben des Codes den Button mit dem # zu benutzen, um den Code schön zu strukturieren. Das liest sich besser. CurrentTime ist nicht nötig und ich habe mal ein paar Klammern gestrichen. Code:
extern string TradeTime_1_Begin = "09:30"; extern string TradeTime_1_End = "11:30"; extern string TradeTime_2_Begin = "15:50"; extern string TradeTime_2_End = "20:30"; //+------------------------------------------ datetime Time_1_Begin, Time_1_End; datetime Time_2_Begin, Time_2_End; //+------------------------------------------ void init() { Time_1_Begin = StrToTime(TimeToStr(TimeCurrent(), TIME_DATE)+" "+TradeTime_1_Begin); Time_1_End = StrToTime(TimeToStr(TimeCurrent(), TIME_DATE)+" "+TradeTime_1_End); Time_2_Begin = StrToTime(TimeToStr(TimeCurrent(), TIME_DATE)+" "+TradeTime_2_Begin); Time_2_End = StrToTime(TimeToStr(TimeCurrent(), TIME_DATE)+" "+TradeTime_2_End); } //+------------------------------------------ bool TradingTime() { if ((Time_1_Begin < Time_1_End && (TimeCurrent() < Time_1_Begin || TimeCurrent >= Time_1_End)) || (Time_2_Begin < Time_2_End && (TimeCurrent() < Time_2_Begin || TimeCurrent() >= Time_2_End))) return(false); return(true); }
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis. |
Lesezeichen |
Stichworte |
mql4, programmierung, programmierung metatrader, timezone, tradezone, tradingtimezone, zeitzone, zeitzonen |
|
|