El indicador se corrompe - página 2

 
jjc:

Por ejemplo, si son las 8 de la mañana, cualquier cosa en el código que suponga que (a) la barra de las 7 de la mañana es de hace 60 barras, o incluso (b) que existe una barra de las 07:00.

Buen punto, no había apreciado que los gráficos eran M1 cuando los miré por primera vez... es bastante común que falten barras M1 en momentos de calma, durante la noche por ejemplo.
 
RaptorUK:
Buen punto, no había apreciado que los gráficos eran M1 cuando los miré por primera vez... es bastante común que falten barras M1 en momentos de calma, durante la noche por ejemplo.
En este caso creo que es más probable que sea una pérdida temporal de conexión con el broker, pero el principio y las implicaciones son las mismas.
 
jjc:
En este caso creo que es más probable que se trate de una pérdida temporal de conexión con el broker, pero el principio y las implicaciones son las mismas.
...También es notable en la captura de pantalla de "Error de movimiento" que las líneas púrpuras dejan de dibujarse en el punto en el que parece que falta una barra M1.
 
AnkaSoftware:

Hmm, "se añaden nuevos datos históricos al gráfico", ¿cómo? El indicador se inicia y se deja sin alterar. Tenemos un lookback fijo de 1000 barras.

El indicador

no está cargando ningún

dato histórico
.

¿Puede alguien del equipo de desarrollo echar un vistazo a esto

? Usted dijo... "He desarrollado un indicador que funciona bien durante las primeras 16 horas más o menos"... 16 horas x 60 minutos = 960 barras... ¿qué ocurre si se reduce el intervalo a 500 barras?
 

Jic, Gracias por las observaciones.

Las pruebas se están realizando en un servidor VPS de CNS con conexión fiable y la cuenta Demo utilizada para las pruebas son con los brokers IBFX y VantageFX

Hago un RefreshRates() en cada tick y uso funciones normales de timeseries para acceder a los datos de las barras. El código utilizado para actualizar los indicadores se da en mi post anterior ver la función DrawMoveEx. Creo que la TimeSeries no tiene barras perdidas desde 0 hasta 'Bars -1'. Hágame saber si esta suposición es incorrecta.

Adjunto otra instantánea, con la escala de tiempo correcta, y sin desplazamiento hacia la derecha (con los datos actuales de IBFX).

¿Tuviste la oportunidad de mirar el archivo de Excel adjunto en el post 2011.10.07 15:30

 

AnkaSoftware:
I believe the TimeSeries does not have missing bars from 0 to 'Bars -1'. Let me know if this assumption is incorrect.

Esa suposición parece ciertamente incorrecta porque tu captura de pantalla original de "Error de movimiento" tiene 16 barras entre cada marcador del eje X -puedes contarlas por ti mismo- pero uno de los períodos cubre 21 en lugar de 16 minutos. Y, como dice RaptorUK, no es una suposición que puedas hacer con seguridad en tu código. No necesariamente va a haber una operación cada minuto del día - aunque me sorprendería que no la hubiera en el GBPUSD fuera de los días festivos - y por lo tanto no necesariamente va a haber una barra M1 para cada minuto.

Si usted cree que no hay barras que faltan - cuando es demostrable el caso de que hay barras que faltan en una de sus capturas de pantalla - entonces usted es probablemente la codificación basada en esa suposición / creencia. Yo no consideraría su última captura de pantalla como una prueba en contra, porque podría haber (a) datos que faltan antes del período que se muestra en la captura de pantalla que (b) está afectando de alguna manera los cálculos de las barras que se muestran en la captura de pantalla.

Lo más sospechoso es que las líneas moradas se detienen en la captura de pantalla original durante el período en el que claramente falta una barra. No podría comentar más, o hacer un análisis de tus hojas de cálculo, sin ver el código completo.

 
AnkaSoftware:

Jic, Gracias por las observaciones.

Las pruebas se están realizando en un servidor VPS de CNS con conexión fiable y la cuenta Demo utilizada para las pruebas son con los brokers IBFX y VantageFX

Hago un RefreshRates() en cada tick y uso funciones normales de timeseries para acceder a los datos de las barras.

Probablemente no sea la causa de su problema, pero... RefreshRates() no hace ninguna diferencia si usted está usando estas funciones: https: //docs.mql4.com/series RefreshRates sólo refresca estas variables: https://docs.mql4.com/predefined/variables
 
jjc:

Esa suposición parece ciertamente incorrecta porque tu captura de pantalla original de "Error de movimiento" tiene 16 barras entre cada marcador del eje X -puedes contarlas por ti mismo- pero uno de los períodos cubre 21 en lugar de 16 minutos. Y, como dice RaptorUK, no es una suposición que puedas hacer con seguridad en tu código. No necesariamente va a haber una operación cada minuto del día - aunque me sorprendería que no la hubiera en el GBPUSD fuera de los días festivos - y por lo tanto no necesariamente va a haber una barra M1 para cada minuto.

Si usted cree que no hay barras que faltan - cuando es demostrable el caso de que hay barras que faltan en una de sus capturas de pantalla - entonces usted es probablemente la codificación basada en esa suposición / creencia. Yo no consideraría su última captura de pantalla como una prueba en contra, porque podría haber (a) datos que faltan antes del período que se muestra en la captura de pantalla que (b) está afectando de alguna manera los cálculos de las barras que se muestran en la captura de pantalla.

Lo más sospechoso es que las líneas moradas se detienen en la captura de pantalla original durante el período en el que claramente falta una barra. No podría comentar más, o hacer un análisis de tus hojas de cálculo, sin ver el código completo.

Raptor, comprobaré lo que ocurre si se reduce el lookback a 500 barras, ¿se producen problemas después de 8 horas?

JIC, Por favor, tenga en cuenta que el problema no ocurre en plataformas de 32 bits. He proporcionado un código en uno de los mensajes anteriores.

 
AnkaSoftware:
Creo que la TimeSeries no tiene barras omitidas desde 0 hasta 'Bars -1'. Hágame saber si esta suposición es incorrecta.

Por supuesto que no, hay velas de Bars numeradas de 0 a Bars-1. ArraySize(Close) == Bares siempre.

Sin embargo siempre hay barras saltadas. desde el viernes 21:59z la siguiente barra es el domingo 22:00z. Los fines de semana y los días festivos y los minutos sin actividad.

No puede asumir que Time[x] == Time[x+1] + 60*Period() no estará en una barra omitida.

Si quieres ayuda con TU indicador, publica TU código - no hay lectores de mente aquí.

 
AnkaSoftware:

Algunas informaciones adicionales -

a) La corrupción de los indicadores sólo ocurre en la plataforma Windows de 64 bits

b) He tomado un volcado de la matriz de indicadores antes de la corrupción y después de la corrupción - los mismos están disponibles en el archivo xls adjunto con comentarios.

Echa un vistazo a los valores de tiempo de Unix en su hoja de cálculo, las brechas entre cada valor adyacente debe ser de 60, 60 segundos, hay algunos 240 segundos brechas y al menos una brecha de 120 segundos. ¿Su código está diseñado para manejar las barras M1 que faltan?
Razón de la queja: