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

 
Andrey Sokolov #:

Merci.

Il s'avère qu'il existe différentes fonctions portant le même nom. Et vous ne pouvezpas faire en sorte qu'il soit possible de passer un nombre différent de paramètres ?

C'est possible, mais c'est moins que les paramètres, l'exemple du bouton a beaucoup de paramètres, mais
.
//+------------------------------------------------------------------+ 
//| Создает кнопку                                                   | 
//+------------------------------------------------------------------+ 
bool ButtonCreate(const long              chart_ID=0,               // ID графика 
                  const string            name="Button",            // имя кнопки 
                  const int               sub_window=0,             // номер подокна 
                  const int               x=0,                      // координата по оси X 
                  const int               y=0,                      // координата по оси Y 
                  const int               width=50,                 // ширина кнопки 
                  const int               height=18,                // высота кнопки 
                  const ENUM_BASE_CORNER  corner=CORNER_LEFT_UPPER, // угол графика для привязки 
                  const string            text="Button",            // текст 
                  const string            font="Arial",             // шрифт 
                  const int               font_size=10,             // размер шрифта 
                  const color             clr=clrBlack,             // цвет текста 
                  const color             back_clr=C'236,233,216',  // цвет фона 
                  const color             border_clr=clrNONE,       // цвет границы 
                  const bool              state=false,              // нажата/отжата 
                  const bool              back=false,               // на заднем плане 
                  const bool              selection=false,          // выделить для перемещений 
                  const bool              hidden=true,              // скрыт в списке объектов 
                  const long              z_order=0)                // приоритет на нажатие мышью 

Il dessinera même avec un minimum de paramètres

ButtonCreate(0,InpName,0,x,y,x_size,y_size,InpCorner);
 
Andrey Sokolov #:

Salutations. Pouvez-vous me dire si et comment cela peut être fait ?

Est-il possible d'écrire vos propres fonctions de manière à pouvoir passer un nombre différent de paramètres aux fonctions écrites ?

Comment, par exemple, dans cette fonction, vous pouvez passer 4 ou 5 paramètres.


/********************Script program start function*******************/
void OnStart()
 {
  double a = 2.87,
         b = 3.62,
         c = 0;
  Print("Fu(a, b) ", Fu(a, b));
  Fu(a, b, c);
  Print("Fu(a, b, c) ", c);
 }/******************************************************************/
double Fu(double x, double y)
 {
  return x*y;
 }/******************************************************************/
void Fu(double x, double y, double & z)
 {
  z = x+y;
 }/******************************************************************/
/*****************************End program****************************/

Le résultat est

2021.11.15 00:01:54.629 00 USDJPY,M15: Fu(a, b, c) 6.49
2021.11.15 00:01:54.629 00 USDJPY,M15: Fu(a, b) 10.3894
 

Aidez-moi, je n'arrive pas à comprendre ce qu'est l'erreur.

   for(i=limit;i>=0;i--)
     {
      if(up)
        {
         if(Label1Buffer[i+1]<Input1){a+=1;}
         else {up=false;}
        }
      if(!up)
        {
         if(Label1Buffer[i+1]>0){a-=1;}
         else {up=true;}
        }
      Label1Buffer[i]=a;

Je voulais une onde uniforme, mais pour une raison quelconque, le "0" est double.


 

PourquoiNormalizeDouble ne fonctionne-t-il pas toujours ?

Lorsque j'imprime un tableau dans le journal, presque toutes les valeurs doubles sont imprimées avec la première décimale spécifiée, et quelques 3-4 valeurs (sur une centaine) avec 15 chiffres.

...

2021.11.15 04:01:07.821Sov2EURUSD,M1 : 9,9
2021.11.15 04:01:07.724 Sov2 EURUSD,M1 : 9,800000000000001
2021.11.15 04:01:07.675 Sov2 EURUSD,M1 : 9.9
2021.11.15 04:01:07.626 Sov2 EURUSD,M1 : 9.6
2021.11.15 04:01:07.577 Sov2 EURUSD,M1 : 9.1

...

 
MakarFX #:

Aidez-moi, je n'arrive pas à comprendre ce qu'est l'erreur.

Je voulais une onde uniforme, mais pour une raison quelconque, le "0" est double.


parce que les conditions sont confuses, sur une itération de la boucle vous ne devriez avoir le drapeau "up" que dans un seul état, et vous pouvez avoir "true" et dans la même itération de la boucle devenir "false".

Je l'écrirais de cette façon en général :

   int y = 0, shift = 1;
   const int max_value = 100;
   const int min_value = 0;
   for(int i = rates_total - 1; i >= 0; i--)
   {
      Label1Buffer[i] = y; 
      y += shift;
      if(y >= max_value || y <= min_value) shift *= -1;
   }
 
Igor Makanu #:

parce que les conditions sont confuses, sur une itération de la boucle vous ne devriez avoir le drapeau "up" que dans un seul état, mais vous pouvez avoir "true" et dans la même itération de la boucle devenir "false".

Je l'écrirais de cette façon en général :

Merci beaucoup, Igor.
 

Pouvez-vous me dire comment le faire correctement

   for(i=limit;i>=0;i--)
     {
      Label1Buffer[i] = MathRand(); 
      Label2Buffer[i] = Label1Buffer[i+1]+Label1Buffer[i+2]+Label1Buffer[i+3]+Label1Buffer[i+4]+Label1Buffer[i+5]; 
     }

de ne pas entrer tous les éléments que je veux additionner, mais juste spécifier 5 éléments

 
Sergey Zhukov #:

Si vous le renommez en *.mq4, tout va bien.

Si vous le compilez de cette façon, vous obtenez des erreurs.

Je n'ai pas d'erreurs


 
MakarFX #:

Je n'ai pas d'erreurs.


Le mien ressemble à ceci :

e

De toute façon, ce n'est pas critique. Merci pour votre aide.

Raison: