Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 968

 
Yevhenii Levchenko:
Les citations sont-elles stockées dans le dossier testeur/histoire ?

Non.

\history\downloads\symbol\*.dat - archive de citations.

\histoire\\\*.hst - citations.

\tester\history\*.fxt - généré à partir des fichiers *.hst chaque fois que vous démarrez le test ou l'optimisation.

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

Question aux développeurs MT4 : fichiers de test

Sergey Basov, 2016.01.14 07:25

Je ne suis pas un développeur MT4, mais je peux répondre d'après mon expérience personnelle.

Les supprimer n'aura aucun effet. Ils seront simplement générés à nouveau lors du prochain test ou de la prochaine optimisation.

Les citations sont stockées dans des fichiers *.hst, à partir desquels le testeur génère des fichiers *.fxt, et à chaque fois ils sont générés à nouveau.


 
Sergey Basov:

Non.

\history\downloads\*.dat - archives de citations.

\histoire\\\*.hst - citations.

\tester\history\*.fxt - généré à partir des fichiers *.hst chaque fois que vous démarrez un test ou une optimisation.


Ce truc met beaucoup de pression sur le disque au démarrage... Pourquoi le testeur ne le supprime-t-il pas s'il le génère à nouveau à chaque fois ? Y a-t-il un moyen de le mettre en place ?

 
Nauris Zukas:

Bonjour, je voulais obtenir l'heure d'ouverture de la barre du mois en cours, mais j'ai obtenu une erreur 4074 (ERR_NO_MEMORY_FOR_HISTORY). Il est également intéressant de noter que si je commence à tester à partir du 1er juin, tout est correct, mais à partir du 2 juin, l'erreur commence à se produire. Comment résoudre le problème de ce mois-ci ?

Bonjour !

J'ai été confronté à la même erreur 4074(ERR_NO_MEMORY_FOR_HISTORY) lors d'un test avec les cotations d'un autre courtier. Et ce n'est pas le premier devis de tiers que j'utilise. Je n'ai pas eu cette erreur avec d'autres. Quelle est la raison de cette erreur, et comment la corriger, peut-être quelqu'un a-t-il déjà trouvé la solution ?

 

Pourquoi le code le plus simple dans mt5 fonctionne-t-il de manière complètement différente que dans mt4 ? Par exemple, le code suivant, qui calcule la valeur moyenne du tampon mt4 muwings:

for (int i=0; i<nLimit; i++){
         double value;
         for(int k=i; k<i+AveragePeriod; k++){
            value+=Buffer1[k];
         }
         AverageBuffer[i]=value/AveragePeriod;
      }

...ne fonctionne pas dans mt5. Pour que cela fonctionne de manière plus ou moins similaire (par la méthode de l'intuition), vous devez procéder comme suit :

 for (int i=0; i<nLimit; i++){
         double value;
         for(int k=i; k<i+AveragePeriod; k++){
            value+=Buffer1[k];
         }
         value/=(AveragePeriod+1);
         AverageBuffer[i]=value;
      }

Et puis, les 7 premiers tampons montrent des valeurs prohibitives. Tout le reste semble fonctionner correctement. Ma mâchoire s'est serrée pour une telle bagatelle).

Veuillez me conseiller sur la manière de résoudre ce problème correctement.

 

Ajout d'un commentaire entre les calculs et tout est redessiné :D

 for (int i=0; i<nLimit; i++){
         double value;
         for(int k=i; k<i+AveragePeriod; k++){
            value+=Buffer1[k];
         }
         if(i==2)
           

  Comment(value); // вот это добавил

         value/=(AveragePeriod+1);          AverageBuffer[i]=value;                }
Quel est le problème ?
 
Je n'arrive pas à trouver comment écrire une telle condition avec iFractal ? Si :
Premier Fractal_up< Second Fractal_up then.....
Et la même chose pour la fractale du bas
 
Vladimir Baskakov:
Je n'arrive pas à trouver comment écrire une telle condition avec iFractal ? Si :
Premier Fractal_up< Second Fractal_up then.....
Et la même chose avec la fractale du bas

Week-end. Faire des bêtises...

 
Vladimir Baskakov:
Je n'arrive pas à trouver comment écrire une telle condition avec iFractal ? Si :
Premier Fractal_up< Second Fractal_up then.....
Et la même chose avec la fractale du bas

hors du prêt, c'est comme ça qu'on cherche les fractales :

//_______________________________________________________________________
int GetLastFractals(int bar,int mode) // bar - с какого бара начинать поиск, mode = MODE_UPPER или MODE_LOWER , результат № бара где найден фрактал
  {
   int i=bar; 
   while(i<Bars && iFractals(NULL,0,mode,i)<_Point) i++;
   return(i);
  }
//_______________________________________________________________________

Vous devez vous appeler 2 fois pour trouver la première fractale et la suivante, à peu près comme ceci :

int barfrup_1 = GetLastFractals(1,MODE_UPPER);
int barfrup_2 = GetLastFractals(barfrup_1+1,MODE_UPPER);
 
Yevhenii Levchenko:

Ajout d'un commentaire entre les calculs et tout est redessiné :D

Quelle est l'astuce ?

ArraySetAsSeries(true) pour les tampons indicateurs.

 
Igor Makanu:

du prêt-à-porter, c'est comme ça qu'on cherche des fractales :

Vous devez vous appeler 2 fois pour trouver la première fractale et la suivante, comme ceci :

Merci, ça marche, une seule condition est remplie :

        if(barfrup_1<barfrup_2 && barfrdown_1<barfrdown_2)

Et j'ai besoin

        if(barfrup_1<barfrup_2 && barfrdown_1>barfrdown_2)

Et je ne peux pas ouvrir des positions avec elle pour une raison quelconque.

Raison: