Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools

Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools (http://www.expert-advisor.com/forum/index.php)
-   Programmierung MQL4 (http://www.expert-advisor.com/forum/forumdisplay.php?f=220)
-   -   eine 2. TimeZone einrichten (http://www.expert-advisor.com/forum/showthread.php?t=4896)

piptrade 20.04.16 18:53

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

piptrade 20.04.16 21:32

... 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 !

traderdoc 20.04.16 22:30

/*
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

Top-SecreT 21.04.16 08:24

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.

traderdoc 21.04.16 09:14

Zitat:

Zitat von Top-SecreT (Beitrag 34249)
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.

Na ja, das muß ich etwas korrigieren.
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

Top-SecreT 21.04.16 09:29

Ja richtig ich meinte ja auch direkter Größenvergleich so wie er es versucht.

piptrade 22.04.16 13:32

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

piptrade 22.04.16 13:45

Ergänzung: ... oder auch eine Umwandlung von "string" mittels "double" -Declaration?

Top-SecreT 22.04.16 14:01

wenn du uhrzeiten vergleichen willst würde ich die in einen int umwandeln und dann miteinander vergleichen.
double und int kannst du vergleichen

piptrade 23.04.16 11:30

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