Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
Yo hago esto. Hago una sola prueba. Durante estas pruebas escribo matrices en un archivo. Luego realizo la optimización en la misma zona pero las matrices no se recalculan en cada barra o tick, se leen del archivo. La optimización mediante la apertura de precios en un periodo semanal es instantánea. Sin operaciones de archivo se tarda horas.
Ya veo, es decir, se puede leer el archivo listo con dígitos en un array (mi caso), luego escribirlo en un archivo binario, y luego utilizarlo.
Bien, si necesitas leer datos de 10 arrays desde el archivo, entonces necesitas hacer un clasificador, que entenderá el final del array por un dígito especial y llenará el siguiente array... Porque no es conveniente escribir el tamaño del array cada vez.
Primero, escribimos una variable int con el tamaño del array en el archivo, luego un array, luego otra variable int con el tamaño, luego un array, etc.
En el mismo orden leemos: leer variable con tamaño, leer array de ese tamaño, siguiente variable, array, etc.
Mi situación es ligeramente diferente. Sólo tengo que llenar el array una vez y utilizarlo para todos mis pases. Así que, para mí, incluso con cada pase, llenar el array una vez en el inite es mucho.
Así que llénelo una vez para una sola prueba. Los programas durante las pruebas y la optimización deben diferir en las operaciones de archivo. Durante las pruebas está escribiendo, mientras que durante la optimización está leyendo. Hay que escribir dos códigos. ¿A qué te refieres con que llenar un array es mucho? La invocación de un array desde un archivo no requiere más tiempo que, por ejemplo, la apertura de una orden o una operación de multiplicación con doble.
Mucho por qué: conozco todo el conjunto de antemano. Y entonces surgió la pregunta de cómo guardar esta matriz entre pases. Tengo entendido que se reinicia en la siguiente pasada, aunque no estoy exactamente seguro de ello.
No estoy de acuerdo en que la lectura sea más rápida en mi caso. La velocidad es más rápida, si recibo los mismos datos a través de indicadores, y se ralentiza significativamente, cuando leo estos datos preparados desde un archivo sin cálculo de indicadores. En un plazo pequeño con el número de líneas de mil y en un segmento grande es muy costoso leer el archivo cada vez.
La idea era la siguiente: leer los datos y escribirlos en un array y luego, en todas las pasadas, sólo utilizar este array, es decir, el array es exactamente el mismo desde la primera pasada hasta la última.
Mucho por qué: conozco todo el conjunto de antemano. Y entonces surgió la pregunta de cómo guardar esta matriz entre pases. Tengo entendido que se reinicia en la siguiente pasada, aunque no estoy exactamente seguro de ello.
No estoy de acuerdo en que la lectura sea más rápida en mi caso. Es más rápido, cuando obtengo los mismos datos a través de indicadores, y se vuelve más lento, cuando leo estos datos desde el archivo sin cálculo de indicadores.
La idea era la siguiente: leer los datos y ponerlos en un array y luego utilizar este array para todas las pasadas, es decir, el array es exactamente el mismo desde la primera pasada hasta la última.
Primero escribimos una variable int con el tamaño del array en el archivo, luego un array, luego otra variable int con el tamaño, luego un array, etc.
Leer en el mismo orden: leer variable con tamaño, leer array de ese tamaño, siguiente variable, array, etc.
La idea era leer los datos y ponerlos en un array y luego en todas las pasadas sólo utilizar este array, es decir, el array es exactamente el mismo desde la primera pasada hasta la última.
MT4 es realmente muy lento en el trabajo con archivos, no sé cómo será en MT5, especialmente con un archivo binario...
Yo resuelvo este problema con una función que escribe todo el array directamente en el código, pero no es una solución universal, por supuesto.
Este es un ejemplo de escritura y lectura de un array
Ejecútelo dos veces en modo de depuración y vea cuánto tiempo tarda en escribir y leer el array. La primera ejecución escribirá la matriz en el archivo, y la segunda la leerá y comenzará a imprimir las fechas de la matriz. A continuación, averiguar la parte resaltada, si IS_DEBUG_MODE debe ser eliminado, y si IsOptimization() debe ser insertado en la condición.
Aquí es donde me siento inculto... ¿Cómo escribir una variable int de un tamaño de matriz en un archivo binario? Es decir, ¿cómo sería posible identificar esta variable al leer del archivo?
Hay una función, algo así como FileWriteInteger(). Identificar por ubicación, la variable debe estar al principio del archivo, después de leerla el puntero se moverá a su final, es decir, al principio del array, después de leer el array el puntero estará antes de la siguiente variable...
Pronto se publicará un artículo sobre el trabajo con archivos.
Hay una función, algo así como FileWriteInteger(). Identificar por ubicación, la variable debe estar al principio del archivo, después de leerla el puntero se moverá a su final, es decir, al principio del array, después de leer el array el puntero estará antes de la siguiente variable...
Pronto habrá un artículo sobre el trabajo con archivos.
Lo entiendo, gracias.
Pero me gustaría echar un vistazo al código, así que esperaré al artículo.