Скачать MetaTrader 5

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

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Поделись программой в CodeBase. Получи доступ к миллионам трейдеров!
Reaper
140
Reaper 2011.10.21 14:07 
Здравствуйте.



Кто-то может помочь мне решить эту "проблему".



ArrayMinimum () и ArrayMaximum () просто возвращают соответственно индекс самым минимальным (маленьких) и самый максимум (самый большой) значение в массив, переданные ему.

Так что дать абсолютной Минимальные и максимальные значения, из массива.



Но что, если один поиск относительного минимума и максимума?Второй минимум, третий и т.д.?

Я имею в виду не маленьких или большая ценность, а второй маленький и второй больше (то есть, если большая ценность составляет 5, второй крупнее 3 и т.д.).




Как это сделать с помощью всего ArrayMaximum () / Минимальная () функции, или просто, как немногие строки кода, не поворачивая с ума 50 строк кода?



Спасибо!

PS: я не вижу никаких других *Простое* решение, чем:
- Использовать такую ​​функцию, чтобы найти абсолютное макс (или минут).
- Как только локализованные он, удаленные из массива
- Reperform поиска: потому что во-первых, макс элемент, удалены, естественно новых макс старый второй
o_o
Модератор
23689
o_o 2011.10.21 14:10  
Reaper:

PS: я не вижу никаких других *Простое* решение, чем:
- Использовать такую ​​функцию, чтобы найти абсолютное макс (или минут).
- Как только локализованные он, удаленные из массива
- Reperform поиска: потому что во-первых, макс элемент, удалены, естественно новых макс старый второй

вы сами себе ответили. вот так и делайте.

но можно просто отсортировать.

Reaper
140
Reaper 2011.10.21 14:14  
sergeev:

вы сами себе ответили. вот так и делайте.

но можно просто отсортировать.

Да, но должен быть другой путь, более простой и прямой, используя только функции, не копировать, не удалять, не сортировать ...

o_o
Модератор
23689
o_o 2011.10.21 17:53  
Reaper:
Да, но должен быть другой путь, более простой и прямой, используя только функции, не копировать, не удалять, не сортировать ...

можете еще запоминать в параллельный массив.
Alexandr Gavrilin
31285
Alexandr Gavrilin 2011.10.21 18:41  
может просто отсортировать ? на мой взгляд это будет проще.
Reaper
140
Reaper 2011.10.21 18:41  
sergeev:
можете еще запоминать в параллельный массив.
Я даже не могу найти практическое решение этой проблемы.

Идея заключается в выборе второй по величине элемента, а не первого. Это основная функция и простой, но не понимаю, потому что он требует так много операций с массивами.
Я уверен, что вы можете сделать только с ArrayMaximum() и только две строки кода, но я не могу найти правильную комбинацию.

ArraySort() .. исключено, я знаю, что такой подход, но именно поэтому этой теме появился на свет.

Может быть, я мог бы попробовать удалить наибольший элемент, а также выполнять поиск, и как говорилось выше, новый элемент будет больше, на самом деле во-вторых, потому что первый был отменен.

Но даже здесь я считаю, хороший код решение.

Я пытаюсь использовать ArrayBsearch() для этой цели, но игнорируя мой код и в области алгоритмов по-прежнему много, я заранее приношу извинения.

Если у вас есть решение .. Я рад его видеть.

Спасибо!
Документация по MQL5: Операции с массивами / ArrayBsearch
Документация по MQL5: Операции с массивами / ArrayBsearch
  • www.mql5.com
Операции с массивами / ArrayBsearch - Документация по MQL5
Reaper
140
Reaper 2011.10.21 18:45  
DKeN:
может просто отсортировать ? на мой взгляд это будет проще.
Я не хочу заказать с ArraySort().
Слишком кода.
Это не так просто, как вы думаете, хоть это может показаться.

Я хочу использовать ArrayMaximum() рекурсивно, так что первый входящий звонок, самый важный фактор, безусловно, и я хочу шанс сделать второй вызов, что исключает первый, второй курс второго элемента. Но я не вижу возможности это сделать.
Документация по MQL5: Операции с массивами / ArrayMaximum
Документация по MQL5: Операции с массивами / ArrayMaximum
  • www.mql5.com
Операции с массивами / ArrayMaximum - Документация по MQL5
Aleksey Sergan
23685
Aleksey Sergan 2011.10.21 19:03  
Reaper:
Я даже не могу найти практическое решение этой проблемы.

Идея заключается в выборе второй по величине элемента, а не первого. Это основная функция и простой, но не понимаю, потому что он требует так много операций с массивами.
Я уверен, что вы можете сделать только с ArrayMaximum() и только две строки кода, но я не могу найти правильную комбинацию.

ArraySort() .. исключено, я знаю, что такой подход, но именно поэтому этой теме появился на свет.

Может быть, я мог бы попробовать удалить наибольший элемент, а также выполнять поиск, и как говорилось выше, новый элемент будет больше, на самом деле во-вторых, потому что первый был отменен.

Но даже здесь я считаю, хороший код решение.

Я пытаюсь использовать ArrayBsearch() для этой цели, но игнорируя мой код и в области алгоритмов по-прежнему много, я заранее приношу извинения.

Если у вас есть решение .. Я рад его видеть.

Спасибо!

у меня 17 строк в функции, которая выполняет поиск элемента с заданным уровнем максимализма, у кого меньше?

этой же функцией можно  искать минимум с заданным уровнем 

Файлы:
fnd.mq5 2 kb
Olegs Kucerenko
12041
Olegs Kucerenko 2011.10.22 02:04  

Приветы! У меня так получилось найти второй(к уменьшению) максимум.

int i=ArrayMaximum(massiv,0,WHOLE_ARRAY); //ищем индекс с максимум
double tt=massiv[i];                      //сохраняем в промежуточную переменную значение
massiv[i]=-1*DBL_MAX;                     //присваеваем минимальное значение
int i2=ArrayMaximum(massiv,0,WHOLE_ARRAY);     //определяем новый максимум(второй будет)
Print (massiv[i2]);
massiv[i]=tt;                             //возвращаем в массив по измененному индексу значение ,если надо

 

Aleksey Sergan
23685
Aleksey Sergan 2011.10.22 06:30  
Karlson:

Приветы! У меня так получилось найти второй(к уменьшению) максимум.

 

так нечестно. Вы портите содержимое массива - вдруг это таймсерия?.
Yedelkin
4532
Yedelkin 2011.10.22 11:16  
gdtt:
Вы портите содержимое массива - вдруг это таймсерия?.

Разве речь шла о таймсериях? (Может, я что-то и пропустил).

И ничего он не "портит". Сначала запоминает tt=massiv[i], затем возвращает massiv[i]=tt. 

1234
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий