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.:o 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 |
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 |
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 ? |
Alle Zeitangaben in WEZ +2. Es ist jetzt 07:29 Uhr. |
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.6.1
Powered by vBCMS® 2.7.0 ©2002 - 2024 vbdesigns.de
Copyright ©2009 - 2023 by Expert-Advisor.com - Das Metatrader Forum