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

 
Vitaly Muzichenko #:

Копируем в массив 

Как получить максимальный high в массиве?

Дополнительно скопируй CopyHigh и их этого массива получи максимальный. Понимаю, что через …это… но другой вариант только перебором в цикле.

 
Alexey Viktorov #:

Дополнительно скопируй CopyHigh и их этого массива получи максимальный. Понимаю, что через …это… но другой вариант только перебором в цикле.

Так и сделал, но это дополнительное копирование. Через цикл также не вариант.

Оставлю тогда через CopyHigh

 
Vitaly Muzichenko #:

Так и сделал, но это дополнительное копирование. Через цикл также не вариант.

Оставлю тогда через CopyHigh

Я давно об этом думал. И пришёл к выводу, что если из массива MqlRates надо искать минимум\максимум, то лучше копировать необходимые данные в разные double массивы.

 
Vitaly Muzichenko #:

Копируем в массив 

Как получить максимальный high в массиве?

CopySymb[i].high
 
Vitaly Muzichenko #:

Копируем в массив 

Как получить максимальный high в массиве?

Можно прямо в коде прописать:

MqlRates CopySymb[];
double maxHigh;
int iMaxHi, len;  

if((len = CopyRates(mSymbol,PERIOD_CURRENT,0,6,CopySymb))<0) return;

iMaxHi = 0;
maxHigh = CopySymb[0].high;

for (int i = 1; i < len; i++)
  if(CopySymb[i].high > maxHigh) {
    maxHigh = CopySymb[i].high;
    iMaxHi = i;
  }

Print(iMaxHi, ": ", maxHigh);

И ничего страшного, что ArrayMaximum не работает с массивами MqlRates.

 
Mihail Matkovskij #:

Можно прямо в коде прописать:

а если подумать ?

даже в этом коротком коде есть жестокие ошибки

 
Maxim Kuznetsov #:

а если подумать ?

даже в этом коротком коде есть жестокие ошибки

Писал код онлайн. Посмотрел и исправил вроде все ошибки. Вставьте код в скрипт и компилятор покажет ошибки если они есть.

 
Mihail Matkovskij #:

Писал код онлайн. Посмотрел и исправил вроде все ошибки. Вставьте код в скрипт и компилятор покажет ошибки если они есть.

это компилятором не лечится,это просто надо знать: в результатах CopyXXX могут быть и 0 и EMPTY_VALUE. Редко, но метко. А EMPTY_VALUE это DBL_MAX - максимальное значение. Его-то вы и найдёте 

нет проверки на корректность значений полученных извне. 

 
Maxim Kuznetsov #:

это компилятором не лечится,это просто надо знать: в результатах CopyXXX могут быть и 0 и EMPTY_VALUE. Редко, но метко. А EMPTY_VALUE это DBL_MAX - максимальное значение. Его-то вы и найдёте 

нет проверки на корректность значений полученных извне. 

По вашему CopyRates вернет 0,  EMPTY_VALUE или DBL_MAX в массиве high? Вы серьезно? :)

Может быть покажете пример, где это происходит?

 
Mihail Matkovskij #:

По вашему CopyRates вернет 0,  EMPTY_VALUE или DBL_MAX в массиве high? Вы серьезно? :)

Может быть покажете пример, где это происходит?

А ArrayMaximum как будет действовать если наткнётся на 0,  EMPTY_VALUE или DBL_MAX в массиве double заполненном с помощью CopyHigh?

Где логика в вашем утверждении?

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