как найти ArrayMaximum () и минимальная (), не абсолютные значения? - страница 3

 

Если следовать моему методу,то самое минимальное значение в массиве мы изменим на допустимый максимум.Тем самым гарантировано исключим его из следующей выборки.

Таким образом получится так: 

 

 int j = ArrayMinimum(minim,0,WHOLE_ARRAY); // search index with a minimum value
 double zz = minim[j]; // save it in an intermediate variable value
 minim[j] =DBL_MAX; // assigns the maximum value
 int j2=ArrayMinimum(minim,0,WHOLE_ARRAY); // define a new low (index j2)(second use)
 Print("min(second): ", minim[j2]);
 minim[j] = zz; // return to the array  original value , if necessary   
 
Ошибку нашел у себя.Исправил.После второй выборки нужна новая переменная для индекса.А возвращать значения по первому индексу.Это при условии,что требуется возврат.
 
Karlson:

Если следовать моему методу,то самое минимальное значение в массиве мы изменим на допустимый максимум.Тем самым гарантировано исключим его из следующей выборки.

Таким образом получится так: 

 

Это не работает.

В "моей" версии в должности до, некоторые изменения производят значение "0", некоторые значения изменить производить такие "-93948343439300403"

и это не смысл с объемами. (Надо что-то вроде 600, 1000 и т.д. .. Минимальные, не -93948343439300403 "




Почему вы используете j2?

Эта версия производят тот же результат вашего примера: (без j2, не инициализации)

 

int j = ArrayMinimum(minim,0,WHOLE_ARRAY); // search index with a minimum value
double zz = minim[j]; // save it in an intermediate variable value
minim[j] = DBL_MAX; // assigns the maximum value
int j2=ArrayMinimum(minim,0,WHOLE_ARRAY); // define a new low (index j2)(second use)
Print("min(second): ", minim[j2]);
minim[j] = zz; // return to the array original value , if necessary

 

 

Предполагаем массив {-1000,-900,-800,-700,-600,-500}.

Нам требуется из него достать второй минимум =  -900;

1.Сначала находим -1000

2.Присваиваем новое значение DBL_MAX

3.По новому поиску найдем -900 (будет минимумом)

double massiv[]= {-1000,-900,-800,-700,-600,-500};
int OnStart()
{
int i=ArrayMinimum(massiv,0,WHOLE_ARRAY); 
double tt=massiv[i];                      
massiv[i]=DBL_MAX;                     
int i2=ArrayMinimum(massiv,0,WHOLE_ARRAY);    
Print (massiv[i2]);
massiv[i]=tt;
return(0);
}

 

Документация по MQL5: Стандартные константы, перечисления и структуры / Именованные константы / Константы числовых типов
Документация по MQL5: Стандартные константы, перечисления и структуры / Именованные константы / Константы числовых типов
  • www.mql5.com
Стандартные константы, перечисления и структуры / Именованные константы / Константы числовых типов - Документация по MQL5
Файлы:
zz.mq5  1 kb
 

Этот способ работы:

просто напечатать новое значение, после обновления значения minim[j] = zz


не нуждается в использовании "double", int работы.

 

int j = ArrayMinimum(minim,0,WHOLE_ARRAY); // search index with a minimum value
int zz = minim[j]; // save it in an intermediate variable value
minim[j] = DBL_MAX; // assigns the maximum value
j=ArrayMinimum(minim,0,WHOLE_ARRAY); // define a new low (index j2)(second use)
Print("min(second): ", minim[j]);
minim[j] = zz; // return to the array original value , if necessary 

Print("min2(second): ", minim[j]);   


 
Karlson:

Предполагаем массив {-1000,-900,-800,-700,-600,-500}.


Нет.

Мы предполагаем, массив {23123, 1222, 3434, 10000, 12121, 500, 23223}

volumes значение от 0 (текущий бар) для создания резервных;

неупорядоченной array.


ArrayMinumum() только поднять минимальный (500), но не его заказать.

Это все о, чтобы найти второй минимум (1222), третий (​​3434) и др.

различных индексов, не отсортированы с ArrayMinimum() Нет.

 

Сортированный или нет массив значения не имеет.

double massiv[]=  {23123, 1222, 3434, 10000, 12121, 500, 23223};
int OnStart()
{
int i=ArrayMinimum(massiv,0,WHOLE_ARRAY); 
Print ("Absolut MIN= ",massiv[i]);
double tt=massiv[i];                      
massiv[i]=DBL_MAX;                     
int i2=ArrayMinimum(massiv,0,WHOLE_ARRAY);    
Print ("Second MIN= ",massiv[i2]);
massiv[i]=tt;
return(0);
}

 

 

 
Karlson:

Сортированный или нет массив значения не имеет. 

Я не хотел использовать "double", и я использую integer.
Я получил такие ценности, как -94929293923942

но потому, что DBL_MAX
...
я использовал INT_MAX
и он работает сейчас.
Спасибо человеку.



Это, кажется, самый удобный, чистый и экономичный способ найти относительную макс и мин, в массиве, используя ArrayMinimum()/Maximum()

Миссия выполнена :D

спасибо

Документация по MQL5: Операции с массивами / ArrayMinimum
Документация по MQL5: Операции с массивами / ArrayMinimum
  • www.mql5.com
Операции с массивами / ArrayMinimum - Документация по MQL5
 
Если вы считаете объем,то отрицательных значений быть не может наверное.Можно использовать UINT_MAX   (0-....).
Документация по MQL5: Стандартные константы, перечисления и структуры / Именованные константы / Константы числовых типов
Документация по MQL5: Стандартные константы, перечисления и структуры / Именованные константы / Константы числовых типов
  • www.mql5.com
Стандартные константы, перечисления и структуры / Именованные константы / Константы числовых типов - Документация по MQL5
 
Karlson:
Если вы считаете объем,то отрицательных значений быть не может наверное.Можно использовать UINT_MAX   (0-....).
Spasibo