¿Puede esta clase reducir la memoria consumida por el indicador?
¿Y qué pasa con la memoria consumida por un Asesor Experto que utiliza varios indicadores de este tipo?
¿O la tarea se planteó de otro modo, sólo para proporcionar un acceso cómodo a los datos en flujo?
¿Puede esta clase reducir la memoria consumida por el indicador?
¿Y qué pasa con la memoria consumida por un Asesor Experto que utiliza varios indicadores de este tipo?
¿O es que la tarea se planteó de otra manera - sólo para proporcionar un acceso cómodo a los datos de streaming?
Por supuesto que sí. La clase se escribió precisamente para reducir la memoria. En todos los buffers, incluidos los buffers para datos intermedios, sólo se almacena en memoria el tamaño del último dato especificado por el usuario.
Deberían publicar ejemplos.
Debe publicar ejemplos.
Ejemplos
En el momento de la publicación hay tres ejemplos de uso de la memoria cíclica:
Clase para construir Moving Average
Clase para construir Average True Range
Clase para construir Average Directional Movement Index.
Ya hay ejemplos, sólo están rotos los enlaces 2º y 3º.
Una pequeña analogía para una mejor comprensión
- el búfer circular en esta implementación es un análogo de una serie temporal, es decir, los datos más recientes tienen índice 0, los más antiguos "tamaño del búfer"-1
- el tamaño del búfer circular es un análogo de TERMINAL_MAXBARS, pero a diferencia de TERMINAL_MAXBARS, el tamaño del búfer es fijado por el usuario durante la inicialización y puede cambiarse durante el uso, manteniendo los datos más recientes.
- Al igual que con TERMINAL_MAXBARS, los datos más allá del tamaño del buffer no están disponibles, pero todos los datos recientes dentro del tamaño del buffer están disponibles.
- Los datos del indicador se pueden almacenar en el buffer del anillo como en el buffer del indicador, pero para mostrarlos en el gráfico es necesario copiar los datos al buffer del indicador.
- Si no es necesario mostrar los datos del indicador, no es necesario copiarlos en la memoria intermedia del indicador, sino utilizarlos para sus cálculos directamente desde la memoria intermedia circular (véanse los ejemplos), lo que ahorra considerablemente memoria y tiempo al recalcular el indicador.
- Los datos del indicador se pueden almacenar en la memoria cíclica como en la memoria intermedia del indicador, pero para visualizarlos en el gráfico es necesario copiar los datos en la memoria intermedia del indicador.
- Si no es necesario mostrar los datos del indicador, no es necesario copiarlos en la memoria intermedia del indicador, sino utilizarlos para sus cálculos directamente desde la memoria intermedia circular (véanse los ejemplos), lo que ahorra considerablemente memoria y tiempo al recalcular el indicador.
Esto es lo que yo estaba preguntando.
¿Cómo se puede ahorrar memoria si se sigue necesitando un búfer de indicador completo?
Resulta que sólo se puede ahorrar memoria si se transfieren los cálculos intermedios a la memoria cíclica, y esto no resuelve todos los problemas.
Lo que quiero es que un indicador con 20 buffers desplegados, calculando las últimas 1000 barras, ocupe la misma cantidad de memoria cuando "Max. barras en ventana" = 1000 y cuando "Max. barras en ventana" = 9999999999.
Y esto es aparentemente imposible =(
Eso es lo que yo preguntaba.
¿Cómo se ahorra memoria si se sigue necesitando un búfer indicador en toda regla?
Resulta que sólo se puede ahorrar memoria si se transfieren los cálculos intermedios a la memoria intermedia anular, y esto no resuelve todos los problemas.
Lo que quiero es que un indicador con 20 buffers desplegados, calculando las últimas 1000 barras, ocupe la misma cantidad de memoria cuando "Max. barras en ventana" = 1000 y cuando "Max. barras en ventana" = 9999999999.
Y esto es aparentemente imposible =(
Sí, es posible guardar sólo los datos que no necesitan ser almacenados en el buffer del indicador.
Hay un par de ideas de cómo a veces se puede reducir el consumo de memoria en este caso también.
Las memorias intermedias de los indicadores son necesarias en dos casos: cuando necesita ver una imagen en el gráfico y cuando necesita obtener datos de las memorias intermedias de los indicadores en otros indicadores o Asesor Experto. Por ejemplo, en el probador (no en el modo de visualización) puede utilizar el búfer de anillo en lugar del búfer de indicador, si se utilizó sólo para la visualización, y en el modo normal el búfer de indicador habitual. Esto le permitirá ahorrar memoria durante la optimización. Incluso he conseguido aumentar la velocidad de optimización. De forma similar con la transferencia de datos desde los buffers de los indicadores, puedes intentar utilizar otras formas de obtener datos del indicador y entonces podrás utilizar buffers de anillo en lugar de buffers de indicador.
Sí, es posible ahorrar sólo en los datos que no necesitan almacenarse en el búfer del indicador.
Hay un par de ideas de cómo a veces se puede reducir el consumo de memoria en este caso también.
Las memorias intermedias de los indicadores son necesarias en dos casos: cuando necesita ver una imagen en el gráfico y cuando necesita obtener datos de las memorias intermedias de los indicadores en otros indicadores o en el Asesor Experto. Por ejemplo, en el probador (no en el modo de visualización) puede utilizar el búfer de anillo en lugar del búfer de indicador, si se utilizó sólo para la visualización, y en el modo normal el búfer de indicador habitual. Esto le permitirá ahorrar memoria durante la optimización. Incluso he conseguido aumentar la velocidad de optimización. Del mismo modo con la transferencia de datos de los búferes de los indicadores, puede tratar de utilizar otras formas de obtener datos del indicador y, a continuación, puede utilizar los búferes de anillo en lugar de los búferes de los indicadores.
Es una pena, desde luego, ya me había entusiasmado.
Gracias de todas formas.
Esperaré una solución normal por parte de los desarrolladores.
Es una pena, desde luego, ya estaba emocionado.
Gracias de todos modos.
Esperaré una solución normal por parte de los desarrolladores.
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Usted acepta la política del sitio web y las condiciones de uso
Clase para crear el buffer circular:
Autor: Konstantin Gruzdev