Поиск пары чисел оптимально близких к заданному константному числу - страница 3

 
Добавить еще одну дельту - для центра, еще ее можно на коэффициент умножить. Потом посчитать среднюю дельту их этих трёх дельт и найти минимальную.
 
Dr. Trader:

МНК как предложили ранее должно подойти
https://ru.wikipedia.org/wiki/Метод_наименьших_квадратов

Если двумя словами, то складывайте на ДельтаА + ДельтаВ, а возводите сначала дельты в квадрат - 
ДельтаА*ДельтаА + ДельтаВ*ДельтаВ

Если не понравится и разброс дельт будет всё равно большой - то возводите дельты в третью степень. Или в четвёртую. Итд.


Спасибо за вариант решения - сейчас посмотрел одну выборку, получается не плохо.

 
Dennis Kirichenko:

Ну наверное можно ввести условия ограничения для перекоса.

Вообще, выборку нужно подготовить для анализа. Например, удалить выбросы. Из текущих данных вот такой график получим:

Условия для перекоса вводить можно, но не константное, так как изначально я не знаю, какие могут быть результаты, а выбор надо будет сделать.

Выбросы там удалены предварительно - диапазон же был от 0 до 100, но шум можно удалять бесконечно, как я понимаю... Я просто взял отклонение в 0,5 с обеих сторон от константного числа.

Dennis Kirichenko:

А почему так? Не потеряем ли информационные качества выборки при этом?

Потому что нам надо учитывать предмет задачи - это настройки индикатора и сильный перекос с одной стороны не есть хорошо, лучше два малых перекоса с обеих сторон. Во всяком случае я так думаю.
 
Ivan Ivanov:

По моему , Вам нужно найти пару для которой выполнены следующие условия :

1. Максимум ( Дельта А , Дельта Б ) самое малое из всех пар.

2. Минимум ( Дельта А + Дельта Б )

3. Условие 1 имеет приоритет !


Честно, не понял... найти максимум и минимум в обоих массивах можно, но это же не значит, что мы получим их в паре...

 
Vitalii Ananev:

Вот кусочек моего кода. Эта функция используется для поиска ближайшей к текущей цене зоны поддержки. Максимумы всех возможных зон хранится в массиве Max[]. Переменная ZCount это ArraySize(Max). Я думаю ее можно переделать для вашего случая.


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

 
Dmitry Fedoseev:
Добавить еще одну дельту - для центра, еще ее можно на коэффициент умножить. Потом посчитать среднюю дельту их этих трёх дельт и найти минимальную.

Можете показать на цифрах? Я что-то не пойму, как получить дельту для центра...

 
Aleksey Vyazmikin:

Можете показать на цифрах? Я что-то не пойму, как получить дельту для центра...


Сложить края и поделить на 2.

 
Dmitry Fedoseev:

Сложить края и поделить на 2.


Без коэффициента ничего путного не выходит...

Как предлагаете рассчитывать коэффициент?

 
Aleksey Vyazmikin:

Без коэффициента ничего путного не выходит...

Как предлагаете рассчитывать коэффициент?


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

Может быть не по трем точкам лучше, а два параметра: ширина канала и отклонение от центра. Вообще это типичная задача для методов нечеткой логики.

 
Aleksey Vyazmikin:

Вот таблица с данными, и промежуточными вычислениями:

Нам нужно найти пару чисел наиболее близко расположенных к числу 5.

Если усреднить последний столбец, то получим число 1, очевидно, что те суммы дельт, которые меньше единицы подлежат более пристальному рассмотрению. В нашем случае стоит, видимо выбирать между вторым и третьем индексом-вариантом, но это вовсе не обязательно, так как у нас дельта А могла быть 0,51 ,а дельта Б 0 - казалось бы этот вариант в сумме довал 0,51 и был бы предпочтительней, но это не так, из-за более сильного смещения дельты А.

Возможно, Вам нужна та пара чисел, середина между которыми (среднее арифметическое, наиболее близка к заданному

Вычисления надо делать в EXCEL  или  на MQL ???