Questions d'un "mannequin - page 38

 

Et donc. C'est en train de se produire ! Même pas un an plus tard. J'ai pris ma décision ! J'ai vérifié la documentation de MQL5. J'ai commencé très petit : j'ai minimisé le code d'un indicateur pour tenter de simplifier et de comprendre sa structure et son fonctionnement. Puis j'ai été étourdi.

J'ai d'abord creusé Fractals - il semblait être étonnamment petit et très simple. Puis j'ai raisonné logiquement : il n'est pas raisonnable de faire glisser ce code d'un programme à l'autre, je devrais simplement appeler cet indicateur, le copier et utiliser les valeurs tampons déjà calculées. Si je ne me trompe pas de direction, j'ai été porté à l'étape de la quasi-standardisation et amené à un exemple avec les iFractals ("Est-ce que je l'ai bien fait ?"). (c)). J'ai réduit le code au maximum, supprimé tout ce qui était inutile et conventionnel, ne laissant que l'essentiel. Et qu'ai-je trouvé ? Le code de l'appel de l'indicateur n'est pas plus compact que le code original de l'indicateur lui-même en termes de taille et de lisibilité.

Les questions.

1. Quelle est la signification de iFractals ?

2. Qu'est-ce qui ne va pas chez moi ?

Merci !

P.S. : Ou s'agit-il simplement d'un cas particulier où il n'y a aucun avantage dans le montant du second code ?

 
x100intraday:

2. Qu'est-ce qui ne va pas chez moi ?

Ce n'est pas un forum pour les psychiatres, mais pour les programmeurs MQL. En général, on n'a pas envie d'aller fouiller dans les cafards des autres.

Soyez plus précis dans vos questions.
 

C'est une question de

de la vie et de la mort...

Quelle est la manière non criminelle d'obtenir la valeur de la barre ouverte [15625] H1 de l'échelle de temps ?

J'ai essayé, peu importe à quel point j'ai essayé... J'ai tout essayé, alors qui sait... Je sais que c'est 3 lignes de code... mais qui... le droit... le droit... pour qu'il n'y ait pas d'erreur...

 
BaTTLeBLooM:

C'est une question de

de la vie et de la mort...

Quel est le moyen non criminel d'obtenir la valeur de la barre ouverte [15625] de la fenêtre temporelle H1 ?

J'ai fait de mon mieux pour obtenir une erreur critique... J'ai essayé toutes sortes de choses, alors qui sait... Je sais que c'est 3 lignes de code... mais quels sont les... le droit... le droit... pour qu'il n'y ait pas d'erreur...


Veuillez me donner votre code.

 
Renat:

Veuillez nous donner votre code.

voici

double MTime ( int mode )
{

double iOpen_min [], iOpen_hour [], iOpen_4hour [] ;

ArraySetAsSeries ( iOpen_min, true ) ;
ArraySetAsSeries ( iOpen_hour, true ) ;
ArraySetAsSeries ( iOpen_4hour, true ) ;
int rates_open_min, rates_open_hour, rates_open_4hour ;
int err = 0 ;
faire
{
rates_open_min = CopyOpen ( NULL, PERIOD_M1, 0, 7501, iOpen_min ) ;
rates_open_hour = CopyOpen ( NULL, PERIOD_H1, 0, 20000, iOpen_hour ) ;
rates_open_4hour = CopyOpen ( NULL, PERIOD_H4, 0, 10000, iOpen_4hour ) ;
err ++ ;
}
while ( rates_open_min <= 0 || rates_open_hour <= 0 || rates_open_4hour <= 0) && err < 10 ) ;

double Minute2 = iOpen_min [ 0 ] - iOpen_min [ 2 ] ;
double Minute12 = iOpen_min [ 0 ] - iOpen_min [ 12 ] ;
double Hour = iOpen_min [ 0 ] - iOpen_min [ 60 ] ; // Hour
double Hour5 = iOpen_min [ 0 ] - iOpen_min [ 300 ] ; // 5 Hour
double Day = iOpen_min [ 0 ] - iOpen_min [ 1500 ] ; // Day
double Week = iOpen_min [ 0 ] - iOpen_min [ 7500 ] ; // Semaine
double Month = iOpen_hour [ 0 ] - iOpen_hour [ 625 ] ; // Mois
double Month5 = iOpen_hour [ 0 ] - iOpen_hour [ 3125 ] ; // Demi-année

double Month25 = iOpen_hour [ 0 ] - iOpen_hour [ 15625 ] ; // 3 ans

sur la dernière ligne du dernier opérateur, il y a toujours une erreur critique... Le conseiller expert peut même commencer à fonctionner dans le testeur de stratégie, puis, après un an et demi de fonctionnement, il génère une erreur et s'arrête.

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

l'erreur critique est le dépassement des limites de la matrice.

vous pourriez essayer ceci :

      do
         {    
            //if(err>0) Sleep(10);//желательно с паузой
            rates_open_min = CopyOpen ( NULL, PERIOD_M1, 0, 7501, iOpen_min );
            rates_open_hour = CopyOpen ( NULL, PERIOD_H1, 0, 20000, iOpen_hour );
            rates_open_4hour = CopyOpen ( NULL, PERIOD_H4, 0, 10000, iOpen_4hour );           
            err ++;
         }
      while ( ( rates_open_min < 7501 || rates_open_hour < 20000 || rates_open_4hour < 10000) && err < 10 );   

   if(rates_open_min<7501 || rates_open_hour<20000 || rates_open_4hour<10000) return(-1);//Данные не скопированы
   else
      {
      double Minute2 = iOpen_min [ 0 ] - iOpen_min [ 2 ];
      double Minute12 = iOpen_min [ 0 ] - iOpen_min [ 12 ];
      double Hour = iOpen_min [ 0 ] - iOpen_min [ 60 ];   // Час
      double Hour5 = iOpen_min [ 0 ] - iOpen_min [ 300 ];     // 5 Часов
      double Day = iOpen_min [ 0 ] - iOpen_min [ 1500 ];   // День
      double Week = iOpen_min [ 0 ] - iOpen_min [ 7500 ];  // Неделя
      double Month = iOpen_hour [ 0 ] - iOpen_hour [ 625 ];   // Месяц
      double Month5 = iOpen_hour [ 0 ] - iOpen_hour [ 3125 ];  // Полугодие
      double Month25 = iOpen_hour [ 0 ] - iOpen_hour [ 15625 ];  // 3 года
      }
 
Swan:

erreur critique - dépassement des limites du tableau.

d'une manière ou d'une autre, nous pouvons essayer de cette façon :

Cela ne change pas l'essence du problème... S'il ne copie pas les données plus loin... L'Expert Advisor n'effectuera pas les transactions comme avant, mais sans erreur...

Le problème est de savoir pourquoi cette situation se produit en premier lieu, si l'histoire est énorme... et vous ne pouvez pas l'utiliser...

 
Renat:

Veuillez fournir votre code.

Bon, comme il n'y a pas de réponse, je vais juste entrer )))) manuellement, puisqu'il n'y a qu'une seule valeur
 
BaTTLeBLooM:
Bon, comme il n'y a pas de réponse, je vais entrer )))) manuellement, puisqu'il n'y a qu'une seule valeur.

Vous n'avez pas de contrôles dans votre code. Que voulez-vous alors ?

 
BaTTLeBLooM:

Cela ne change rien au problème... s'il ne copie pas les données plus loin... L'Expert Advisor n'effectuera pas les transactions comme avant, mais sans erreur...

Le problème est de savoir pourquoi cette situation se produit, si l'histoire est énorme... et tu ne peux pas l'utiliser...

Les données seront copiées, mais pas toujours du premier coup... et après une erreur critique, le conseiller expert cesse de fonctionner.

while( ... rates_open_hour <= 0 // seule la quantité de données, disponible à ce moment, sera copiée, et le tableau, respectivement, peut être inférieur à 15625.


Cette situation est due à un manque de lecture des manuels :)

Документация по MQL5: Программы MQL5 / Ошибки выполнения
Документация по MQL5: Программы MQL5 / Ошибки выполнения
  • www.mql5.com
Программы MQL5 / Ошибки выполнения - Документация по MQL5