Voracidad de la memoria RAM de la MT5, problemas con la lectura/escritura de archivos grandes - página 4

 
Maxim Dmitrievsky:

intente leer su archivo así

https://www.mql5.com/ru/docs/files/filereadarray

No tengo tiempo de abrir el terminal ahora mismo, quizás mañana).

Así que dice"desde un archivo binario", ¿de dónde podría sacar uno?

Esperaré a "mañana" :)
 
Aleksey Vyazmikin:

Dice"de un archivo binario", ¿de dónde saco uno?

Esperaré a "mañana" :)

¿de dónde lo sacas?

 
Maxim Dmitrievsky:

¿de dónde lo sacas?

En este caso concreto, el archivo está pegado a partir de otros archivos CSV en Excel. Los archivos fueron generados originalmente por MT5, en este caso particular.

 
Aleksey Vyazmikin:

En este caso concreto, el archivo está pegado a partir de otros archivos CSV en Excel. Originalmente fue generado por MT5, en este caso particular.

Así que escribe en el binario de mt5. ¿Es una matriz? Sólo hay que escribir la matriz en el archivo de una vez y cargarla más tarde

 

Foro sobre trading, sistemas de trading automatizados y pruebas de estrategias de trading

Características del lenguaje mql5, sutilezas y trucos

fxsaber, 2018.04.06 17:08

Probablemente no hay mucha gente que lo haga, así que aquí
// Заполнение массива строками из файла - классика
int FileToStrings( const string FileName, string &Str[] )
{
  ArrayResize(Str, 0);

  const int handle = FileOpen(FileName, FILE_READ | FILE_ANSI );
  
  if (handle != INVALID_HANDLE)
  {
    while (!FileIsEnding(handle))
      Str[ArrayResize(Str, ArraySize(Str) + 1) - 1] = FileReadString(handle);
    
    FileClose(handle);
  }
  
  return(ArraySize(Str));
}

// Заполнение массива строками из файла - альтернатива
int FileToStrings2( const string FileName, string &Str[] )
{
  uchar Bytes[];
  
  return(FileLoad(FileName, Bytes) ? StringSplit(CharArrayToString(Bytes), '\n', Str) : 0);
}

void OnStart()
{
  const string FileName = "Test.txt";
  
  string Str[];  
  FileToStrings(FileName, Str);

  string Str2[];  
  FileToStrings2(FileName, Str2);
  
  ArrayPrint(Str);
  ArrayPrint(Str2);
}
Yo mismo utilizo la segunda opción cuando necesito raspar algo. Probablemente también funcione más rápido, no lo he probado.

Como referencia, los posibles indicadores son

Foro sobre trading, sistemas de trading automatizados y pruebas de estrategias de trading

Guiones: ThirdPartyTicks

fxsaber, 2018.04.18 23:10

Analiza (ZIP+CSV) a tres millones de ticks por segundo. Eso debe ser rápido.

Más de 3GB ZIP (>> 10GB CSV) los proceso sin problemas, así que definitivamente podría funcionar bien.

 

El análisis del CSV en sí debe constar de unas 10 líneas. En este caso no se necesita una clase completa.

La tarea es muy sencilla incluso para un principiante en programación. Lo que ocurre con los datos después de la lectura del archivo es la siguiente tarea, que sólo entiende el programador.

Alexey, contrata a un programador o empieza a estudiar bien la programación. De lo contrario, estará desperdiciando dinero en clases que no podrá utilizar. No tiene sentido intentar ganar sin experiencia en programación.

P.D.

No toques a Renat. No tiene nada que hacer en este tema. Tiene que arreglar la optimización.

 
Maxim Dmitrievsky:

Así que escribe en el binario de mt5. ¿Es una matriz? Sólo tienes que escribir la matriz en el archivo de una vez y cargarla más tarde.

Hay muchas columnas, cada columna es un array independiente.

 
fxsaber:

Como referencia, son posibles las siguientes cifras

Más de 3GB ZIP (>> 10GB CSV) los proceso sin problemas, así que definitivamente puede funcionar bastante bien.

Gracias. Está claro cómo escribir filas en un array, pero quiero trabajar también con columnas. Se supone que después de llamar al número de fila del array, hay que hacer algún análisis adicional para encontrar las columnas, pero ¿cómo hacerlo?

 
Aleksey Vyazmikin:

Hay muchas columnas, cada columna es un array independiente.

Así que es un array de 2 dimensiones, una matriz. Escríbelo

 
Roffild:

El análisis del CSV en sí debe constar de unas 10 líneas. En este caso no se necesita una clase completa.

La tarea es muy sencilla incluso para un principiante en programación. Lo que ocurre con los datos después de la lectura del archivo es la siguiente tarea, que sólo entiende el programador.

Alexey, contrata a un programador o empieza a estudiar bien la programación. De lo contrario, estará desperdiciando dinero en clases que no podrá utilizar. No tiene sentido intentar ganar sin experiencia en programación.

P.D.

No toques a Renat. No tiene nada que hacer en este tema. Tiene que arreglar la optimización.

Llevo usándolo unos 3 años ya, desde MT4. Es cómodo, pero muy lento.

Por supuesto, es fácil leer una cadena, pero convertirla en una estructura celular que funcione es mucho más difícil.

¿Qué quieres decir con que no puedo utilizar las clases? Yo sí, y además, el empleado de la metacita escribió la clase. Y entonces, realmente contraté a una persona, pagué y esperé obtener un producto terminado, pero me dijeron que está bien ser lento... Me los creí, pero ahora me he pasado con la memoria.

Razón de la queja: