Probando 'CopyTicks' - página 23

 
Renat Fatkhullin:

Lo óptimo es descargar una vez lo que se necesita para profundizar, y luego sólo descargar los nuevos de la caché cercana en microsegundos.

Si haces consultas profundas cada vez que fallas en el disco, entonces por supuesto que es tu culpa.

¿Puede mostrarme el código para la recuperación más óptima del historial de garrapatas para la primera semana de septiembre?
 
fxsaber:
¿Puedes mostrarme el código de la mejor manera de obtener el historial de garrapatas de la primera semana de septiembre?

Escríbalo usted mismo, no es una tarea difícil.

Consultar las fechas exactas y guardarlas en un array local. No hay optimismo cuando se trabaja fuera de la caché. La optimización sólo tiene sentido cuando se descargan los últimos 4096 ticks de la caché.

 
Renat Fatkhullin:

Escríbalo usted mismo, no es una tarea difícil.

Haz una consulta sobre las fechas exactas y almacénalas en un array local.

De esta manera no se puede saber de antemano cuántos ticks había en el intervalo requerido. No hay forma de determinar el parámetro de recuento. Este es el problema.

Para sacar toda la historia desde principios de septiembre, estableciendo la cuenta = trillón - se puede, por supuesto. A continuación, utilice la búsqueda binaria para encontrar la fecha final en la matriz y truncar.

Pero este trilliard no es un enfoque técnico en absoluto. O bien tenemos que sobrecargar la función con from, to. O el acceso al índice de la base de datos.

 
Renat Fatkhullin:

La optimización sólo tiene sentido cuando se descargan los últimos 4096 ticks de la caché.

De referencia:

Velocidad de salida: el terminal almacena para cada símbolo 4096 últimos ticks en la caché para un acceso rápido (para símbolos con pila en funcionamiento - 65536 ticks)

Y unos 65536 ticks (con pila), ¿no sería ya lo óptimo?
 

Prepararemos mejoras para CopyTicks en la próxima compilación:

  • Tal vez hagamos que las cachés rápidas se adapten con una expansión automática a 128k ticks, lo que permitirá escribir programas más fáciles (sin necesidad de molestarse con la descarga, y a menudo se puede obtener el volumen necesario directamente de la caché rápida)
  • añadiremos una versión adicional de la función, para que sea posible tomar citas con fechas exactas desde & hasta
 
Renat Fatkhullin:

Prepararemos mejoras para CopyTicks en la próxima compilación:

  • posiblemente hacer que las cachés rápidas sean adaptativas con expansión automática a 128k ticks, lo que permitirá escribir programas más fáciles (no hay que molestarse en reanudar la descarga, y a menudo tomar el volumen necesario directamente de la caché rápida)
  • Vamos a añadir una versión adicional de la función, para poder tomar citas con fechas exactas de & a

Gracias.

Sobre la historia completamente cargada de & a, probablemente, dirá cero GetLastError.

Ten en cuenta que ahora (y con la introducción de las mejoras que has señalado) es extremadamente difícil conseguir una garrapata que estaba antes del tiempo. Por lo tanto, propongo hacer el recuento y negativo - una solicitud de ticks no sólo a futuro (a la derecha), sino también al pasado (como a partir de == 0).

Entonces siempre será conveniente y óptimo (su implementación) consultar el historial anterior.

 
fxsaber:

Gracias.

Un historial completamente descargado de & a probablemente se indicaría con un GetLastError nulo.

Ten en cuenta que ahora (y con la introducción de las mejoras que has indicado) es extremadamente difícil conseguir una garrapata que estuviera antes de la hora. Por lo tanto, propongo hacer el recuento y negativo - una solicitud de ticks no sólo a futuro (a la derecha), sino también al pasado (como a partir de == 0).

Entonces siempre será conveniente y óptimo (su implementación) consultar el historial anterior.

Es mejor hacer las sobrecargas de CopyTicks() de una vez igual que para otras funciones Copy...().
 
Alexey Kozitsyn:
Es mejor hacer que las sobrecargas de CopyTicks() sean las mismas que para otras funciones Copy...().
Entonces tendremos que abandonar el recuento por defecto y desde.
 
fxsaber:
Entonces tenemos que abandonar el recuento por defecto y desde.

¿Por qué? Usando CopyBuffer como ejemplo, ahora tenemos esto:

intCopyBuffer(
intindicator_handle,// manija del indicador
intbuffer_num,// número del buffer del indicador
datetimestart_time,//fecha
intcount,// cuántoscopy
doublebuffer[]// array, donde se copiarán los datos

);

Hay un recuento y desde (start_time).

Sugiere añadir esto:

intCopyBuffer(
intindicator_handle,// manija del indicador
intbuffer_num,// número del buffer indicador
datetimestart_time,// a partir de qué fecha
datetimestop_time,// hasta qué fecha
doublebuffer[]// array, donde se copiarán los datos

);

Así que podemos copiar en ambas direcciones, ¿verdad? Sólo que en lugar de datetime - ulong (en microsegundos).

En el futuro añadiré esta sobrecarga para otros fines:

intCopyBuffer(
intindicator_handle,// indicador mango
intbuffer_num,// número de búfer indicador
intposición_de_inicio,//donde empezamos
intcount,// cuántos copiamos
doublebuffer[]// matriz que copiará los datos
);

Eso es todo.

 
fxsaber:
Entonces tendremos que abandonar el recuento por defecto y desde.

No lo leí cuidadosamente al principio... Sí, tengo que hacerlo. ¿Y qué? Si los desarrolladores ampliarán el caché - será más lento sólo cuando se cargue un historial de ticks lo suficientemente grande, y a menudo no es necesario hacerlo. Y para la carga en tiempo real no se verá afectada de ninguna manera (se tomará de la caché).

Creo que es mucho más importante cargar de fecha a fecha, que intentar guardar los parámetros por defecto.