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

 
Есть индикатор изображающий МА для разных ТФ (добавлен ниже).

Функция start()
int start()
{
   int counted_bars=IndicatorCounted();
   if(counted_bars>0) counted_bars--;
   int limit=Bars-counted_bars;
   for(int i=0; i<limit; i++) {
      BufferS[i]  = iMA(NULL,timeframe,PeriodMA,0,MODE_SMA,applied_price,
                    iBarShift(NULL,timeframe,Time[i],false));
   }
   for(i=0; i<limit; i++) {
      Buffer[i]  = iMAOnArray(BufferS,0,pUsr,0,MODE_SMA,i);
   }
   return(0);
}

Какую роль выполняет второй for-цикл? (линия и без него нормально рисуется)
   for(i=0; i<limit; i++) {
      Buffer[i]  = iMAOnArray(BufferS,0,pUsr,0,MODE_SMA,i);
   }
Файлы:
 
Volodymyr Zubov #:

Зачем отключать ? С этого сайта вредоносных программ быть неможет, от слова никогда!

В ней жестко заданы спреды для различных валютных пар, которые не зависят от серверов ДЦ, что требуется при оптимизациях советников.
 
svyatogor #:
Есть индикатор изображающий МА для разных ТФ (добавлен ниже).

Функция start()

Какую роль выполняет второй for-цикл? (линия и без него нормально рисуется)

Усредняет  BufferS

#property indicator_color1 NULL

вместо "NULL" поставь любой цвет и увидишь вторую МА

 
Volodymyr Zubov #:

Зачем отключать ? С этого сайта вредоносных программ быть неможет, от слова никогда!

Автообновление, бывает, срабатывает как вредоносная программа ))

 
Tretyakov Rostyslav #:

Усредняет  BufferS

#property indicator_color1 NULL

вместо "NULL" поставь любой цвет и увидишь вторую МА

Спасибо!
 

Как получить номер бара наивысшего и наименьшего значения за прошлый день?

Задача: выяснить, что появилось раньше = минимум, или максимум

    datetime t1=iTime(NULL,PERIOD_D1,1);
    double h=iHigh(NULL,PERIOD_D1,1);
    double l=iLow(NULL,PERIOD_D1,1);

--

P.S. Получилось так, но может есть ещё вариант?

    datetime t0=iTime(NULL,PERIOD_D1,0);
    datetime t1=iTime(NULL,PERIOD_D1,1);
    double bHigh[],bLow[];
    ArraySetAsSeries(bHigh,true);
    ArraySetAsSeries(bLow,true);
    if(CopyHigh(NULL,PERIOD_M1,t1,t0,bHigh)<1 ||
        CopyLow(NULL,PERIOD_M1,t1,t0,bLow)<1) return(0);
    int iH=ArrayMaximum(bHigh);
    int iL=ArrayMinimum(bLow);
    double hi,lo;
    if(iH<iL) {
      hi=bHigh[iH];
      lo=bLow[iL];
    } else {
      lo=bHigh[iH];
      hi=bLow[iL];
    }
 
похоже что нажимал на профилировщика
 
Vitaly Muzichenko #:

Как получить номер бара наивысшего и наименьшего значения за прошлый день?

Задача: выяснить, что появилось раньше = минимум, или максимум

--

P.S. Получилось так, но может есть ещё вариант?

На мой взгляд это лучший вариант.

Только вот это 

    double hi,lo;
    if(iH<iL) {
      hi=bHigh[iH];
      lo=bLow[iL];
    } else {
      lo=bHigh[iH];
      hi=bLow[iL];
    }

я не понял. 

 
Vitaly Muzichenko #:

 но может есть ещё вариант?

если задача решается для МТ4, то можно эти функции использовать:

https://docs.mql4.com/ru/series/ihighest

https://docs.mql4.com/ru/series/ilowest

единственное, что потребуется сделать - это узнать номера баров М1 начала дня и конца дня

 
Alexey Viktorov #:

На мой взгляд это лучший вариант.

Только вот это 

я не понял. 

Нужно перевернуть объект FIBO, если хай появился раньше

---

Igor Makanu #:

если задача решается для МТ4, то можно эти функции использовать:

https://docs.mql4.com/ru/series/ihighest

https://docs.mql4.com/ru/series/ilowest

единственное, что потребуется сделать - это узнать номера баров М1 начала дня и конца дня

Для мт4/5

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