Bibliothèque: Contrôle_Trade_Sessions

 

Contrôle_Trade_Sessions:

Bibliothèque pour le contrôle des sessions de trading. Au démarrage, elle compte l'heure des sessions de négociation pour les 7 jours de la semaine (le samedi et le dimanche, il peut y avoir des échanges de crypto-monnaies), jusqu'à 10 sessions par jour. Ensuite, dans OnTick(), vous pouvez effectuer des vérifications, et si un tick est arrivé en dehors de la session de trading, vous pouvez interrompre son traitement.

Contrôle_Trade_Sessions

Author: Aleksei Kuznetsov

 

Tout cela n'a aucun sens. Si un courtier renseigne la fiche technique d'un instrument d'une manière qui ne correspond pas aux cotations réelles, votre bibliothèque mentira tout simplement, tout comme le courtier.

Vous pouvez tester cet exemple sur Finam.

 
Alexey Viktorov #:

Tout cela n'a aucun sens. Si un courtier renseigne la fiche technique d'un instrument d'une manière qui ne correspond pas à l'évolution réelle des cotations, votre bibliothèque mentira tout aussi ouvertement que le courtier.

Vous pouvez tester cet exemple sur Finam.

On a identifié le coupable. Mais que faire ?

Je peux ajouter une option permettant d'importer les sessions par jour via les fichiers *sinput*.
 
Une excellente bibliothèque, merci ! Son principal atout, c'est la vitesse. C'est exactement ce qu'il faut pour un optimiseur.
 
Forester #:
On a déterminé qui était responsable. Mais que faire ?

Je peux ajouter une option permettant de saisir les sessions par jour via les fichiers sinput.

J'ai ajouté cette option. Voir la description et le code.

 
J'ai encore un peu accéléré le code. Auparavant, à chaque tick en dehors d'une session de trading, le code calculait l'heure et la comparait aux tableaux des sessions :
. Désormais, lors du changement de session, je calcule non seulement l'heure de fin de la session en cours, mais aussi l'heure de début de la session suivante. Au final, il ne reste plus qu'une seule vérification :
if(time < this.NextTradeStart ) { return false; }
 
Forester d'une session de trading, le code calculait l'heure et la comparait aux tableaux des sessions :
. Désormais, lors du changement de session, je calcule non seulement l'heure de fin de la session en cours, mais aussi l'heure de début de la session suivante. Au final, il ne reste plus qu'une seule vérification :

C’est l’approche la plus appropriée pour déterminer si l’on se trouve dans un intervalle donné. Par exemple, si la négociation doit avoir lieu de 12 h à 15 h, il convient d’utiliser une approche de type NextTime.

Parmi les codes tiers, je n’ai vu cela que chez vous.

 
 
Je n'ai pas lu le code en détail, mais il semble que l'implémentation actuelle parte du principe que la session doit se limiter strictement à une seule journée, ce qui n'est pas le cas lorsqu'il existe un décalage horaire important, c'est-à-dire, par exemple, lorsque les sessions européennes sont négociées par un courtier asiatique, ou inversement. Il arrive donc que l'heure « To » soit antérieure à « From » si l'on ne tient pas compte de la date dans la date-heure.
 
Stanislav Korotky #:
Les symboles personnalisés permettent de simuler n'importe quelle situation complexe liée aux sessions et de vérifier la bonne fonctionnement de la bibliothèque. Heureusement, la modification des sessions ne nécessite pas de réécrire les cotations.
 
Stanislav Korotky #:
Je n'ai pas lu le code en détail, mais il semble que l'implémentation actuelle parte du principe que la session doit se limiter strictement à une seule journée, ce qui n'est pas le cas lorsqu'il existe un décalage horaire important, c'est-à-dire, par exemple, lorsque les sessions européennes sont négociées par un courtier asiatique, ou inversement. Il arrive donc que l’heure « To » soit antérieure à « From » si l’on ne tient pas compte de la date dans la date-heure.
La comparaison se fait simplement en fonction de l'heure.
if(!TradeSession.isSessionTrade(TimeCurrent())){Print("Market closed. OnTick return");return;}
Au lieu de
TimeCurrent()
Vous pouvez en définir n'importe quelle, d'ailleurs.

Les horaires des sessions sont fournis par le courtier ou peuvent être définis manuellement.