Erreurs, bugs, questions - page 427

 
uncleVic:

Obtient EMPTY_VALUE, car nous le retournons si le fichier n'est pas ouvert. S'il est plus pratique d'obtenir 0,0, renvoyer 0,0.

Et je dois rendre quelque chose. Lire un fichier qui ne s'est pas ouvert n'est pas bon.

A propos de l'erreur d'ouverture. Écrivez-le comme ceci :

Voici une capture d'écran du testeur. Est-ce que c'est la même chose dans le terminal ?


Oui, dans le terminal, c'est la même chose et l'erreur est la suivante :

La taille du fichier est de 20 mb, soit environ 2,5 millions de valeurs.

au tout début du test 20 fois pendant l'ouverture il a réussi

Au début du test, environ 20 fois, lorsque j'ai ouvert le fichier, j'ai réussi à obtenir les valeurs que je voulais, puis l'erreur 5004 continue de s'afficher - le fichier n'a pas pu être ouvert,

J'ai essayé avec 2 mb d'environ 400k valeurs - ça s'ouvre, mais personne ne veut en avoir plus, j'ai regardé les données

Gestionnaire de tâches, 2,5 gb de RAM suffisent. (encore 500 mb gratuits !)

 

Le CODE POLTERGHEIST a démarré dans mon ordinateur, si avant il n'ouvrait pas un fichier de 20 mb.

en ce moment il y a un test avec un fichier ouvert de 38 mb. avec 5.5 millions de valeurs (données de 2005),

mais depuis 2001 - environ 10 millions de valeurs et avec une taille inférieure à 65 mb, il ne s'ouvre pas. C'est intéressant - et on ne sait pas trop pourquoi ?

Документация по MQL5: Файловые операции / FileOpen
Документация по MQL5: Файловые операции / FileOpen
  • www.mql5.com
Файловые операции / FileOpen - Документация по MQL5
 
Renat:
Malheureusement, rien ne pourra plus aider avec la carte spécifiée. Si c'est un ordinateur portable, la situation est désespérée. Sinon, pour 1000-1500 roubles, vous pouvez acheter une carte graphique décemment puissante qui supprimera tous les problèmes de performance.


Alors dites-moi que mt4 \ mt5 par l'accélération 2D de DirectX fonctionne ou quoi ... ?


Quels sont les paramètres ci-dessus qui sont importants pour l'accélération des graphiques vectoriels ... ou tous ?

il y a une autre question ... les pilotes pour HD2000 intégrés au processeur, ne prennent officiellement pas en charge Windows Server 2008 r2 SP1 64bit, - les pilotes pour HD2000 intégrés au processeur.

mais seulement vista et 7ka 64 bit ....


cette compatibilité incomplète pourrait avoir un certain effet ... ?

(bien que les pilotes sont en place, le travail même dans les jeux HD exécuter...)


2. Qu'en est-il de la compatibilité matérielle des plateformes mt4/mt5 avec la vidéo 2D sur Windows Server 2008 r2 SP1 64bit ?


Quel est le meilleur fabricant à choisir ... radionique ... nVidia ?


des tests de vitesse et de compatibilité des adaptateurs pour mt4/mt5 ont été effectués .... ?


Merci.

 
Im_hungry:

Oui, dans le terminal, c'est pareil et l'erreur est la suivante :

Taille du fichier 20 mb, environ 2,5 millions de valeurs

Au début du test, environ 20 fois pendant l'ouverture, il était possible de

Au début du test, l'ouverture du fichier une vingtaine de fois était réussie, puis l'erreur 5004 continue de s'afficher - le fichier n'a pas pu être ouvert,

J'ai essayé avec 2 mb. environ 400 mille valeurs - il s'ouvre, mais il ne veut pas ouvrir plus grand, j'ai regardé les données

Gestionnaire de tâches, 2,5 gb de RAM suffisent (encore 500 mb de libre !). (encore 500 mb gratuits !)

Je n'ai pas lu beaucoup, mais le texte surligné a attiré mon attention... Est-ce que vous fermez le dossier ?

Traitez-vous correctement son descripteur ?

 
AlexSTAL:

Je n'ai pas beaucoup lu, mais le texte surligné a attiré mon attention... Est-ce que vous fermez le dossier ?

En général, traiter correctement son descripteur ?

La logique (à en juger par les codes donnés) est presque correcte. À l'exception du fait qu'il lit et écrit après avoir vérifié le handle (et ferme ensuite le fichier également).

Je pense que le problème est différent ici :

1. l'indicateur à chaque tick ouvre le fichier, écrit les données, ferme le fichier.

2. Le conseiller expert (je pense que c'est à chaque tick) ouvre le fichier, lit les données, ferme le fichier.

Comme cela se produit dans des flux différents, plus la taille du fichier est importante, plus il est possible que le Conseiller Expert se "heurte" au fichier ouvert par l'indicateur lors de son ouverture. Et comme l ' indicateur d'ouvertureFILE_SHARE_READ n'est pas utilisé, il y a des conséquences.

A mon avis, le traitement du problème peut être le suivant :

1) Ouvrir le fichier (à la fois dans l'indicateur et dans l'Expert Advisor) dans OnInit avec l'indicateur FILE_SHARE_READ.

2. Appeler FileFlush(handle) dans l'indicateur après l'écriture .

3. Fermez le fichier dans OnDeinit.

Comme ça.


Документация по MQL5: Стандартные константы, перечисления и структуры / Константы ввода/вывода / Флаги открытия файлов
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы ввода/вывода / Флаги открытия файлов
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы ввода/вывода / Флаги открытия файлов - Документация по MQL5
 
tester_el_pro:


Alors dites-moi que mt4 \ mt5 par l'accélération 2D de DirectX fonctionne ou quoi ... ?


Le terminal utilise le GDI normal de Windows qui nécessite un accélérateur 2D.

Lorsque vous choisissez une carte, prenez n'importe quelle 3D externe, même la moins chère - elle sera suffisante.
Et vous n'aurez pas à comparer les points de capacité de base des cartes vidéo.

 
uncleVic:

La logique (à en juger par les codes donnés) est presque correcte. À l'exception du fait qu'il lit et écrit après avoir vérifié le handle (et ferme ensuite le fichier également).

À mon avis, un remède au problème pourrait être le suivant :

1. ouvrir le fichier (à la fois dans l'indicateur et dans l'Expert Advisor) dans OnInit avec l'indicateur FILE_SHARE_READ.

2. Appeler FileFlush(handle) dans l'indicateur après l'écriture .

3. Fermez le fichier dans OnDeinit.

Comme ça.


Merci de le faire à l'avenir lors de l'utilisation en temps réel.

Je vais utiliser vos conseils à l'avenir pour travailler avec le fichier du conseiller expert et de l'indicateur.

 
AlexSTAL:

Je n'ai pas lu beaucoup, mais le texte surligné a attiré mon attention... Vous fermez le dossier ?

Traitez-vous le descripteur correctement ?

Oui, bien sûr - il voit le fichier mais ne veut pas le lire à cause de l'erreur d'ouverture 5004.
 
uncleVic:

La logique (à en juger par les codes donnés) est presque correcte. À l'exception du fait qu'il lit et écrit après avoir vérifié le handle (et ferme ensuite le fichier également).

Je pense que le problème est différent ici :

1. l'indicateur à chaque tick ouvre le fichier, écrit les données, ferme le fichier.

2. Le conseiller expert (je pense que c'est à chaque tick) ouvre le fichier, lit les données, ferme le fichier.

Comme cela se produit dans des flux différents, plus la taille du fichier est grande, plus il est probable que le fichier ouvert sera ouvert par l'indicateur. Et comme l ' indicateur d'ouvertureFILE_SHARE_READ n'est pas utilisé, il y a des conséquences.

A mon avis, le traitement du problème peut être le suivant :

1) Ouvrir le fichier (à la fois dans l'indicateur et dans l'Expert Advisor) dans OnInit avec l'indicateur FILE_SHARE_READ.

2. Appeler FileFlush(handle) dans l'indicateur après l'écriture .

3. Fermez le fichier dans OnDeinit.

C'est comme ça.



Je suis désolé, le travail de l'indicateur est différent,

1. avant de tester dans le terminal, je lance l'indicateur

2. il enregistre le temps de barre et sa valeur de corrélation sur chaque barre

3. je place le fichier dans le dossier du testeur, où il devrait se trouver C:{Program Files\MetaTrader 5\tester\Agent-127.0.0.1-3000\MQL5\Files.

4. je lance un Expert Advisor, qui fonctionne par ouverture de barres - et depuis 2005 il lit toutes les données enregistrées

Il lit (38 Mb), mais depuis 2002 il ne lit pas (67 Mb)

 

J'ai essayé d'enregistrer la même chose avec le même outil, mais dans mt4.

j'ai transféré le fichier bin dans le dossier mt5 tester - aucun des fichiers

il ne s'ouvre pas - erreur 5004, dans MT5 il ouvre toujours quelque chose.


J'ai implémenté l'enregistrement des données dans l'indicateur MT4 (toutes les données sont écrites correctement) comme suit :

      Corr = GetCorrelation();
      Pos = iBarShift(Symbol(), Period(), Times[CurrPos]);
      Buffer[Pos] = NormalizeDouble(Corr,3);
//------
      datetime bar2 = iTime(Symbol1, 0, Pos);
      Print("Buffer[Pos]...",Buffer[Pos],"...bar2...",bar2);
      handle= FileOpen("kor.bin", FILE_BIN|FILE_READ|FILE_WRITE, ";");
      if(handle<1) Print("can't open file error-",GetLastError());
      if (handle>=1)
       {
        FileSeek(handle,0,SEEK_END);
        FileWriteDouble(handle,bar2,DOUBLE_VALUE); 
        FileSeek(handle,0,SEEK_END);
        FileWriteDouble(handle,Buffer[Pos],DOUBLE_VALUE); 
        FileClose(handle);
       }
//------
      CurrPos++;

Mais la lecture dans mt5 par un EA reste la même :

double proverka()
{
 if (FileIsExist("kor.bin",0)==true) Print("ФАЙЛ ОБНАРУЖЕН = ...");
 handle= FileOpen("kor.bin", FILE_BIN|FILE_READ);
 if(handle < 0) Print("-----Неоткрывается :- Почему? Потому что произошла ошибка ",GetLastError());
 ulong file=FileSize(handle);
 ulong N = 0.0;
 double kor = 0.0;
 datetime bar[1];
 CopyTime(Symbol_1,NULL,0,1,bar);
 ulong New = (ulong) bar[0];
 while (N < file)
  {
   kor=FileReadDouble(handle); 
   N = FileTell(handle);
   //Print("1...kor=",kor,"N=",N,"file=",file,"New=",New);
   if (kor == New) 
    {
     double ss = FileReadDouble(handle);
     FileClose(handle);
     Print("2...ss=",ss);
     return (ss);
     break;
    }
   if (New < kor)
    {
     Print ("New=",New,"kor=",kor);
     return (0.0);
     break;
    }
  } 
 Print("ВСЕЕЕЕЕЕ",kor);
 FileClose(handle);
 return (kor);
}
//=

Est-il possible pour un EA dans mt5 d'ouvrir un fichier créé dans mt4 ?

Raison: