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.
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.
Quería escribirte que no hay ningún artículo sobre las operaciones de archivo. Los haces informativos y lúcidos. Sin duda los leeré cuando aparezcan.
Si no se establece al principio, imprime la fecha de 1971, es decir, la matriz está vacía
Si relleno el array en el inicio, aparecen los valores. ¿Puede ser la razón, que la matriz se reinicia datetaime, pero sin ella el código no se compila?
El conjunto desaparece. ¿Qué hago mal?
Mira lo que dice el compilador.
ArrayResize(T,40);
datetime T[40]=
Con un movimiento tan fácil, has definido un array local T que desaparecerá al salir de OnInit...
comprobar la advertencia que genera el compilador.
Con un movimiento tan fácil, has definido un array local T que se perderá al salir de OnInit...
Dice que ya existe una declaración global)
la declaración de 'T' oculta la declaración global en la línea 40
Pero, cómo hacerlo bien. Nunca había declarado un array utilizando llaves. Lo inicialicé con cero y fijé su tamaño y luego lo llené con el bucle. ¿Hay alguna otra forma de hacerlo?
Si borro el datetime en el inite, el código no compila, pero escribe dos errores:
la declaración de 'T' oculta la declaración global en la línea 40
Pero, cómo hacerlo bien. Nunca había declarado un array utilizando llaves. Lo inicialicé con cero y fijé su tamaño y luego lo llené con el bucle. ¿Hay alguna otra forma de hacerlo?
Si borro el datetime en el inite, el código no compila, pero escribe dos errores:
'{' - expresión esperada
'=' - uso de operación ilegal
La declaración del array junto con la inicialización de las constantes podría (y debería) hacerse a nivel global.
la declaración de 'T' oculta la declaración global en la línea 40
Pero, cómo hacerlo bien. Nunca había declarado un array utilizando llaves. Lo inicialicé con cero y fijé su tamaño y luego lo llené con el bucle. ¿Hay alguna otra forma de hacerlo?
Si borro el datetime en el inite, el código no compila, pero escribe dos errores:
'{' - expresión esperada
'=' - uso de operación ilegal
Con '=' se pueden inicializar las matrices sólo al declararlas. Parece un remanente de C, pero así es como se hace aquí :-)
La declaración del array junto con la inicialización de las constantes podría (y debería) haberse hecho a nivel global.
Sí, lo he probado y funciona. Y no se puede hacer sin nivel global, sólo lo hice para reducir el coste computacional, para llenar el array una vez en el init y luego usar los valores del array?
Aunque lógicamente, las variables a nivel global son siempre constantes, por lo que el cálculo se realiza una vez al principio del programa?
Sí, lo he probado y funciona. Y no se puede hacer sin nivel global, sólo lo hice para reducir el coste computacional, para llenar el array una vez en el init y luego usar los valores del array?
Aunque lógicamente las variables a nivel global son siempre constantes, por lo que el cálculo se realiza una vez al principio del programa?
Sí, al preparar un binario ex4 ex5 para su ejecución por el terminal. Se puede pensar que son sólo enlaces a la matriz de datos descrita (y guardada dentro de ex4/5 en tiempo de compilación), y eso es muy rápido...
la declaración de 'T' oculta la declaración global en la línea 40
Pero, cómo hacerlo bien. Nunca había declarado un array utilizando llaves. Lo inicialicé con cero y fijé su tamaño y luego lo llené con el bucle. ¿Hay alguna otra forma de hacerlo?
Si borro el datetime en el inite, el código no compila, pero escribe dos errores:
'{' - expresión esperada
'=' - uso de operación ilegal
Realmente no importa cómo se llene el array. Simplemente hay que establecer una condición por la cual si el tamaño del array es cero, debe ser evaluado, llenado y escrito en un archivo. Y en OnInit(), intenta leer en el array declarado usando mi ejemplo. Por lo tanto, si hay un array de archivos, se lee, y el array se llena, el array no será recalculado y llenado de nuevo.
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.
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.
Quería escribirte que no hay ningún artículo sobre las operaciones de archivo. Los haces informativos y lúcidos. Sin duda los leeré cuando aparezcan.
He intentado declarar un array a nivel global (código mql4)
datetime T[];rellenar en el inite
Si no se establece al principio, imprime la fecha de 1971, es decir, la matriz está vacía
Si relleno el array en el inicio, aparecen los valores. ¿Puede ser la razón, que la matriz se reinicia datetaime, pero sin ella el código no compila?
El conjunto desaparece. ¿Qué hago mal?
He intentado declarar un array a nivel global (código mql4)
rellenar en el inite
Si no se establece al principio, imprime la fecha de 1971, es decir, la matriz está vacía
Si relleno el array en el inicio, aparecen los valores. ¿Puede ser la razón, que la matriz se reinicia datetaime, pero sin ella el código no se compila?
El conjunto desaparece. ¿Qué hago mal?
Mira lo que dice el compilador.
Con un movimiento tan fácil, has definido un array local T que desaparecerá al salir de OnInit...
comprobar la advertencia que genera el compilador.
Con un movimiento tan fácil, has definido un array local T que se perderá al salir de OnInit...
Dice que ya existe una declaración global)
la declaración de 'T' oculta la declaración global en la línea 40
Pero, cómo hacerlo bien. Nunca había declarado un array utilizando llaves. Lo inicialicé con cero y fijé su tamaño y luego lo llené con el bucle. ¿Hay alguna otra forma de hacerlo?
Si borro el datetime en el inite, el código no compila, pero escribe dos errores:
'{' - expresión esperada
'=' - uso de operación ilegal
Dice que ya existe una declaración global)
la declaración de 'T' oculta la declaración global en la línea 40
Pero, cómo hacerlo bien. Nunca había declarado un array utilizando llaves. Lo inicialicé con cero y fijé su tamaño y luego lo llené con el bucle. ¿Hay alguna otra forma de hacerlo?
Si borro el datetime en el inite, el código no compila, pero escribe dos errores:
'{' - expresión esperada
'=' - uso de operación ilegal
La declaración del array junto con la inicialización de las constantes podría (y debería) hacerse a nivel global.
Dice que ya existe una declaración global)
la declaración de 'T' oculta la declaración global en la línea 40
Pero, cómo hacerlo bien. Nunca había declarado un array utilizando llaves. Lo inicialicé con cero y fijé su tamaño y luego lo llené con el bucle. ¿Hay alguna otra forma de hacerlo?
Si borro el datetime en el inite, el código no compila, pero escribe dos errores:
'{' - expresión esperada
'=' - uso de operación ilegal
La declaración del array junto con la inicialización de las constantes podría (y debería) haberse hecho a nivel global.
Sí, lo he probado y funciona. Y no se puede hacer sin nivel global, sólo lo hice para reducir el coste computacional, para llenar el array una vez en el init y luego usar los valores del array?
Aunque lógicamente, las variables a nivel global son siempre constantes, por lo que el cálculo se realiza una vez al principio del programa?
Sí, lo he probado y funciona. Y no se puede hacer sin nivel global, sólo lo hice para reducir el coste computacional, para llenar el array una vez en el init y luego usar los valores del array?
Aunque lógicamente las variables a nivel global son siempre constantes, por lo que el cálculo se realiza una vez al principio del programa?
Dice que ya existe una declaración global)
la declaración de 'T' oculta la declaración global en la línea 40
Pero, cómo hacerlo bien. Nunca había declarado un array utilizando llaves. Lo inicialicé con cero y fijé su tamaño y luego lo llené con el bucle. ¿Hay alguna otra forma de hacerlo?
Si borro el datetime en el inite, el código no compila, pero escribe dos errores:
'{' - expresión esperada
'=' - uso de operación ilegal