Рассчитатьмедиану ценына заданном интервале с заданным количеством приближений.
Здравствуйте есть массив значений.
Задача написать функцию.
Параметры входа:
- массив содержит номера нужных элементов для расчета медианы - bufInBar[]
- размер массиваbufInBar[] - count
- Количество приближений в медиан - fokus
void medianaL0(constint &bufInBar[], int count, int fokus)
То есть есть класс
bufInBar[i] - используется для загрузки нужного элемента при расчете медианы
BP[bufInBar[i]].CenaPerioda; - по этому значению рассчитывается медиана
BP[bufInBar[i]].Period;
На выходе :
BP[bufInBar[i]].Mediana;
Заполняется в порядке возрастания например с 0 до 10.
То есть, если в условии fokus=10, то на интервале i<count десять значений
Получаем 15(L0) значение середины массива,далее получаем два массива от L0 вниз и L0 наверх, находим середину этих массивов и так до получения количества fokus(семи значений например)
--------------|--------------
-------|--------------|------
---|-------|------|-------|--
fokus=7
| - значение цены
Получаем 15(L0) значение середины массива,далее получаем два массива от L0 вниз и L0 наверх, находим середину этих массивов и так до получения количества fokus(семи значений например)
А если в массиве четное число элементов, какой элемент будет медианой или должно быть рассчитано как среднее из двух или еще как-то?
Я правильно понимаю, что нужно найти семь перцентилей: 12.5, 25, 37.5, 50, 62.5, 75, 87.5?
Если да, то делим количество элементов упорядоченного массива на 8 (7+1), и умножаем на номер нужного перцентиля. Получаем следующие индексы элементов: 3, 7, 11, 15, 18, 22, 26.
int index=ArraySize(bufInBar)*percentile/(fokus+1);
//где percentile - номер нужного перцентиля от 1 до fokus double value=bufInBar[index];
Так, или я не туда пошёл? Если так, то здесь самое важное создать экономный механизм ведения упорядоченного массива.
Я правильно понимаю, что нужно найти семь перцентилей: 12.5, 25, 37.5, 50, 62.5, 75, 87.5?
Если да, то делим количество элементов упорядоченного массива на 8 (7+1), и умножаем на номер нужного перцентиля. Получаем следующие индексы элементов: 3, 7, 11, 15, 18, 22, 26.
Так, или я не туда пошёл? Если так, то здесь самое важное создать экономный механизм ведения упорядоченного массива.
По массиву значений MA нужно найти медиану всего массива, далее медианы массивов полученных над/под первой медианой и т.д.
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
Рассчитать медиану цены на заданном интервале с заданным количеством приближений.
Здравствуйте есть массив значений.
Задача написать функцию.
Параметры входа:
- массив содержит номера нужных элементов для расчета медианы - bufInBar[]
- размер массива bufInBar[] - count
- Количество приближений в медиан - fokus
То есть есть класс
bufInBar[i] - используется для загрузки нужного элемента при расчете медианы BP[bufInBar[i]].CenaPerioda; - по этому значению рассчитывается медиана BP[bufInBar[i]].Period;На выходе :
Заполняется в порядке возрастания например с 0 до 10.
То есть, если в условии fokus=10, то на интервале i<count десять значений
будут равны от 1 до 10
Например
Непонятно, что за fokus
По идее, медиана - это значение элемента в середине упорядоченного массива. А в Вашем случае это что?
Пример:
Массив 30 значений цены МА, ищем середину упорядоченного массива.
Получаем 15(L0) значение середины массива,далее получаем два массива от L0 вниз и L0 наверх, находим середину этих массивов и так до получения количества fokus(семи значений например)
--------------|-------------- -------|--------------|------ ---|-------|------|-------|-- fokus=7 | - значение ценыПример:
Массив 30 значений цены МА, ищем середину упорядоченного массива.
Получаем 15(L0) значение середины массива,далее получаем два массива от L0 вниз и L0 наверх, находим середину этих массивов и так до получения количества fokus(семи значений например)
А если в массиве четное число элементов, какой элемент будет медианой или должно быть рассчитано как среднее из двух или еще как-то?
Пример:
Я правильно понимаю, что нужно найти семь перцентилей: 12.5, 25, 37.5, 50, 62.5, 75, 87.5?
Если да, то делим количество элементов упорядоченного массива на 8 (7+1), и умножаем на номер нужного перцентиля. Получаем следующие индексы элементов: 3, 7, 11, 15, 18, 22, 26.
Так, или я не туда пошёл? Если так, то здесь самое важное создать экономный механизм ведения упорядоченного массива.
А если в массиве четное число элементов, какой элемент будет медианой или должно быть рассчитано как среднее из двух или еще как-то?
Думаю легче брать целое четное значение.
если 15 элементов, то медиана 8.
Я правильно понимаю, что нужно найти семь перцентилей: 12.5, 25, 37.5, 50, 62.5, 75, 87.5?
Если да, то делим количество элементов упорядоченного массива на 8 (7+1), и умножаем на номер нужного перцентиля. Получаем следующие индексы элементов: 3, 7, 11, 15, 18, 22, 26.
Так, или я не туда пошёл? Если так, то здесь самое важное создать экономный механизм ведения упорядоченного массива.
По массиву значений MA нужно найти медиану всего массива, далее медианы массивов полученных над/под первой медианой и т.д.
Тогда вроде всё правильно, медиана первой части массива - это четверть общего массива, и это 25 перцентиль. А медиана второй части - 75 перцентиль.
Это:
равнозначно этому: