Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 1747

 
Andrey Sokolov #:

Спасиб.

Получается разные функции с одинаковыми названиями.  А так чтоб именно можно было передавать разное количество параметров не сделать?

Можно, но меньше чем заложено, пример кнопки параметров много, но
//+------------------------------------------------------------------+ 
//| Создает кнопку                                                   | 
//+------------------------------------------------------------------+ 
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)                // приоритет на нажатие мышью 

Нарисует даже с минимумом  параметров

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

Приветствую. Подскажите, пожалста, можно ли сделать, и если да, то как.

Можно ли писать свои функции так, чтоб в написанные функции можно было передавать разное количество параметров?

Как, к примеру, в эту функцию, можно передать 4 или 5 параметров.


/********************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****************************/

Результат

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
 

Помогите, пожалуйста, никак не могу понять в чем ошибка

   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;

Хотел равномерную волну, но почему-то "0" идет два раза


 

Почему NormalizeDouble иногда не срабатывает? 

Принтом вывожу массив в журнал, почти все double значения выводятся до указанного 1 знака после запятой, а какие-нибудь 3-4 значения (из ста) с 15 знаками.

...

2021.11.15 04:01:07.821   Сов2 EURUSD,M1: 9.9
2021.11.15 04:01:07.724 Сов2 EURUSD,M1: 9.800000000000001
2021.11.15 04:01:07.675   Сов2 EURUSD,M1: 9.9
2021.11.15 04:01:07.626   Сов2 EURUSD,M1: 9.6
2021.11.15 04:01:07.577   Сов2 EURUSD,M1: 9.1

...

 
MakarFX #:

Помогите, пожалуйста, никак не могу понять в чем ошибка

Хотел равномерную волну, но почему-то "0" идет два раза


потому что условия путанные, на одной итерации цикла у Вас должен быть флаг up лишь в одном состоянии, а у Вас может быть true и в этой же итерации цикла стать false

я б вообще так написал:

   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 #:

потому что условия путанные, на одной итерации цикла у Вас должен быть флаг up лишь в одном состоянии, а у Вас может быть true и в этой же итерации цикла стать false

я б вообще так написал:

Спасибо Игорь, большое.
 

Подскажите, пожалуйста, как правильно сделать

   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]; 
     }

чтобы не вписывать все элементы которые хочу сложить, а просто указать 5 элементов

 
Sergey Zhukov #:

Если его переименовать в *.mq4 то все норм.

Если так компилировать то сыпятся ошибки.

У меня нет ошибок


 
Alexey Viktorov ,  Maxim KuznetsovMakarFX спасиб
 
MakarFX #:

У меня нет ошибок


У меня вот так выглядит:

e

Вообщем ладно, это не критично. Спасибо за помощь.

Причина обращения: