|
Startseite | Registrieren | Hilfe | Benutzerliste | Kalender | Suchen | Heutige Beiträge | Alle Foren als gelesen markieren |
Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4. |
|
Themen-Optionen | Thema durchsuchen | Ansicht |
|
|||
eine 2. TimeZone einrichten
Hallo,
bin "blutiger" Anfänger und habe gerade meine erste ZeitZone für einen kleinen EA programmiert: /* extern string Start_TimeZone_1 = "08:30"; extern string End_TimeZone_1 = "13:00"; int CurrentTime; bool TradingTime() { CurrentTime = TimeHour(TimeCurrent()); if (Start_TimeZone_1 < End_TimeZone_1){ if ((CurrentTime < Start_TimeZone_1) || (CurrentTime >= End_TimeZone_1)) return(false); } return(true); } int start() { if (TradingTime() == false) return(0); //--- EA code } */ ... funktioniert soweit auch recht gut. Trotzdem gibt es Probleme bei der Erweiterung auf eine 2. TimeZone. Hat jemand eine Idee,- kann jemand helfen ? Vorab schon einmal ein liebes "Dankeschön". Grüße piptrade |
|
|||
... recht vielen Dank an alle user, die sich für diesen Beitrag interessierten.
Ich hab` nach einigem Hin und Her selbst eine Lösung gefunden ! DANKE ! |
|
|||
/*
extern string Start_TimeZone_1 = "08:30"; extern string End_TimeZone_1 = "13:00"; int CurrentTime; bool TradingTime() { CurrentTime = TimeHour(TimeCurrent()); //1. hier wird die Stunde als Integerzahl übergeben if (Start_TimeZone_1 < End_TimeZone_1){ //2. hier werden zwei string-Variablen verglichen!? if ((CurrentTime < Start_TimeZone_1) || (CurrentTime >= End_TimeZone_1)) return(false); //3. hier wird jeweils eine Intergerzahl mi einem String verglichen } return(true); } int start() { if (TradingTime() == false) return(0); //--- EA code } */ Dieser Code wird wegen Kommentar 2. und 3. nicht korrekt funktionieren. traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis. |
|
|||
Richtig. Seh ich auch so.
piptrade "und" "auch" welches der wörter ist größer? Man kann keine Strings vergleichen und auch kein String mit einer Zahl. |
|
|||
Zitat:
Man kann sehr wohl Strings miteinander vergleichen. Da kommt es darauf an, was man will. string A = "Montag"; string B = "Dienstag"; Beim Stringvergleich wäre nur ein ist gleich oder ist nicht gleich sinnvoll: if (A == B) ... if (A != B) ... oder jeweils als else-Anweisung, falls die Abfrage false ergibt. Der Vergleich eines Strings mit einer Zahl geht auch unter bestimmten Umständen. Wenn z.B. der String eine Zahl wäre: string C = "1234" und int D = 5678; dann muß eine Vereinheitlichung der Variablendeklaration erreicht werden: if ((int)C < D), dann kann man auch < oder > verwenden, weil der String als Zahl in eine Integerzahl umgewandelt wurde. Lägen Zahlen im Format 1234.56 vor, dann mittels (double)C den String umwandeln. Würde man jedoch die Interzahl in einen String umwandeln, dann wäre der Vergleich wieder nur sinnvoll, wie oben beschrieben: if (C == (string)D) ... traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis. |
|
|||
Ja richtig ich meinte ja auch direkter Größenvergleich so wie er es versucht.
|
|
|||
Danke, für Eure Unterstützung. Wenn ich die Kommentare richtig verstanden habe, dürfen Birnen nicht mit Äpfeln verglichen werden . D.h., dass ich eigentlich nur Integerzahlen für einen sinnvollen Vergleich heranziehen kann?
Wenn dem so ist, müßte im code "extern string" in "extern int" ("extern double" - wenn mit Dezimalstellen gearbeitet wird) geändert werden, so dass im Endresultat tatsächlich nur Integerzahlen gegenübergestellt werden. Wäre das so korrekt ? Ginge da ev. auch "input int" / "input double" ? Liebe Grüße piptrade |
|
|||
Ergänzung: ... oder auch eine Umwandlung von "string" mittels "double" -Declaration?
|
|
|||
wenn du uhrzeiten vergleichen willst würde ich die in einen int umwandeln und dann miteinander vergleichen.
double und int kannst du vergleichen |
|
|||
Habe mir Eure Hinweise sehr genau angesehen und, wie ich glaube, auch verstanden; - und für die "vollen Stunden" dürfte das keine Probleme bereiten. Insoweit erst einmal recht herzlichen Dank.
Will ich nun aber die "vollen Stunden" plus Minuten verarbeiten, komme ich nicht richtig weiter: extern int TradeTimeHour_1_Begin = 09; extern int TradeTimeMinute_1_Beginn = 30; extern int TradeTimeHour_1_End = 11; extern int TradeTimeMinute_1_End = 30; int Hour(); int Minute(); CurrentTime = TimeHour(TimeCurrent()) + TimeMinute(TimeCurrent()); bool TradingTime_1 = false; if (((Hour()>= TradeTimeHour_1_Begin) && (Minute()>= TradeTimeMinute_1_Beginn)) && ((Hour()< TradeTimeHour_1_End) && (Minute()< TradeTimeMinute_1_End))) returne(false); else TradingTime_1 = true; Ich könnte mir vorstellen, dass diese Variante ggf. sogar funktioniert. Allerdings ist das alles andere als "elegant". Gibt es da nicht eine Variante, die "sauberer" ist ? |
Lesezeichen |
Stichworte |
mql4, programmierung, programmierung metatrader, timezone, tradezone, tradingtimezone, zeitzone, zeitzonen |
Themen-Optionen | Thema durchsuchen |
Ansicht | |
|
|