voracità della memoria RAM di MT5, problemi con la lettura/scrittura di file di grandi dimensioni - pagina 4

 
Maxim Dmitrievsky:

prova a leggere il tuo file in questo modo

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

Non ho tempo di aprire il terminale in questo momento, forse domani).

Quindi si legge"da un file binario", dove potrei trovarne uno?

Aspetterò "domani" :)
 
Aleksey Vyazmikin:

Quindi si legge"da un file binario", dove posso trovarne uno?

Aspetterò "domani" :)

da dove lo prendi?

 
Maxim Dmitrievsky:

da dove lo prendi?

In questo caso particolare, il file è incollato da altri file CSV in Excel. I file sono stati originariamente generati da MT5, in questo caso particolare.

 
Aleksey Vyazmikin:

In questo caso particolare, il file è incollato da altri file CSV in Excel. È stato originariamente generato da MT5, in questo caso particolare.

Quindi scrivete il binario da mt5. È una matrice? Basta scrivere l'array nel file in una volta sola e caricarlo dopo.

 

Forum sul trading, sistemi di trading automatico e test di strategie di trading

Caratteristiche del linguaggio mql5, sottigliezze e trucchi

fxsaber, 2018.04.06 17:08

Probabilmente non molte persone lo fanno, quindi ecco
// Заполнение массива строками из файла - классика
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);
}
Io stesso uso la seconda opzione quando ho bisogno di raspare qualcosa. Probabilmente funziona anche più velocemente, non l'ho testato.

Come punto di riferimento, i possibili indicatori sono

Forum sul trading, sistemi di trading automatico e test di strategie di trading

Script: ThirdPartyTicks

fxsaber, 2018.04.18 23:10

Parses (ZIP+CSV) a tre milioni di tick al secondo. Deve essere veloce.

Più di 3GB ZIP (>> 10GB CSV) elaboro senza problemi, quindi potrebbe sicuramente funzionare bene.

 

L'analisi CSV stessa dovrebbe consistere di circa 10 righe. Un'intera classe non è affatto necessaria in questo caso.

Il compito è molto semplice anche per un principiante della programmazione. Cosa succede ai dati dopo la lettura dal file è il compito successivo, che solo il programmatore capisce.

Alexey, assumi un programmatore o inizia uno studio adeguato di programmazione. Altrimenti sprecherete soldi per classi che non potrete usare. Non ha senso cercare di guadagnare senza esperienza di programmazione.

P.S.

Non toccare Renat. Non ha niente da fare su questo argomento. Deve sistemare l'ottimizzazione.

 
Maxim Dmitrievsky:

Quindi scrivi il binario da mt5. È una matrice? Basta scrivere l'array nel file in una volta sola e caricarlo dopo.

Ci sono molte colonne, ogni colonna è un array separato.

 
fxsaber:

Come punto di riferimento, sono possibili le seguenti cifre

Più di 3GB ZIP (>> 10GB CSV) elaboro senza problemi, quindi può sicuramente funzionare abbastanza bene.

Grazie. È chiaro come scrivere le righe in un array, ma voglio lavorare anche con le colonne. Si suppone che dopo aver chiamato il numero di riga dall'array, sia necessario fare un'analisi aggiuntiva per trovare le colonne, ma come farlo?

 
Aleksey Vyazmikin:

Ci sono molte colonne, ogni colonna è un array separato.

Quindi è un array bidimensionale, una matrice. Scrivilo

 
Roffild:

L'analisi CSV stessa dovrebbe consistere di circa 10 righe. Un'intera classe non è affatto necessaria in questo caso.

Il compito è molto semplice anche per un principiante della programmazione. Cosa succede ai dati dopo la lettura dal file è il compito successivo, che solo il programmatore capisce.

Alexey, assumi un programmatore o inizia uno studio adeguato di programmazione. Altrimenti sprecherete soldi per classi che non potrete usare. Non ha senso cercare di guadagnare senza esperienza di programmazione.

P.S.

Non toccare Renat. Non ha niente da fare in questo argomento. Ha bisogno di riparare l'ottimizzazione.

Lo uso già da circa 3 anni, da MT4. È comodo, ma molto lento.

Naturalmente è facile leggere una stringa, ma trasformare il tutto in una struttura cellulare funzionante è molto più difficile.

Cosa vuol dire che non posso usare le classi? Lo faccio, e inoltre il dipendente di metaquote ha scritto la classe. E poi, ho effettivamente assunto una persona, ho pagato e mi aspettavo di avere un prodotto finito, ma mi è stato detto che va bene essere lenti... Ho creduto loro, ma ora ho esagerato con la memoria.

Motivazione: