Hier wird „Sec“ auf einen Zeitraum von 24 Stunden bezogen, und es gibt keine „from-to“-Grenze. Wenn beispielsweise die Uhrzeit 3 Uhr morgens abgefragt wird und die Handelssitzung von 21 Uhr abends bis 8 Uhr morgens läuft, müsste „true“ zurückgegeben werden, aber die Bedingung wird nicht erfüllt und es wird „false“ zurückgegeben.
Ich habe vom internen Code gesprochen, nicht vom Aufruf und vom Eingabeparameter.
Hier wird „Sec“ auf den Tagesbereich normiert, und es gibt keine „from-to“-Grenze. Wenn beispielsweise die Uhrzeit 3 Uhr morgens abgefragt wird und die Handelssitzung von 21 Uhr abends bis 8 Uhr morgens läuft, müsste „true“ zurückgegeben werden, aber die Bedingung wird nicht erfüllt und es wird „false“ zurückgegeben.
Dies lässt sich mit zwei Sitzungen festlegen: 21–24 und 0–8
Ist das eine theoretische Frage oder gibt es bei den Handelszentren tatsächlich solche „from-to“-Bereiche?
Dies lässt sich in zwei Durchgängen festlegen: 21–24 und 0–8
Ist das nur eine theoretische Frage oder gibt es bei DC tatsächlich solche „from-to“-Bereiche?
Was bedeutet „in zwei Sitzungen festlegen“? – Diese werden doch aus den MT5-Einstellungen übernommen und nicht von uns festgelegt. Und in MT5 gilt: eine Sitzung = ein Eintrag. Bei einigen Brokern (aufgrund der geografischen Entfernung zum Markt) kann dies der Fall sein. In diesem Fall gibt „SymbolInfoSessionTrade“ die „to“-Zeit unter Berücksichtigung zusätzlicher Tage zurück (zumindest war das früher so – ich habe es gerade nicht überprüft), d. h., die Bedingung „from < to“ wurde immer eingehalten.
Stanislav Korotky #: Was bedeutet es, zwei Sitzungen festzulegen?
In sunput-Dateien besteht die Möglichkeit, die Sitzungen für jeden Tag individuell festzulegen. Auf dieser Grundlage wird dann gearbeitet. Wird aktiviert: #define LoadSessionFromInputs // Sitzungen aus den Eingaben lesen
Stanislav Korotky #: In diesem Fall gibt SymbolInfoSessionTrade die Zeit „to“ unter Berücksichtigung des zusätzlichen Tages zurück (zumindest war das früher so – ich habe es gerade nicht überprüft), d. h., die Bedingung„from < to“ wurde immer eingehalten.
Also 20:00 – 32:00?
Wenn es ein funktionierendes Beispiel vom Handelszentrum gibt, an dem man das testen kann, lässt sich das Beispiel entsprechend anpassen und überprüfen. Derzeit gibt es eine einfache Lösung: Die Sitzung selbst um Mitternacht in zwei Teile zu unterteilen. Dabei kann man angeben, an welchem Tag dies geschehen soll – zum Beispiel am Samstag bis 8:00 Uhr (der Rest vom Freitag) oder am Sonntag ab 20:00 Uhr (Beginn des Montags).
Im Editor für benutzerdefinierte Symbole habe ich Folgendes getan:
Ich habe Sitzungen mit einem Übergang am nächsten Tag für die im Screenshot gezeigten Varianten programmiert, d. h. von 20:00 bis 08:00 Uhr. Ich habe die Funktion geändert:
for (int i = 0; i < this.TradeSessions[DayOfWeek]; i++){//Durchlaufen der Sitzungen an diesem Wochentagif(( Sec >= this.TradeTimeFrom[i][DayOfWeek] )){ //Die Sitzung hat begonnen – das Ende suchenif(Sec < this.TradeTimeTo[i][DayOfWeek]){//Es ist noch nicht vorbei, merk dir dasthis.NextTradeStop = (datetime)(day * 86400) + this.TradeTimeTo[i][DayOfWeek]; //Endzeit der aktuellen Sitzung; bis dahin muss die nächste Sitzung nicht überprüft werden = (Beginn dieses Tages + Sitzungsdauer) //Print("new Stop ", this.NextTradeStop);returntrue;
}elseif (this.TradeTimeTo[i][DayOfWeek] < this.TradeTimeFrom[i][DayOfWeek]){// Ende < Beginn, zum Beispiel 20:00–04:00 – Übergang zum nächsten Tag + 1 Tag zur Uhrzeitthis.NextTradeStop = (datetime)((day+1) * 86400) + this.TradeTimeTo[i][DayOfWeek]; //Endzeit der aktuellen Sitzung; bis dahin muss die nächste Sitzung nicht überprüft werden = (Beginn dieses Tages + Sitzungsdauer) //Print("new Stop ", this.NextTradeStop);returntrue;
}
}
}
Der hinzugefügte Code prüft, ob das Ende vor dem Beginn der Sitzung liegt, und fügt dann einfach einen Tag zur Endzeit hinzu.
Zweite Sitzung, wie üblich an einem Tag: 30.06.2020 00:15:29 30.06.2020 00:15:29 30.06.2020 00:16:01 2020.30.06.2020 00:16:01 30.06.2020 00:16:09 30.06.2020 00:16:09
Die erste Sitzung findet in einer Woche statt: 06.07.2020 23:55:01 06.07.2020 23:55:01 06.06.07.2020 23:55:09 06.07.2020 23:55:09
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Erlauben Sie die Verwendung von Cookies, um sich auf der Website MQL5.com anzumelden.
Bitte aktivieren Sie die notwendige Einstellung in Ihrem Browser, da Sie sich sonst nicht einloggen können.
Sie sind angemeldet. Die Zwei-Faktor-Authentifizierung wurde deaktiviert. Richten Sie sie erneut ein und scannen Sie einen neuen QR-Code oder fahren Sie mit deaktivierter Zwei-Faktor-Authentifizierung fort.
Es wird einfach ein zeitlicher Vergleich durchgeführt.
Anstelle von … können Sie übrigens einen beliebigen Wert festlegen.
Die Sitzungsdauer wird vom Broker übernommen oder kann manuell festgelegt werden.
Ich habe vom internen Code gesprochen, nicht vom Aufruf und dem Eingabeparameter.
Hier wird „Sec“ auf einen Zeitraum von 24 Stunden bezogen, und es gibt keine „from-to“-Grenze. Wenn beispielsweise die Uhrzeit 3 Uhr morgens abgefragt wird und die Handelssitzung von 21 Uhr abends bis 8 Uhr morgens läuft, müsste „true“ zurückgegeben werden, aber die Bedingung wird nicht erfüllt und es wird „false“ zurückgegeben.
Ich habe vom internen Code gesprochen, nicht vom Aufruf und vom Eingabeparameter.
Hier wird „Sec“ auf den Tagesbereich normiert, und es gibt keine „from-to“-Grenze. Wenn beispielsweise die Uhrzeit 3 Uhr morgens abgefragt wird und die Handelssitzung von 21 Uhr abends bis 8 Uhr morgens läuft, müsste „true“ zurückgegeben werden, aber die Bedingung wird nicht erfüllt und es wird „false“ zurückgegeben.
Dies lässt sich mit zwei Sitzungen festlegen:
21–24 und 0–8
Ist das eine theoretische Frage oder gibt es bei den Handelszentren tatsächlich solche „from-to“-Bereiche?
Dies lässt sich in zwei Durchgängen festlegen:
21–24 und 0–8
Ist das nur eine theoretische Frage oder gibt es bei DC tatsächlich solche „from-to“-Bereiche?
Was bedeutet es, zwei Sitzungen festzulegen?
In sunput-Dateien besteht die Möglichkeit, die Sitzungen für jeden Tag individuell festzulegen. Auf dieser Grundlage wird dann gearbeitet.
Wird aktiviert:
#define LoadSessionFromInputs // Sitzungen aus den Eingaben lesen
In diesem Fall gibt SymbolInfoSessionTrade die Zeit „to“ unter Berücksichtigung des zusätzlichen Tages zurück (zumindest war das früher so – ich habe es gerade nicht überprüft), d. h., die Bedingung„from < to“ wurde immer eingehalten.
Also 20:00 – 32:00?
Wenn es ein funktionierendes Beispiel vom Handelszentrum gibt, an dem man das testen kann, lässt sich das Beispiel entsprechend anpassen und überprüfen.
Derzeit gibt es eine einfache Lösung: Die Sitzung selbst um Mitternacht in zwei Teile zu unterteilen. Dabei kann man angeben, an welchem Tag dies geschehen soll – zum Beispiel am Samstag bis 8:00 Uhr (der Rest vom Freitag) oder am Sonntag ab 20:00 Uhr (Beginn des Montags).
Das heißt also von 20:00 bis 32:00 Uhr?
Ja. Es gibt kein fertiges Rechenzentrum mit einem solchen Server in Aussicht. Man muss irgendwo in Neuseeland danach suchen.
Mit dem Editor für benutzerdefinierte Symbole habe ich Folgendes gemacht:
Im Editor für benutzerdefinierte Symbole habe ich Folgendes getan:
Ich habe die Funktion geändert:
Der hinzugefügte Code prüft, ob das Ende vor dem Beginn der Sitzung liegt, und fügt dann einfach einen Tag zur Endzeit hinzu.
Ich habe dies mit folgenden Sitzungen getestet:
Tag: 1 Handelssitzungen: 1: 23:55–00:05
Tag: 2 Handelssitzungen: 1: 00:15–00:17
Erste Sitzung mit Übertrag auf den nächsten Tag:
29.06.2020 23:55:03 29.06.2020 23:55:03
29.29.06.2020 23:55:09 29.06.2020 23:55:09
29.29.06.2020 23:56:39 29.06.2020 23:56:39
2020.29.06.2020 23:57:01 29.06.2020 23:57:01
29.06.2020 23:59:59 29.29.06.2020 23:59:59
30.06.2020 00:00:00 30.06.2020 00:00:00
30.30.06.2020 00:00:08 30.06.2020 00:00:08
30.30.06.2020 00:01:52 30.06.2020 00:01:52
30.06.2020 00:02:02 30.06.202030.06.2020 00:02:02
30.06.2020 00:02:30 30.06.2020 00:02:30
30.30.06.2020 00:03:25 30.06.2020 00:03:25
30.30.06.2020 00:03:31 30.06.2020 00:03:31
Zweite Sitzung, wie üblich an einem Tag:
30.06.2020 00:15:29 30.06.2020 00:15:29
30.06.2020 00:16:01 2020.30.06.2020 00:16:01
30.06.2020 00:16:09 30.06.2020 00:16:09
Die erste Sitzung findet in einer Woche statt:
06.07.2020 23:55:01 06.07.2020 23:55:01
06.06.07.2020 23:55:09 06.07.2020 23:55:09