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

 

Можно сделать так: неизменяемая часть имени впереди, затем "RED-LINE", затем изменяемая часть имени.

Теперь префикс будет: неизменяемая часть имени плюс "RED-LINE".

 
Aleksei Stepanenko:

Можно сделать так: неизменяемая часть имени впереди, затем "RED-LINE", затем изменяемая часть имени.

Теперь префикс будет: неизменяемая часть имени плюс "RED-LINE".

Там то что впереди то-же изменяется. пока вопрос именно в том что это в середине названия.

 
Andrey Sokolov:

Там то что впереди то-же изменяется. пока вопрос именно в том что это в середине названия.

Ну нельзя-же так издеваться над тем кто пытается вам помочь…

Где создаются объекты? Как формируется имя объектов?

 
Alexey Viktorov:

Ну нельзя-же так издеваться над тем кто пытается вам помочь…

ок

 

Вопрос по iMAOnArray()

Есть код, как применить в 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];
 

Здравствуйте.

Подскажите как в советнике сделать "окошко" куда можно было бы вбить определенную цену, чтобы советник с ней потом работал. (см. картинку)

Файлы:
GBPUSDM5.png  35 kb
 
SanAlex:

Вот способ  -- здесь нашёл https://www.mql5.com/en/articles/81 

Это читал, там слишком тяжёлый и не оптимизированный код

 
SanAlex:

Вот способ  -- здесь нашёл https://www.mql5.com/en/articles/81 

Способ не из лучших

 
Vitaly Muzichenko:

Вопрос по iMAOnArray()

Есть код, как применить в 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[] должен быть буфером (если это индикатор)

А теперь погляди в стандартной поставке: \MQL5\Include\MovingAverages.mqh - там есть расчёт на буфере Такая-то-MAOnBuffer()

 
Artyom Trishkin:

Array[] должен быть буфером (если это индикатор)

А теперь погляди в стандартной поставке: \MQL5\Include\MovingAverages.mqh - там есть расчёт на буфере Такая-то-MAOnBuffer()

Спасибо!

Попробовал и получил ошибку, что-то делаю не так:

  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);
}
//+------------------------------------------------------------------+
Причина обращения: