[АРХИВ] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 3. - страница 366

 

Добрый день!

Подскажите, пожалуйста, как найти 3 максимума (или минимума) на графике за указанный период, их запомнить и использовать для дальнейших вычислений?

Или подскажите ссылку на код.

Искала код на форуме, но через поиск не получилось.

Спасибо.

 
LOA:

Добрый день!

Подскажите, пожалуйста, как найти 3 максимума (или минимума) на графике за указанный период, их запомнить и использовать для дальнейших вычислений?

Или подскажите ссылку на код.

Искала код на форуме, но через поиск не получилось.

Спасибо.


Например, я задал по евробаксу период в одни сутки. Открываем М15. Посмотрите нижеприведённый скриншот. Границы суток указаны красными вертикальными линиями. Индикатор фракталов показывает, что минимумов и максимумов на этом интервале куда более трёх. Как же искомый Вами код должен разобраться, какие именнно из этих экстремумов Вам нужны?

 
LOA:

Добрый день!

Подскажите, пожалуйста, как найти 3 максимума (или минимума) на графике за указанный период, их запомнить и использовать для дальнейших вычислений?

Или подскажите ссылку на код.

Искала код на форуме, но через поиск не получилось.

Спасибо.

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

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

Владимир и Вадим, спасибо большое за ответ!

Один максимум я нахожу...

1.

mas_UP[]//массив верхних экстремумов.

int index = iHighest(NULL,0,2,MODE_HIGH,20,i);
      double MAX = mas_UP[index];//первый максимум

2. или так (с фракталами)

int size_up=ArrayRange(mas_UP,0);
      for (s=i;s<=size_up;s++);
      int index=ArrayMaximum(mas_UP);
      double MAX = UP[s];

а вот как дальше? затрудняюсь (ещё учусь)

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

if (MAX>0)
      int n=n+1; //счётчик экстремумов
      mas_UP[index]=0;

Но я не уверена, что это так.

 
LOA:

Владимир и Вадим, спасибо большое за ответ!

Один максимум я нахожу...

1.

2. или так (с фракталами)

а вот как дальше? затрудняюсь (ещё учусь)

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

Но я не уверена, что это так.


Так нужно именно три последних максимума на заданном интервале, или какие-то иные?
 
drknn:

Так нужно именно три последних максимума на заданном интервале, или какие-то иные?


Три максимума за период, не последних. Вернее не обязательно последних.

 
LOA:


Три максимума за период, не последних. Вернее не обязательно последних.


О как. Ну что-же, разверну Вам задачу полностью.

Существует заданный интервал времени. Необходимы три выборочные максимума из этого интервала.

Для решения этой задачки Вам понадобятся следующие вещи:

- Алгоритм распознавания границ заданного интервала

- Алгоритм нахождения максимумов

- Алгоритм распознавания нужных максимумов из найденных.

P.S.

Поскольку Вы заранее не знаете, какие именно максимумы понадобятся и как именно определить максимумы, то готового кода Вы не найдёте. Это значит, что последовательное решение только что перечисленных задач даст Вам именно тот код, который Вам нужен.

 
drknn:


О как. Ну что-же, Разверну Вам задачу полностью.

Существует заданный интервал времени. Необходимы три выборочные максимума из этого интервала.

Для решения этой задачки Вам понадобятся следующие вещи:

- Алгоритм распознавания границ заданного интервала

- Алгоритм нахождения максимумов

- Алгоритм распознавания нужных максимумов из найденных.


Правильно сформулированная задача-это уже почти решение. Спасибо.

С первым справлюсь, второй - тоже. Вот последний пункт - честно не знаю, но буду думать.

int n=0;//счётчик максимумов
      if (MAX>0)
      int n=n+1;
      mas_UP[index]=0;

Такой вариант - мысль правильная или рыть в другом направлении,т.е.

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

 
LOA:


Правильно сформулированная задача-это уже почти решение. Спасибо.

С первым справлюсь, второй - тоже. Вот последний пункт - честно не знаю, но буду думать.

Такой вариант - мысль правильная или рыть в другом направлении,т.е.

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


Пусть Вас сейчас код вообще не интересует - сделайте алгоритм - как именно должна программа? В противном случае будуте топтаться на месте. Любая программа - тупоголова - ей нужны точные инструкции. Для этого нужно знать точно, что именно должна делать программа. И только после этого мы можем выбрать способ облечь её в программный код.
 
drknn:

Пусть Вас сейчас код ввобще не интересует - сделайте алгоритм - как именно должна программа. В противном случае будуте топтаться на месте. Любая программа - тупоголова - ей нужны точные инструкции. Для этого нужно знать точно, что именно должна делать программа. И только после этого мы можем выбрать способ облечь её в программный код.

Ок. Будет алгоритм - завтра, а то в Питере уже полвторого ночи - силы кончились.
Причина обращения: