Вот в этой либе реализована поддержка размерности данных до 3-х включительно, плюс метод оценки нижней границы и соответствующий тест пути-кандидата (как я понимаю, это значительно дешевле полного DTW для размерности >1, когда основной метод становится ТЗ-полной задачей и ведет к экспоненциальному времени решения)
на Хабрахабре статья про DTW http://habrahabr.ru/blogs/algorithm/135087/, вроде бы все доходчиво написано, но чёт ума не приложу как использовать DTW для OHLC, ктонить может растолковать доходчиво?
IgorM: на Хабрахабре статья про DTW http://habrahabr.ru/blogs/algorithm/135087/, вроде бы все доходчиво написано, но чёт ума не приложу как использовать DTW для OHLC, ктонить может растолковать доходчиво?
проблема в том, что я не понимаю как использовать это, все что понял, что с помощью DTW можно различные по длительности временные участки (ВР) подгонять под один масштаб для последующего анализа, но как... - не пойму
да нифига не получилось, сам исходник DTW портировать под mql не проблема, как-то так:
проблема в том, что я не понимаю как использовать это, все что понял, что с помощью DTW можно различные по длительности временные участки (ВР) подгонять под один масштаб для последующего анализа, но как... - не пойму
Пробовал его. Тоже не понятно как им пользоваться. На выходе должен быть или путь трансформации или трансформированные данные. Допустим cost[][] это матрица расстояний. Но она дает путь с возвратом (если искать минимальное значение в каждой колонке), не выполняется условие "1. Монотонность – путь никогда не возвращается, то есть: оба индекса, i и j, которые используются в последовательности, никогда не уменьшаются.". Еще путь не доходит до противоположного угла. Вообще не очень понятен смысл всех этих манипуляций с числами при заполнении массива cost[][] - сначала просто считаются расстояния, потом они приплюсовываются.
Если псрото считать растояния между каждым элементов t1 до каждого элемента t2, то вообще зачем так много вычислений, если должно выполняться условие " 1. Монотонность – путь никогда не возвращается, то есть: оба индекса, i и j, которые используются в последовательности, никогда не уменьшаются."?
DTW совершенно не подходит для обозначенной задачи. DTW используется для распознавания речи (слов) в реал-тайм аудио потоке следующим образом (грубо):
Есть шаблон (слово) - последовательность данных, длинной N.
Есть аудио-поток - последовательность данных, длинной M >> N.
Из аудиопотока выбираются крайние куски данных, разной длины (грубо).
Каждый кусок по DTW сравнивается с шаблоном.
Если максимальное лучшее значение DTW превышает определенный порог, то считается, что было произнесено слово.
Т.е. DTW - это лишь критерий сравнений двух последовательностей разной длины. Не более.
Для поиска слова в истории аудиопотока DTW не годится совершенно из-за огромной ресурсоемкости. Например, найти с помощью DTW сколько раз произносилось какое-то слово за крайний час практически нереально.
Быстро решается изначально-поднятая задача через быстрый алгоритм вычисления КК Пирсона. При этом цВР преобразуется каждый раз ЗигЗагом с разными входными параметрами. Такой алгоритм очень легко параллелится и при реализации с использованием GPU будет работать почти в реал-тайме.
Другой вопрос, а зачем это надо? Данную задачу никто не решал на серьезном уровне. Но почти уверен, что решив ее, будет еще один гвоздь в гроб состоятельности теории паттернов.
Теория паттернов, как и волны Эллиота с Фибо - это не технарского уровня мышления торговля.
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
кажется вот исходник http://www.bytefish.de/blog/dynamic_time_warping
на Хабрахабре статья про DTW http://habrahabr.ru/blogs/algorithm/135087/, вроде бы все доходчиво написано, но чёт ума не приложу как использовать DTW для OHLC, ктонить может растолковать доходчиво?
А для одной цены уже получилось?
да нифига не получилось, сам исходник DTW портировать под mql не проблема, как-то так:
проблема в том, что я не понимаю как использовать это, все что понял, что с помощью DTW можно различные по длительности временные участки (ВР) подгонять под один масштаб для последующего анализа, но как... - не поймуда нифига не получилось, сам исходник DTW портировать под mql не проблема, как-то так:
проблема в том, что я не понимаю как использовать это, все что понял, что с помощью DTW можно различные по длительности временные участки (ВР) подгонять под один масштаб для последующего анализа, но как... - не поймуПробовал его. Тоже не понятно как им пользоваться. На выходе должен быть или путь трансформации или трансформированные данные. Допустим cost[][] это матрица расстояний. Но она дает путь с возвратом (если искать минимальное значение в каждой колонке), не выполняется условие "1. Монотонность – путь никогда не возвращается, то есть: оба индекса, i и j, которые используются в последовательности, никогда не уменьшаются.". Еще путь не доходит до противоположного угла. Вообще не очень понятен смысл всех этих манипуляций с числами при заполнении массива cost[][] - сначала просто считаются расстояния, потом они приплюсовываются.
Если псрото считать растояния между каждым элементов t1 до каждого элемента t2, то вообще зачем так много вычислений, если должно выполняться условие " 1. Монотонность – путь никогда не возвращается, то есть: оба индекса, i и j, которые используются в последовательности, никогда не уменьшаются."?
.
DTW совершенно не подходит для обозначенной задачи. DTW используется для распознавания речи (слов) в реал-тайм аудио потоке следующим образом (грубо):
Т.е. DTW - это лишь критерий сравнений двух последовательностей разной длины. Не более.
Для поиска слова в истории аудиопотока DTW не годится совершенно из-за огромной ресурсоемкости. Например, найти с помощью DTW сколько раз произносилось какое-то слово за крайний час практически нереально.
Быстро решается изначально-поднятая задача через быстрый алгоритм вычисления КК Пирсона. При этом цВР преобразуется каждый раз ЗигЗагом с разными входными параметрами. Такой алгоритм очень легко параллелится и при реализации с использованием GPU будет работать почти в реал-тайме.
Другой вопрос, а зачем это надо? Данную задачу никто не решал на серьезном уровне. Но почти уверен, что решив ее, будет еще один гвоздь в гроб состоятельности теории паттернов.
Теория паттернов, как и волны Эллиота с Фибо - это не технарского уровня мышления торговля.
DTW совершенно не подходит для обозначенной задачи...
Кое-что сам придумал, но не знаю, ерунда какая-то.
Желтая линия, это оранжевая натянутая на красную.