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

 

Vous pourriez faire ceci : la partie immuable du nom en premier, puis "RED-LINE", puis la partie modifiable du nom.

Maintenant le préfixe serait : la partie immuable du nom plus "RED-LINE".

 
Aleksei Stepanenko:

Vous pourriez faire ceci : la partie immuable du nom en premier, puis "RED-LINE", puis la partie modifiable du nom.

Maintenant le préfixe serait : la partie immuable du nom plus "RED-LINE".

Là, ce qui se trouve devant est également modifiable. Jusqu'à présent, la question est de savoir ce qui se trouve exactementau milieu du nom.

 
Andrey Sokolov:

Ce qui se trouve à l'avant change également. La question est de savoir ce qui se trouve exactementau milieu du titre.

Vous ne pouvez pas vous moquer de quelqu'un qui essaie de vous aider...

Où sont créés les objets ? Comment est formé le nom de l'objet ?

 
Alexey Viktorov:

Vous ne pouvez pas vous moquer de quelqu'un qui essaie de vous aider...

OK

 

Question suriMAOnArray()

Il existe un code, comment l'appliquer dans mql5 ?

   double buff[1];
   for(i = 0; i < counter; i++)
      Array[i] = 2.0 * ma(i, val) - ma(i, a);
   for(i = 0; i < counter - a; i++)
     // buf_3[i] = iMAOnArray(Array, 0, period, 0, MODE_SMMA, i); // Оригинал mql4
      buf_3[i] = iMA(NULL, 0, period, 0, MODE_SMMA, PRICE_LOW); ???
      CopyBuffer(10,0,i,1,buff); ???
      buf_3[i] = buff[0];
 

Bonjour.

Pouvez-vous me dire comment créer une "fenêtre" dans l'EA où vous pourriez entrer un certain prix afin que l'EA puisse travailler avec lui par la suite. (Voir photo)

Dossiers :
GBPUSDM5.png  35 kb
 
SanAlex:

Voici un moyen -- trouvé icihttps://www.mql5.com/en/articles/81

J'ai lu ça, c'est trop lourd et pas optimisé.

 
SanAlex:

Voici un moyen -- trouvé icihttps://www.mql5.com/en/articles/81

Ce n'est pas la meilleure façon

 
Vitaly Muzichenko:

Question suriMAOnArray()

Il existe un code, comment l'appliquer dans mql5 ?

   double buff[1];
   for(i = 0; i < counter; i++)
      Array[i] = 2.0 * ma(i, val) - ma(i, a);
   for(i = 0; i < counter - a; i++)
     // buf_3[i] = iMAOnArray(Array, 0, period, 0, MODE_SMMA, i); // Оригинал mql4
      buf_3[i] = iMA(NULL, 0, period, 0, MODE_SMMA, PRICE_LOW); ???
      CopyBuffer(10,0,i,1,buff); ???
      buf_3[i] = buff[0];

Array[] devrait être un tampon (si c'est un indicateur)

Maintenant, regardez dans le paquet standard : \MQL5\Include\MovingAverages.mqh - il y a un calcul sur le tampon tel-MAOnBuffer()

 
Artyom Trishkin:

Array[] devrait être un tampon (si c'est un indicateur)

Maintenant, regardez le paquet standard : \MQL5\Include\MovingAverages.mqh - il y a un calcul sur le tampon tel-MAOnBuffer()

Merci !

J'ai essayé et j'ai eu une erreur, je fais quelque chose de mal :

  double buff[];
   for(i = 0; i < counter; i++)
      Array_1[i] = 2.0 * ma_1(i, val_1) - ma_1(i, a);
   for(i = 0; i < counter - a; i++) {
      // buf_3[i] = iMAOnArray(Array_1, 0, period, 0, MODE_SMMA, i);
      SmoothedMAOnBuffer(rates_total, prev_calculated, i, period, Array_1, buff);
      buf_3[i] = buff[0];
   }
....

//+------------------------------------------------------------------+
int SmoothedMAOnBuffer(const int rates_total,const int prev_calculated,const int begin,const int period,const double& price[],double& buffer[])
{
//--- check period
   if(period<=1 || period>(rates_total-begin))
      return(0);
//--- save as_series flags
   bool as_series_price=ArrayGetAsSeries(price);
   bool as_series_buffer=ArrayGetAsSeries(buffer);
   ArraySetAsSeries(price,false);
   ArraySetAsSeries(buffer,false);
//--- calculate start position
   int start_position;
   if(prev_calculated==0) { // first calculation or number of bars was changed
      //--- set empty value for first bars
      start_position=period+begin;
      for(int i=0; i<start_position-1; i++)
         buffer[i]=0.0; // array out of range (188,16)
      //--- calculate first visible value
      double first_value=0;
      for(int i=begin; i<start_position; i++)
         first_value+=price[i];
      buffer[start_position-1]=first_value/period;
   } else
      start_position=prev_calculated-1;
//--- main loop
   for(int i=start_position; i<rates_total; i++)
      buffer[i]=(buffer[i-1]*(period-1)+price[i])/period;
//--- restore as_series flags
   ArraySetAsSeries(price,as_series_price);
   ArraySetAsSeries(buffer,as_series_buffer);
//---
   return(rates_total);
}
//+------------------------------------------------------------------+
Raison: