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

 
Alexandr Sokolov:

У меня в индикаторе не исполняется код на MQL5

Суть в том что если price == STO_LOWHIGH то всё работает корректно, а если  price == STO_CLOSECLOSE то функция статическим переменным присваивает только

... в обход цикла

но точно такая же функция корректно работает на MQL4

 
Alexandr Sokolov:

но точно такая же функция корректно работает на MQL4

Тогда надо уточнить что за массивы High[] Close[]

Если это из mql4 то они в mql5 недоступны, если пользовательские... Не могу ничего предположить.

 
Alexandr Sokolov:

Я хочу получить обычные maxHigh и minLow стохастика в рамках периода К по параметрам Low/High и Close/Close

Low/High при инициализации работает нормально, а Close/Close нет

Так проще ведь найти fmax() или fmin() из массива полученного CopyBuffer()

 
Alexey Viktorov:

Тогда надо уточнить что за массивы High[] Close[]

Если это из mql4 то они в mql5 недоступны, если пользовательские... Не могу ничего предположить.

Вот содержание этих буферов в MQL5

int count = rates_total - prev_calculated, copied = 0; if(count < (int)kperiod + (int)dperiod + (int)slowing) {count = (int)kperiod + (int)dperiod + (int)slowing;};
   if(mode == m1 && price == STO_LOWHIGH) {copied = CopyOpen(_Symbol,PERIOD_CURRENT,0,count,Open); if(copied != count) return(0);};
   if(price == STO_LOWHIGH) {copied = CopyHigh(_Symbol,PERIOD_CURRENT,0,count,High); if(copied != count) return(0);};
   if(price == STO_LOWHIGH) {copied = CopyLow(_Symbol,PERIOD_CURRENT,0,count,Low); if(copied != count) return(0);};
   copied = CopyClose(_Symbol,PERIOD_CURRENT,0,count,Close); if(copied != count) return(0);
 
Alexey Viktorov:

Так проще ведь найти fmax() или fmin() из массива полученного CopyBuffer()

Мне нужны значения не из всего буфера, а в рамках периода К
Иначе как это реализовать с учётом того что нужно копировать данные с учётом периода замедления?

 
Alexandr Sokolov:

Мне нужны значения не из всего буфера, а в рамках периода К
Иначе как это реализовать с учётом того что нужно копировать данные с учётом периода замедления?

Вот вчера делал аналогичное, только с массивами high и low

   for(i = limit; i < rates_total; i++)
    {
     UpperBuf[i] = high[ArrayMaximum(high, i-period, period)];
     LowerBuf[i] = low[ArrayMinimum(low, i-period, period)];
     MidBuf[i] = (UpperBuf[i]+LowerBuf[i])/2;
    }

Без переворота таймсерии. Так как заложено в mql5? нулевой бар слева.

Плюс ко всему, можно копировать буфер индикатора не весь, а только с указанного бара указанное количество. А вот fmax() и fmin() я ошибочно посоветовал. Имел ввиду именно ArrayMaximum()

 
Alexandr Sokolov:

Я хочу получить обычные maxHigh и minLow стохастика в рамках периода К по параметрам Low/High и Close/Close

Low/High при инициализации работает нормально, а Close/Close нет

для таймсерий есть стандартные функции

Maximum=iHigh(_Symbol,_Period,iHighest(_Symbol,_Period,MODE_HIGH,num,startbar));
Minimum=iLow(_Symbol,_Period,iLowest(_Symbol,_Period,MODE_LOW,num,startbar));
 
Taras Slobodyanik:

для таймсерий есть стандартные функции

Только для полноценного совета желательно начать прочтение с самого начала. Оттуда где был первый вопрос и дальше всё обсуждение.

 
Alexey Viktorov:

Только для полноценного совета желательно начать прочтение с самого начала. Оттуда где был первый вопрос и дальше всё обсуждение.

Вроде с самого начала посмотрел - человек перебирает таймсерию в поисках мин/макс.
Можно без перебора обойтись.

void KValues(int i)
  {
   if (price == STO_LOWHIGH)
      {
      vhigh=iHigh(_Symbol,_Period,iHighest(_Symbol,_Period,MODE_HIGH,kperiod,i));
      vlow=iLow(_Symbol,_Period,iLowest(_Symbol,_Period,MODE_LOW,kperiod,i));
      }
   else
      {
      vhigh=iClose(_Symbol,_Period,iHighest(_Symbol,_Period,MODE_CLOSE,kperiod,i));
      vlow=iClose(_Symbol,_Period,iLowest(_Symbol,_Period,MODE_CLOSE,kperiod,i));
      }
  }
(не проверял)
 
Taras Slobodyanik:

Вроде с самого начала посмотрел - человек перебирает таймсерию в поисках мин/макс.
Можно без перебора обойтись.

(не проверял)

Ему нужны значения стохастика.

Хотя... я уже сам запутался что ему нужно. Вроде условие по стохастику, а копируются бары...
Причина обращения: