Die Warnmeldung sollte theoretisch irrelevant sein, stört aber natürlich das ästhetische Empfinden. Ich für meinen Teil bin zumindest immer erst zufrieden, wenn keine Warnmeldungen mehr auftauchen.
Die Funktion "DayOfWeek()" gibt Dir ja eine integer Variable zurück. Wenn Du hiermit deklarierst ENUM_DAY_OF_WEEK Day = DayOfWeek(); dann machst Du eine Enumeration zur Integer, was zwar funktionieren sollte, da die Enumerationselemente ja mit ganzzahligen Werten hinterlegt sind, doch es stört den Compiler. Wenn Du schreibst ENUM_DAY_OF_WEEK Day = (ENUM_DAY_OF_WEEK) DayOfWeek(); dann sieht das als Code zwar doof aus, erledigt damit aber die Warnung, weil die integer dann nicht mehr als Wert der Enumeration impliziert wird, sondern explizit zugeordnet. Macht Sinn?
Warum immer Montag ist, weiß ich nicht. Den Grund entdecke ich in Deinen Code jedenfalls nicht.
Andere Frage: was ist die Intention, für die Du den Code brauchst? Der wahrscheinliche Anwendungsfall wäre ja, das Sessionende zu kennen, damit man nicht versehentlich über das Wochenende oder ggf. über Nacht Positionen hält wenn das nicht will. Ist das der Grund? Session-Anfang ist ja irrelevant, weil dann ja eh keine Ticks kommen.
Ich habe mir dafür einfach eine Funktion gemacht, die mir für ein Symbol die restlichen Sekunden bis zum aktuellen Session-Ende ausgibt. Vielleicht hilft Dir das:
//+------------------------------------------------------------------+ //| get seconds until end of current trading session | //+------------------------------------------------------------------+ int SessionEnd(string symbolstring) { // define variables uint session_index=0; datetime dt_server,dt_start,dt_end; MqlDateTime server_struct,start_struct,end_struct; int seconds_until_session_end=0; // get seconds since midnight (server time) dt_server=TimeTradeServer(); TimeToStruct(dt_server,server_struct); ENUM_DAY_OF_WEEK day_of_week=(ENUM_DAY_OF_WEEK)server_struct.day_of_week; int server_seconds=server_struct.hour*3600+server_struct.min*60+server_struct.sec; // cycle through existing sessions (while-loop breaks if session_index is invalid) while (SymbolInfoSessionTrade(symbolstring,day_of_week,session_index,dt_start,dt_end)) { // get seconds since midnight (server time) for start and end of the session TimeToStruct(dt_start,start_struct);int start_seconds=start_struct.hour*3600+start_struct.min*60+start_struct.sec; if (start_struct.day==2){start_seconds+=86400;} TimeToStruct(dt_end,end_struct);int end_seconds=end_struct.hour*3600+end_struct.min*60+end_struct.sec; if (end_struct.day==2){end_seconds+=86400;} // check if the current server time is in between start and end of the designated session if (server_seconds>start_seconds && server_seconds<end_seconds){seconds_until_session_end=end_seconds-server_seconds;} session_index++; } return seconds_until_session_end; }P.S.: für die Anwendung "wann welche Futures offen haben" sollte das genauso funktionieren, da als Parameter ja jedes Symbol angegeben werden kann.
amando:
und in der Anzeige ignoriert er das morgen
für ihn ist jeder Tag Montag.
Den Fehler findet man selber mit dem Debugger!
Die Enum-Konversion könntest Du so lösen:
- Deine Funktion DayOfWeek() gibt ein enum zurück (kein int oder
- Du verwendest einen cast: ENUM_DAY_OF_WEEK day = (ENUM_DAY_OF_WEEK)DayOfWeek()
Den Fehler findet man selber mit dem Debugger!
Die Enum-Konversion könntest Du so lösen:
- Deine Funktion DayOfWeek() gibt ein enum zurück (kein int oder
- Du verwendest einen cast: ENUM_DAY_OF_WEEK day = (ENUM_DAY_OF_WEEK)DayOfWeek()
@Carl, aber bei der ENUM bekomme ich ja zahlenwerte raus, oder wird die als Klartext zurückgegeben?
@Carl, aber bei der ENUM bekomme ich ja zahlenwerte raus, oder wird die als Klartext zurückgegeben?
EnumToString(day) bringts!
in dem man ganz simple mit Ctrl+F und "enum" mit dem Browser auf dieser Seite sucht ...
- www.mql5.com
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Hallo,
mal eine kurze Frage zu datetime, versuche ja gerade, mir die Handelszeiten als Comment einzublenden, merke mir ja nicht wann welche Futures offen haben
dazu mal hier das script
funktioniert fast, weil
beim kompelieren kommt folgender Fehler
und in der Anzeige ignoriert er das morgen
für ihn ist jeder Tag Montag.
ich bin mir sicher, das kann man besser lösen ;-)
hat wer eine Idee?
irgendwann werd ich das Datetime auch noch verstehen, es wird ja immer besser mit eurer hilfe ;-)
danke
amando