Voracité de la mémoire RAM de MT5, problèmes de lecture/écriture de gros fichiers - page 4

 
Maxim Dmitrievsky:

essayez de lire votre fichier comme ceci

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

Je n'ai pas le temps d'ouvrir le terminal pour le moment, peut-être demain).

Il est donc écrit"à partir d'un fichier binaire", où puis-je en trouver un ?

Je vais attendre "demain" :)
 
Aleksey Vyazmikin:

Il est donc écrit"à partir d'un fichier binaire", où puis-je en obtenir un ?

Je vais attendre "demain" :)

où le trouvez-vous ?

 
Maxim Dmitrievsky:

où le trouvez-vous ?

Dans ce cas particulier, le fichier est collé à partir d'autres fichiers CSV dans Excel. Les fichiers ont été générés à l'origine par MT5, dans ce cas précis.

 
Aleksey Vyazmikin:

Dans ce cas particulier, le fichier est collé à partir d'autres fichiers CSV dans Excel. Il a été généré à l'origine par MT5, dans ce cas précis.

Alors écrivez dans le binaire de mt5. Est-ce un tableau ? Il suffit d'écrire le tableau dans le fichier en une fois et de le charger plus tard.

 

Forum sur le trading, les systèmes de trading automatisés et les tests de stratégies de trading

Caractéristiques du langage mql5, subtilités et astuces

fxsaber, 2018.04.06 17:08

Probablement pas beaucoup de gens font ça, donc voici
// Заполнение массива строками из файла - классика
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);
}
J'utilise moi-même la deuxième option lorsque j'ai besoin de râper quelque chose. Il est probablement plus rapide aussi, mais je ne l'ai pas testé.

À titre de référence, les indicateurs possibles sont

Forum sur le trading, les systèmes de trading automatisé et les tests de stratégies de trading

Scripts : ThirdPartyTicks

fxsaber, 2018.04.18 23:10

Parses (ZIP+CSV) à trois millions de ticks par seconde. Ça doit être rapide.

Je traite les ZIP de plus de 3 Go (>> CSV de 10 Go) sans problème, donc cela pourrait certainement fonctionner correctement.

 

L'analyse CSV elle-même devrait comporter environ 10 lignes. Une classe entière n'est pas du tout nécessaire dans ce cas.

La tâche est très simple, même pour un débutant en programmation. Ce qui arrive aux données après la lecture du fichier est la tâche suivante, que seul le programmeur comprend.

Alexey, engage un programmeur ou commence une véritable étude de la programmation. Sinon, vous gaspillerez de l'argent pour des cours que vous ne pourrez pas utiliser. Il est insensé d'essayer de gagner de l'argent sans expérience de la programmation.

P.S.

Ne touchez pas à Renat. Il n'a rien à faire sur ce sujet. Il doit réparer l'optimisation.

 
Maxim Dmitrievsky:

Alors écrivez dans le binaire de mt5. Est-ce un tableau ? Il suffit d'écrire le tableau dans le fichier en une seule fois et de le charger plus tard.

Il y a plusieurs colonnes, chaque colonne est un tableau séparé.

 
fxsaber:

À titre de référence, les chiffres suivants sont possibles

Je traite plus de 3GB ZIP (>> 10GB CSV) sans aucun problème, donc cela peut certainement fonctionner assez bien.

Merci. La façon d'écrire des lignes dans un tableau est claire, mais je veux aussi travailler avec des colonnes. Il est supposé qu'après avoir appelé le numéro de ligne du tableau, vous devez effectuer une analyse supplémentaire pour trouver les colonnes, mais comment le faire ?

 
Aleksey Vyazmikin:

Il y a plusieurs colonnes, chaque colonne est un tableau séparé.

Donc c'est un tableau à 2 dimensions, une matrice. Écrivez-le

 
Roffild:

L'analyse CSV elle-même devrait comporter environ 10 lignes. Une classe entière n'est pas du tout nécessaire dans ce cas.

La tâche est très simple, même pour un débutant en programmation. Ce qui arrive aux données après la lecture du fichier est la tâche suivante, que seul le programmeur comprend.

Alexey, engage un programmeur ou commence une véritable étude de la programmation. Sinon, vous gaspillerez de l'argent pour des cours que vous ne pourrez pas utiliser. Il est insensé d'essayer de gagner de l'argent sans expérience de la programmation.

P.S.

Ne touchez pas à Renat. Il n'a rien à faire dans ce domaine. Il doit réparer l'optimisation.

Je l'utilise depuis environ 3 ans déjà, depuis MT4. C'est pratique, mais vraiment lent.

Bien sûr, il est facile de lire une chaîne de caractères, mais transformer le tout en une structure cellulaire fonctionnelle est beaucoup plus difficile.

Comment ça, je ne peux pas utiliser les classes ? Oui, et en plus, l'employé de méta-citation a écrit la classe. Et puis, j'ai effectivement engagé une personne, j'ai payé et je m'attendais à obtenir un produit fini, mais on m'a dit que c'était normal d'être lent... Je les ai crus, mais maintenant j'ai dépassé les limites de la mémoire.