Bibliotheken: Kontrolle_Handel_Sitzungen

 

Kontrolle_Handel_Sitzungen:

Bibliothek für die Kontrolle von Handelssitzungen. Beim Start zählt sie die Zeit der Handelssitzungen für alle 7 Tage der Woche (am Samstag und Sonntag kann mit Kryptowährungen gehandelt werden), bis zu 10 Sitzungen pro Tag. Dann können Sie in OnTick() Überprüfungen durchführen, und wenn ein Tick außerhalb der Handelssitzung eintrifft, können Sie die weitere Verarbeitung des Ticks beenden.

Kontrolle_Handel_Sitzungen

Author: Aleksei Kuznetsov

 

Das ist alles Unsinn. Wenn ein Broker die Spezifikation eines Finanzinstruments nicht so ausfüllt, wie die Kurse tatsächlich verlaufen, dann lügt Ihre Bibliothek genauso offen wie der Broker.

Ein Beispiel dazu können Sie auf Finam ausführen.

 
Alexey Viktorov #:

Das ist alles Unsinn. Wenn ein Broker die Spezifikation eines Finanzinstruments nicht so ausfüllt, wie die Kurse tatsächlich verlaufen, dann lügt Ihre Bibliothek genauso offen wie der Broker.

Ein Beispiel dazu können Sie auf Finam ausführen.

Wir haben herausgefunden, wer schuld ist. Aber was tun?

Ich kann eine Option hinzufügen, um Sitzungen tagesweise über sinput-Dateien einzulesen.
 
Eine tolle Bibliothek, vielen Dank! Das Besondere daran ist die Geschwindigkeit. Für einen Optimierer ist das genau das Richtige.
 
Forester #:
Wer schuld ist, haben wir herausgefunden. Aber was tun?

Ich könnte eine Option hinzufügen, um Sitzungen nach Tagen über „sinput“ einzugeben.

Ich habe diese Option hinzugefügt. Siehe Beschreibung und Code.

 
Ich habe den Code noch ein wenig beschleunigt. Früher wurden bei jedem Tick außerhalb der Handelssitzung Zeitberechnungen durchgeführt und diese mit den Sitzungs-Arrays verglichen:
. Jetzt berechne ich beim Sitzungswechsel neben der Endzeit der aktuellen Sitzung auch die Startzeit der nächsten Sitzung. Dadurch ist es ebenfalls bei nur einer Überprüfung geblieben:
if(time < this.NextTradeStart ) { return false; }
 
Forester der Handelssitzung die Zeit berechnet und mit den Sitzungsarrays verglichen:
. Jetzt berechne ich beim Sitzungswechsel neben der Endzeit der aktuellen Sitzung auch die Startzeit der nächsten Sitzung. Dadurch ist es ebenfalls auf nur eine Überprüfung gekommen:

Dies ist der korrekteste Ansatz für die Berechnung der Zugehörigkeit zu einem beliebigen Intervall. Wenn der Handel beispielsweise von 12 bis 15 Uhr stattfinden soll, sollte ein ähnlicher NextTime-Ansatz verwendet werden.

Von den Codes anderer Entwickler habe ich so etwas nur bei Ihnen gesehen.

 
 
Ich habe mich nicht allzu eingehend damit befasst, aber anscheinend geht die aktuelle Umsetzung davon aus, dass eine Sitzung streng innerhalb eines Tages liegen muss, was bei erheblichen Zeitunterschieden zwischen den Zeitzonen nicht der Fall ist, das heißt, wenn beispielsweise europäische Handelssitzungen über einen asiatischen Broker abgewickelt werden oder umgekehrt. Es gibt also Fälle, in denen die „To“-Zeit kleiner ist als die „From“-Zeit, wenn man das Datum aus dem „datetime“-Wert herausrechnet.
 
Stanislav Korotky #:
Mit benutzerdefinierten Symbolen lassen sich beliebige knifflige Situationen mit Sessions simulieren und die Korrektheit der Bibliothek überprüfen. Glücklicherweise erfordert die Änderung von Sessions kein erneutes Schreiben der Kursdaten.
 
Stanislav Korotky #:
Ich habe mich nicht allzu genau damit befasst, aber anscheinend geht die aktuelle Implementierung davon aus, dass eine Sitzung streng innerhalb eines Tages liegen muss, was bei einem erheblichen Zeitunterschied zwischen den Zeitzonen nicht der Fall ist, das heißt, wenn beispielsweise europäische Handelssitzungen über einen asiatischen Broker abgewickelt werden oder umgekehrt. Es gibt also Fälle, in denen „To“ kleiner ist als „From“, wenn man das Datum aus dem Datetime-Wert herausrechnet.
Es findet lediglich ein zeitlicher Vergleich statt.
if(!TradeSession.isSessionTrade(TimeCurrent())){Print("Market closed. OnTick return");return;}
Anstelle von
TimeCurrent()
können Sie übrigens beliebige Werte festlegen.

Die Handelszeiten werden vom Broker übernommen oder können manuell eingestellt werden.