Positionen Schließen, nachdme Markt wieder öffnet

 
Hallo zusammen,

ich nage an dem Problem, dass ein Asset zwischen 23:59 und 2:30 nicht handelbar ist. Ich möchte dem EA mitteilen, dass dieser weder versuchen soll eine position zu eröffnen, noch eine zu schließen. Hierbei möchte ich die Abfrage wie folgt gestalten:



datetime    marketOpen = StringToTime("23:59");
datetime    marketClose = StringToTime("02:30");
datetime    latestCandle = iTime(CurrentSymbol,PERIOD_CURRENT,0);

if(marketClose <= latestCandle && latestCandle < marketOpen)
   {
   //weitere Funktionsabläufe
   }
Angenommen, es soll ein Trade am 20.07.2021 01:30 geschlossen werden, dann wandelt die StringToTime() Funktion meine beiden Strings allerdings in das selbe Datum um, nämlich:

marketClose = 20.07.2021 23:59
marketOpen = 20.07.2021 02:30

Der Fehler ist, dass die marketClose variable nicht mit dem 19.07.2021 belegt wird und ich somit nicht in das if-statement gelange..

Hat jemand hierbei eine Lösung oder villeicht sogar einen eleganteren Ansatz?
Danke an euch!
Dokumentation zu MQL5: Datenverarbeitung / StringToTime
Dokumentation zu MQL5: Datenverarbeitung / StringToTime
  • www.mql5.com
StringToTime - Datenverarbeitung - Nachschlagewerk MQL5 - Nachschlagewerk über die Sprache des algothitmischen/automatischen Handels für MetaTrader 5
 
Claudius Marius Walter:
Hallo zusammen,

ich nage an dem Problem, dass ein Asset zwischen 23:59 und 2:30 nicht handelbar ist. Ich möchte dem EA mitteilen, dass dieser weder versuchen soll eine position zu eröffnen, noch eine zu schließen. Hierbei möchte ich die Abfrage wie folgt gestalten:



Angenommen, es soll ein Trade am 20.07.2021 01:30 geschlossen werden, dann wandelt die StringToTime() Funktion meine beiden Strings allerdings in das selbe Datum um, nämlich:

marketClose = 20.07.2021 23:59
marketOpen = 20.07.2021 02:30

Der Fehler ist, dass die marketClose variable nicht mit dem 19.07.2021 belegt wird und ich somit nicht in das if-statement gelange..

Hat jemand hierbei eine Lösung oder villeicht sogar einen eleganteren Ansatz?
Danke an euch!

Wenn er eh nicht handelbar ist brauchst gar nix zu tun, da kommen keine ticks, daher kann der ea auch nix machen zu der zeit

 
Das problem ist, dass der Broker zu bestimmten handelszeiten einfach das handeln verbietet, somit laufen trotzdem noch Ticks rein und der EA  wird daran gehindert zu handeln..
 
Sind denn bei den Spezifikationen des Symbols keine Handelszeiten eingetragen? Frage den Broker warum nicht, er könnte und sollte das machen, damit das programmatisch abgerufen werden kann.
 
Carl Schreiber:
Sind denn bei den Spezifikationen des Symbols keine Handelszeiten eingetragen? Frage den Broker warum nicht, er könnte und sollte das machen, damit das programmatisch abgerufen werden kann.
Doch doch, die sind in den spezifikationen. Weißt du, welche Funktion dazu in der Lage ist, diese in den Spezifikationen aufzurufen?


Edit: bin gerade auf diesen Beitrag gestoßen. Mir scheint, da wäre was brauchbares dabei

https://www.mql5.com/de/forum/329636
Kann ich die Handelszeiten eines Symbols auslesen?
Kann ich die Handelszeiten eines Symbols auslesen?
  • 2020.01.02
  • www.mql5.com
Im Prinzip geht es um die Öffnungszeiten des Marktes, die imho mit dem Symbol verbunden sein müsste. Kann ich die blau markierten Werte auslesen...
 
Claudius Marius Walter:
Doch doch, die sind in den spezifikationen. Weißt du, welche Funktion dazu in der Lage ist, diese in den Spezifikationen aufzurufen?


Edit: bin gerade auf diesen Beitrag gestoßen. Mir scheint, da wäre was brauchbares dabei

https://www.mql5.com/de/forum/329636

Hier ist eine Liste aller Funktionen:

https://www.mql5.com/de/docs/function_indices.

Wenn Du nach Session suchst findest Du sie.

Dokumentation zu MQL5: MQL5 Funktionenliste
Dokumentation zu MQL5: MQL5 Funktionenliste
  • www.mql5.com
MQL5 Funktionenliste - Nachschlagewerk MQL5 - Nachschlagewerk über die Sprache des algothitmischen/automatischen Handels für MetaTrader 5
 
Dooferweise spuckt mir die SymbolInfoSessionTrade() Fkt. zwar die HAndelszeiten aus, allerdings mit dem falschen Datum. Es wird das default Datum 1970.01.01 23:59 ausgegeben...

gibt es eine möglichkeit, das Datum nachträglich anzupassen?
 
Claudius Marius Walter:
Dooferweise spuckt mir die SymbolInfoSessionTrade() Fkt. zwar die HAndelszeiten aus, allerdings mit dem falschen Datum. Es wird das default Datum 1970.01.01 23:59 ausgegeben...

gibt es eine möglichkeit, das Datum nachträglich anzupassen?
  1. Frag den Broker, ob er nicht bessere und valide Daten zur Verfügung stellt.
  2. Als Workaround: Addiere die Eröffnungszeit des aktuellen Tagesbalkens zur Uhrzeit - geht das?
 
Carl Schreiber:
  1. Frag den Broker, ob er nicht bessere und valide Daten zur Verfügung stellt.
  2. Als Workaround: Addiere die Eröffnungszeit des aktuellen Tagesbalkens zur Uhrzeit - geht das?

Funktioniert nicht. Ich habe nun einfach einen allgemeinen Trade Closure eingerichtet, der nach markteröffnung einfach alle positionen schließt, welche während der geschlossenen session anstanden

 
Das liegt vermutlich daran, das der broker nicht mehr daten eingibt.
 
Claudius Marius Walter:
Dooferweise spuckt mir die SymbolInfoSessionTrade() Fkt. zwar die HAndelszeiten aus, allerdings mit dem falschen Datum. Es wird das default Datum 1970.01.01 23:59 ausgegeben...

gibt es eine möglichkeit, das Datum nachträglich anzupassen?

Es gibt auch kein Datum. Das gibts du ja durch den ENUM_DAY_OF_WEEK vor.

Die Funktion gibt nur Zeiten zurück .

SymbolInfoSessionTrade

from

[out]   Anfang der Handelssitzung in Sekunden von 00 Stunden 00 Minuten, im erhaltenen Wert muss das Datum ignoriert werden.

to

[out]  Ende der Handelssitzung in Sekunden von 00 Stunden 00 Minuten, im erhaltenen Wert muss das Datum ignoriert werden.