Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools
Zurück   Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools > Metatrader 4 > Programmierung MQL4

Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4.


Portalsuche


Werbung

Login
Benutzername:
Kennwort:


Statistik
Themen: 3823
Beiträge: 36908
Benutzer: 6.071
Aktive Benutzer: 494
Links: 80
Wir begrüßen unseren neuesten Benutzer: Roerich
Mit 483 Benutzern waren die meisten Benutzer gleichzeitig online (21.04.16 um 17:12).
Neue Benutzer:
vor 13 Stunden
- Roerich
vor 13 Stunden
- John_Liver...
vor 13 Stunden
- harry1001
vor einem Tag
- supadog
vor 2 Tagen
- POCJonah7

Onlineuser
'Wer ist online' anzeigen Benutzer: 1
Gäste: 42
Gesamt: 43
Team: 0
Team:  
Benutzer:  bobo
Freunde anzeigen

Empfehlungen

Werbung

Like Tree2Likes
Thema geschlossen
 
Themen-Optionen Thema durchsuchen Ansicht
  #11 (permalink)  
Alt 24.04.16
Mitglied
 
Registriert seit: Sep 2012
Beiträge: 116
piptrade befindet sich auf einem aufstrebenden Ast
Standard

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
  #12 (permalink)  
Alt 24.04.16
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 1.873
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

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.
  #13 (permalink)  
Alt 24.04.16
Mitglied
 
Registriert seit: Sep 2012
Beiträge: 116
piptrade befindet sich auf einem aufstrebenden Ast
Standard

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
  #14 (permalink)  
Alt 25.04.16
Mitglied
 
Registriert seit: Sep 2012
Beiträge: 116
piptrade befindet sich auf einem aufstrebenden Ast
Standard

"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
  #15 (permalink)  
Alt 25.04.16
Mitglied
 
Registriert seit: Apr 2016
Beiträge: 45
Top-SecreT befindet sich auf einem aufstrebenden Ast
Standard

Warum hast du nach bool TradingTime() 2 Klammern? {{

Du vergleichst wieder Strings miteinander. So wird es nicht klappen.
  #16 (permalink)  
Alt 25.04.16
Mitglied
 
Registriert seit: Sep 2012
Beiträge: 116
piptrade befindet sich auf einem aufstrebenden Ast
Standard

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
  #17 (permalink)  
Alt 25.04.16
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 1.873
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

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.
  #18 (permalink)  
Alt 25.04.16
Mitglied
 
Registriert seit: Sep 2012
Beiträge: 116
piptrade befindet sich auf einem aufstrebenden Ast
Standard

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.
  #19 (permalink)  
Alt 25.04.16
Mitglied
 
Registriert seit: Sep 2012
Beiträge: 116
piptrade befindet sich auf einem aufstrebenden Ast
Standard

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
  #20 (permalink)  
Alt 25.04.16
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 1.873
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

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);
}
traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
Thema geschlossen

Lesezeichen

Stichworte
mql4, programmierung, programmierung metatrader, timezone, tradezone, tradingtimezone, zeitzone, zeitzonen


Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are aus
Pingbacks are aus
Refbacks are aus




Alle Zeitangaben in WEZ +1. Es ist jetzt 04:45 Uhr.



Der Wavesnode - Spam Firewall
-----------------------------------------------------------------------------------------------------------------------------
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Powered by vBCMS® 2.7.0 ©2002 - 2017 vbdesigns.de
SEO by vBSEO 3.6.1
Copyright ©2009 - 2017 by Expert-Advisor.com - Das Metatrader Forum
MetaTrader bzw. MetaTrader 4 und MetaTrader 5 sind eingetragene Marken der MetaQuotes Software Corp.
-----------------------------------------------------------------------------------------------------------------------------