Librerías: Control_Trade_Sessions

 

Control_Trade_Sessions:

Biblioteca para el control de las sesiones de negociación. Al inicio cuenta el tiempo de las sesiones de negociación para los 7 días de la semana (los sábados y domingos puede haber negociación de criptomonedas), hasta 10 sesiones por día. Luego en OnTick() puede hacer chequeos, y si un tick llegó fuera de la sesión de negociación, puede salir de su procesamiento.

Control_Trade_Sessions

Author: Aleksei Kuznetsov

 

Todo eso son tonterías. Si el bróker rellena la ficha técnica del instrumento de forma que no se ajuste a cómo se mueven realmente las cotizaciones, tu biblioteca mentirá descaradamente, al igual que el bróker.

Puedes ver un ejemplo en Finam.

 
Alexey Viktorov #:

Todo eso son tonterías. Si el corredor de bolsa rellena la ficha técnica del instrumento de forma que no se ajuste a cómo se mueven realmente las cotizaciones, tu biblioteca mentirá descaradamente, al igual que el corredor de bolsa.

Puedes probarlo en Finame.

Ya hemos averiguado quién tiene la culpa. ¿Y qué se puede hacer?

Puedo añadir una opción para introducir sesiones por días mediante sinput.
 
¡Una biblioteca estupenda, gracias! Lo mejor es la velocidad. Para un optimizador, es lo ideal.
 
Forester #:
Ya se ha averiguado quién tiene la culpa. ¿Y ahora qué?

Puedo añadir una opción para introducir sesiones por días mediante «sinput».

He añadido esa opción. Consulta la descripción y el código.

 
He optimizado un poco más el código. Antes, en cada tick fuera de la sesión de negociación, se calculaba la hora y se comparaba con los matrices de sesiones,
; ahora, al cambiar de sesión, calculo, además de la hora de finalización de la sesión actual, la hora de inicio de la siguiente sesión. Como resultado, también se ha reducido a una sola comprobación:
if(time < this.NextTradeStart ) { return false; }
 
Forester la sesión de negociación, se realizaban cálculos de la hora y se comparaba con los matrices de sesiones,
; ahora, al cambiar de sesión, calculo, además de la hora de finalización de la sesión actual, la hora de inicio de la siguiente sesión. Como resultado, también se ha reducido a una sola comprobación:

Este es el enfoque más adecuado para calcular si se entra en cualquier intervalo. Por ejemplo, si la negociación debe realizarse de las 12 a las 15 horas, debe utilizarse un enfoque similar al de NextTime.

De entre los códigos de terceros, solo lo he visto en el suyo.

 
 
No lo he leído con mucho detenimiento, pero parece que la implementación actual supone que la sesión debe estar estrictamente dentro de un mismo día, lo cual no es así cuando hay una diferencia significativa entre husos horarios; es decir, por ejemplo, si las sesiones europeas se negocian a través de un bróker asiático o al revés. Es decir, hay casos en los que la hora «To» es anterior a la «From», si se omite la fecha del formato «datetime».
 
Stanislav Korotky #:
En los símbolos personalizados se puede simular cualquier situación complicada relacionada con las sesiones y comprobar que la biblioteca funciona correctamente. Por suerte, modificar las sesiones no requiere volver a cargar las cotizaciones.
 
Stanislav Korotky #:
No lo he leído con mucho detenimiento, pero parece que la implementación actual da por hecho que la sesión debe estar estrictamente dentro de un mismo día, lo cual no es así cuando hay una diferencia significativa entre husos horarios; es decir, por ejemplo, si las sesiones europeas se negocian a través de un bróker asiático o al revés. Es decir, hay casos en los que la hora «To» es anterior a la «From», si se omite la fecha de la fecha y hora.
Simplemente se realiza una comparación por hora.
if(!TradeSession.isSessionTrade(TimeCurrent())){Print("Market closed. OnTick return");return;}
En lugar de
TimeCurrent()
Por cierto, puedes establecer cualquier valor.

La hora de las sesiones se obtiene del bróker o se puede configurar manualmente.