Librerie: Controllo_Trade_Sessioni

 

Controllo_Trade_Sessioni:

Libreria per il controllo delle sessioni di trading. All'avvio conta l'orario delle sessioni di trading per tutti i 7 giorni della settimana (il sabato e la domenica possono essere negoziate criptovalute), fino a 10 sessioni al giorno. In OnTick() è possibile effettuare controlli e, se un tick è arrivato al di fuori della sessione di trading, è possibile interrompere l'ulteriore elaborazione.

Controllo_Trade_Sessioni

Author: Aleksei Kuznetsov

 

Sono tutte sciocchezze. Se il broker compila le specifiche dello strumento in modo non conforme alle quotazioni effettive, la vostra libreria mentirà spudoratamente proprio come il broker.

È possibile eseguire un esempio su Finam.

 
Alexey Viktorov #:

Sono tutte sciocchezze. Se un broker compila le specifiche di uno strumento in modo non corrispondente alle quotazioni effettive, la vostra libreria mentirà spudoratamente proprio come il broker stesso.

È possibile eseguire un esempio su Finam.

Abbiamo capito chi è il responsabile. Ma cosa fare?

Posso aggiungere un’opzione per l’importazione delle sessioni per giorno tramite sinput.
 
Una libreria fantastica, grazie! Il punto di forza principale è la velocità. Per un ottimizzatore è proprio quello che ci vuole.
 
Forester #:
Si è capito chi è il responsabile. E ora cosa si fa?

Posso aggiungere un’opzione per l’inserimento delle sessioni per giorno tramite i sinput.

Ho aggiunto questa opzione. Vedi la descrizione e il codice.

 
Ho ottimizzato ulteriormente il codice. Prima, ad ogni tick al di fuori della sessione di trading, venivano effettuati i calcoli dell'ora e il confronto con gli array delle sessioni,
ora, al cambio di sessione, calcolo non solo l'ora di fine della sessione corrente, ma anche l'ora di inizio della sessione successiva. Di conseguenza, anche in questo caso è rimasta una sola verifica:
if(time < this.NextTradeStart ) { return false; }
 
Forester della sessione di trading venivano effettuati i calcoli dell'ora e il confronto con gli array delle sessioni,
ora, al cambio di sessione, calcolo non solo l'ora di fine della sessione corrente, ma anche l'ora di inizio della sessione successiva. Di conseguenza, anche in questo caso è rimasto un solo controllo:

Questo è l’approccio più corretto per calcolare la caduta in un qualsiasi intervallo. Ad esempio, se la negoziazione deve avvenire dalle 12 alle 15, allora si dovrebbe utilizzare un approccio simile a NextTime.

Tra i codici di terze parti, ho visto una soluzione del genere solo nel suo caso.

 
 
Non ho letto con molta attenzione, ma sembra che l'attuale implementazione presupponga che la sessione debba rientrare rigorosamente nei limiti di un solo giorno, il che non è corretto in presenza di una differenza significativa tra i fusi orari, ovvero, ad esempio, se le sessioni europee vengono negoziate tramite un broker asiatico o viceversa. In altre parole, ci sono casi in cui l’ora «To» è precedente a «From», se si esclude la data dal datetime.
 
Stanislav Korotky #:
Con i simboli personalizzati è possibile simulare qualsiasi situazione complessa relativa alle sessioni e verificare la correttezza della libreria. Fortunatamente, la modifica delle sessioni non richiede la riscrittura delle quotazioni.
 
Stanislav Korotky #:
Non ho letto con molta attenzione, ma sembra che l'attuale implementazione presupponga che la sessione debba rientrare rigorosamente nei limiti di un solo giorno, il che non è corretto in presenza di una differenza significativa tra i fusi orari, ovvero, ad esempio, se le sessioni europee vengono negoziate da un broker asiatico o viceversa. In altre parole, ci sono casi in cui l’ora “To” è precedente a “From”, se si esclude la data dal datetime.
Si effettua semplicemente un confronto in base all’ora.
if(!TradeSession.isSessionTrade(TimeCurrent())){Print("Market closed. OnTick return");return;}
Invece di
TimeCurrent()
È possibile impostare qualsiasi valore, tra l’altro.

L’orario delle sessioni viene prelevato dal broker oppure può essere impostato manualmente.