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

 
Aleksey Vyazmikin:

Спасибо за развернутый ответ.

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

Однако, я пока остановился на сложении дельт возведенных в квадрат.

Не совсем понял, про i - данная выборка отфильтрованная и не вся - диапазон разброса чисел от 0 до 100.

Меня тревожит другое, дадут ли разные варианты один и тот же результат...?

Про спред - я с Вами не соглашусь - мои наблюдения показывают, что важней определить точку (математические измерения) без учета спреда, а уже отложенный ордер выставлять с учетом спреда, т.е. нет смысла искусственно менять размер бара. Дело в том, что реальные спреды формируются участниками рынка, коими мы через кухни не становимся, а мы лишь получаем отрисовку свечей (информацию о реальных действиях крупных участников Форекс), которую в случае необходимости хэджируют спредом ДЦ.

i - пояснение к картинке, это меняющиеся номера координат в формулах для нормы. У Вас размерность пространства два, дельт - две штуки.

Результаты, конечно, будут разные. Меняем понятие близости - меняется состав точек, близких к точке (0, 0). Если тревожит, поищете подробнее, как меняется. Анализ делается с помощью единичной "окружности" - линии на плоскости, где расположены точки с расстоянием от точки (0,0), а это и есть норма, равным единице. Все они пересекают координатные оси в точках плюс-минус 1. Для евклидовой нормы (суммы квадратов) это будет обычная единичная окружность, для манхеттенского расстояния ромб, для третьего варианта нормы квадрат.

О спреде - не понял, чем Bid лучше Ask для математического измерения. Мы ведь говорим о близости к нулю, и отличие курсов (от Bid или от Ask или от 0.5 *(Bid+Ask)) может быть весомым при определении лучшего варианта.

 
Aleksey Vyazmikin:

Допустим, сейчас у нас дельта укладывается в единицу, мы прикручиваем коэффициенты от 0,1 до 1, а как нам поступать, если дельта минимальная будет 5?

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


Не надо здесь адаптивности. Отклонение границы канала измеряется в тех же единицах, что и отклонение центра канала. Коэффициент корректирует, что вам важнее, большее соответствие по ширине или, что бы канал был центрирован. Здесь никакой адаптивности не может быть. 

Конечно этот коэффициент можно оптимизировать по какому-то критерию. 

 
Aleksey Vyazmikin:
 

Однако, я пока остановился на сложении дельт возведенных в квадрат.

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

1. Расстояние в виде максимума из двух отклонений по координатам используется несоизмеримо чаще евклидова. Именно так оценивается близость курсора мыши к чему-либо на экране. Или пальца в случае смартфона. Таких указаний за день делает сотни каждый человек, а на каждое из них нужно сравнивать габаритный квадрат окрестности курсора с положением множества окон или рамок других видимых элементов экрана. Окон тысячи. Для ускорения поиска попавших в окрестность или ближайшего (кому направить сообщение) окна ОС Windows держит списки всех окон с их габаритными прямоугольниками, Z-порядок окон, их подчиненность родительское/дочернее, списки соседей и пр. На каждое шевеление мыши надо выяснять, на какой элемент экрана сейчас указывает курсор.

2. Причина использования именно такой метрики отклонения - простота и скорость оценки расстояния. Если вместо квадрата линия одинаковых расстояний была бы окружностью, пришлось бы извлекать квадратный корень, а не просто сравнивать крайние координаты прямоугольников. Это дополнительные вычисления, которые надо проводить постоянно и массово. По сравнению с манхеттенским расстоянием преимущество в том, что по значению максимума из двух отклонений сразу определяется наибольшее из отклонений. Кстати, в случае евклидового расстояния получить из него наибольшее отклонение по одной координате тоже нельзя.

P.S. Из википедии: В операционных системах семейства Windows курсоры хранятся в файлах с расширениями .cur (для неподвижных версий) и .ani (анимированные курсоры). Все они представляют собой изображения размером 32×32 пикселя

- квадраты.

 
Vladimir:

i - пояснение к картинке, это меняющиеся номера координат в формулах для нормы. У Вас размерность пространства два, дельт - две штуки.

Результаты, конечно, будут разные. Меняем понятие близости - меняется состав точек, близких к точке (0, 0). Если тревожит, поищете подробнее, как меняется. Анализ делается с помощью единичной "окружности" - линии на плоскости, где расположены точки с расстоянием от точки (0,0), а это и есть норма, равным единице. Все они пересекают координатные оси в точках плюс-минус 1. Для евклидовой нормы (суммы квадратов) это будет обычная единичная окружность, для манхеттенского расстояния ромб, для третьего варианта нормы квадрат.

О спреде - не понял, чем Bid лучше Ask для математического измерения. Мы ведь говорим о близости к нулю, и отличие курсов (от Bid или от Ask или от 0.5 *(Bid+Ask)) может быть весомым при определении лучшего варианта.


Реализовал и Вами предложенный вариант в коде - так-как анализируется сразу 22 файла у меня (22 валютных пары), то скажу что между первым вариантом (сложение квадратов) и вторым образовалась разница по двум валютным парам. Вот теперь думаю, какой же вариант лучше...

Про спред - я исхожу из условий, что спред искусственно раздувается ДЦ, а значит учитывать его нет смысла для подбора оптимальных параметров. На нормальной бирже, есть три параметра - цена покупки, цена продажи и последняя цена - т.е. если мы купили по Ask, то это становится последней ценой, чего не происходит при торговли с ДЦ. А раз, ДЦ транслирует котировки тех, у кого три показателя цены, то мы исследуем последнюю цены, а не цены покупки или продажи, так-как именно та цена по которой произошла сделки была значима для участников торговли, что и отразилось в следе их действий в виде баров.

 
Dmitry Fedoseev:

Не надо здесь адаптивности. Отклонение границы канала измеряется в тех же единицах, что и отклонение центра канала. Коэффициент корректирует, что вам важнее, большее соответствие по ширине или, что бы канал был центрирован. Здесь никакой адаптивности не может быть. 

Конечно этот коэффициент можно оптимизировать по какому-то критерию. 


Не хочу быть невеждой, но я пока не понимаю задумку, можете показать на примере?

 
Vladimir:

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

1. Расстояние в виде максимума из двух отклонений по координатам используется несоизмеримо чаще евклидова. Именно так оценивается близость курсора мыши к чему-либо на экране. Или пальца в случае смартфона. Таких указаний за день делает сотни каждый человек, а на каждое из них нужно сравнивать габаритный квадрат окрестности курсора с положением множества окон или рамок других видимых элементов экрана. Окон тысячи. Для ускорения поиска попавших в окрестность или ближайшего (кому направить сообщение) окна ОС Windows держит списки всех окон с их габаритными прямоугольниками, Z-порядок окон, их подчиненность родительское/дочернее, списки соседей и пр. На каждое шевеление мыши надо выяснять, на какой элемент экрана сейчас указывает курсор.

2. Причина использования именно такой метрики отклонения - простота и скорость оценки расстояния. Если вместо квадрата линия одинаковых расстояний была бы окружностью, пришлось бы извлекать квадратный корень, а не просто сравнивать крайние координаты прямоугольников. Это дополнительные вычисления, которые надо проводить постоянно и массово. По сравнению с манхеттенским расстоянием преимущество в том, что по значению максимума из двух отклонений сразу определяется наибольшее из отклонений. Кстати, в случае евклидового расстояния получить из него наибольшее отклонение по одной координате тоже нельзя.

P.S. Из википедии: В операционных системах семейства Windows курсоры хранятся в файлах с расширениями .cur (для неподвижных версий) и .ani (анимированные курсоры). Все они представляют собой изображения размером 32×32 пикселя

- квадраты.


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

 
Aleksey Vyazmikin:

Реализовал и Вами предложенный вариант в коде - так-как анализируется сразу 22 файла у меня (22 валютных пары), то скажу что между первым вариантом (сложение квадратов) и вторым образовалась разница по двум валютным парам. Вот теперь думаю, какой же вариант лучше...

Про спред - я исхожу из условий, что спред искусственно раздувается ДЦ, а значит учитывать его нет смысла для подбора оптимальных параметров. На нормальной бирже, есть три параметра - цена покупки, цена продажи и последняя цена - т.е. если мы купили по Ask, то это становится последней ценой, чего не происходит при торговли с ДЦ. А раз, ДЦ транслирует котировки тех, у кого три показателя цены, то мы исследуем последнюю цены, а не цены покупки или продажи, так-как именно та цена по которой произошла сделки была значима для участников торговли, что и отразилось в следе их действий в виде баров.

Если на 22 пробах разница возникла лишь в двух случаях, я бы перестал думать о выборе - взял бы то, что работает быстрее, или по другим соображениям выбрал. Вообще-то в линейных нормированных пространствах (в частности, на плоскости с действительными координатами DeltaA, DeltaB) все нормы эквивалентны с точки зрения сходимости к предельной точке, см., например, http://www.fipm.ru/normir7.shtml. Разница лежит достаточно глубоко. Поясню двумя примерами.

1. Конструкторские и проектные работы на компьютере приводят к необходимости определять, на что указывает мышь в чертеже. Если принятые в пользовательском интерфейсе элементы (опции меню, поля ввода, иконки и пр.) имеют постоянный размер, то для чертежа все сложнее. Он на экран помещается целиком только в таком виде, что выбрать мышью однозначно не удается. Конструктор постоянно меняет показываемую область чертежа, чтобы указать нужный его элемент (дугу окружности, например). Вопрос формы окрестности курсора стоит гораздо острее, чем при указании на опцию меню. И в этом случае лучшим решением оказывается квадратная форма окрестности курсора, так быстрее можно указывать, менее утомительно.

2. В случаях, когда функция известна лишь таблицей значений, или очень долго вычисляется, ее заменяют приближенной, сравнительно простой. Здесь тоже требуется мера отклонения. Только отклонений уже не два, а столько, сколько есть точек со значением приближаемой функции. Традиционно в силу простоты расчетов используется метод наименьших квадратов (МНК), который минимизирует сумму квадратов отклонений по всем точкам. В Вашем случае это вариант DeltaA^2+DeltaB^2. Кроме МНК, есть еще так называемое равномерное приближение, при котором минимизируется наибольшее отклонение по всем заданным точкам. По-другому его называют Чебышевским приближением, или наилучшим. Для Вашего случая это вариант max (|DeltaA|, |DeltaB|). Они действительно дают разные замены одной и той же функции, и чебышевское приближение равноудалено от приближаемой функции, но этот способ порождает большую вычислительную работу, распространения не получил. Сравнение результатов замен функции x^0.5 на квадратную параболу методами МНК и Чебышева см. рисунок, поиграться с вариантами можно в прилагаемом в архиве файле Excel из MS Office 10, используя опцию "Найти решение".


 
@Vladimir спасибо за интересную и познавательную информацию!
Причина обращения: