Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Как решается данная задача через DTW (пример):
Итого выполнили 50 000 000 сравнений по DTW алгоритму, который имеет сложность O(N^2). Т.е. очень грубо совершили 5 * 10^11 (500 миллиардов) элементарных вычислительных операций.
Теперь пришел новый бар - сделали еще раз 500 млрд вычислений.
Решили прогнать на истории, начиная с 200 000 крайнего элемента. Грубо, для прогона нужно совершить 200 000 раз по 500 млрд каждый вычислений. Итого 10^17 вычислений.
Даже если будет хитрая оптимизация, то она не даст выигрыша больше, чем на два порядка. Т.е. в лучшем случае надо будет совершить каких-то 10^15 вычислений.
Разберитесь сначала в принципе работы алгоритма, прежде чем нести такой бред. Сложность алгоритма - O(n*m), где n и m - длины двух входных векторов.
p.s. Никаких "по 50 баров, по 55 баров" делать не нужно, т.к. одно из трёх возможных искажений - пропуск наблюдения.
p.p.s. DTW с ограничениями на форму пути тоже существует, ваше "и на этом можно остановиться" также совершенно не нужно.
p.p.p.s. Ваш метод "зигзаг + вычисление корреляции" будут показывать ерунду, т.к. зигзаг будет строиться на максимумах зашумленной случайной величины, которые мало о чём говорят.
p.p.p.p.s. Для поиска в большом аудиопотоке используются совершенно другие методы.
на Хабрахабре статья про DTW http://habrahabr.ru/blogs/algorithm/135087/, вроде бы все доходчиво написано, но чёт ума не приложу как использовать DTW для OHLC, ктонить может растолковать доходчиво?
Для OHLC вам нужно придумать какую-нибудь функцию для расстояния между барами. Например:
1. дано два бара
2. приближаем каждый из баров полиномом третьей степени (для бара C>O по точкам: {(t[0];Open), (t[1];Low), (t[2];High), (t[3];Close)}, для бара O>C по точкам {(t[0];Open), (t[1];High), (t[2];Low), (t[3];Close)}, где t[i]=i/3)
3. считаем расстояние как корень квадратный из интеграла квадрата разности двух полиномов на промежутке 0..1.
(Придумано не мной, метод вроде бы известный и доступный всем интересующимся)
Вы бы почитали для начала задачу которая стоит перед автором темы и его ответы.
Согласен, задача формулировалась на поиск критерия похожести. Я же провел дальнейший логический шаг, который будет применять автор, основываясь на его ранней работе с критерием похожести через КК Спирмена. Возможно, ошибся, и автор думает применять новый для себя критерий похожести для другого.
Решили прогнать на истории, начиная с 200 000 крайнего элемента. Грубо, для прогона нужно совершить 200 000 раз по 500 млрд каждый вычислений. Итого 10^17 вычислений.
Даже если будет хитрая оптимизация, то она не даст выигрыша больше, чем на два порядка. Т.е. в лучшем случае надо будет совершить каких-то 10^15 вычислений.
Разберитесь сначала в принципе работы алгоритма, прежде чем нести такой бред. Сложность алгоритма - O(n*m), где n и m - длины двух входных векторов.
Откуда столько неприязни и агрессии? Ознакомьтесь с оценками сложности алгоритма. O(N^2) никак не противоречит написанному вами. Алгоритмы с такой сложностью подходят для задач с небольшим объемом данных.
p.s. Никаких "по 50 баров, по 55 баров" делать не нужно, т.к. одно из трёх возможных искажений - пропуск наблюдения.
p.p.s. DTW с ограничениями на форму пути тоже существует, ваше "и на этом можно остановиться" также совершенно не нужно.
Обратите внимание на несколько раз упомянутое в приведенном примере слово "грубо". Если учитывать все нюансы, пост разрастется до огромных невоспринимаемых размеров. Можно упомянуть о FastDTW-алгоритме и других дополнительных алгоритмических оптимизациях. Умом и знаниями блестать лучше на практике.
p.p.p.s. Ваш метод "зигзаг + вычисление корреляции" будут показывать ерунду, т.к. зигзаг будет строиться на максимумах зашумленной случайной величины, которые мало о чём говорят.
Говоря вашим языком - "бред". Могли бы вы конструктивно на примере показать это?
p.p.p.p.s. Для поиска в большом аудиопотоке используются совершенно другие методы.
Задача намного скромнее.
Тогда я перемудрил. Для такой простой задачи проще DTW, наверное, ничего нет. Но сравнивать столь малые последовательности данных - сомнительное занятие.
Можете привести пример из жизни, когда ваша гипотеза, вроде, как сработала?
Тогда я перемудрил. Для такой простой задачи проще DTW, наверное, ничего нет. Но сравнивать столь малые последовательности данных - сомнительное занятие.
Можете привести пример из жизни, когда ваша гипотеза, вроде, как сработала?
Вроде как из жизни и идет - заметил, что на EURUSD мысленно перекладываю сегодняшний уже получившийся график на вчерашний. Если хотя бы первая половина дня совпала визуально, то можно и прогноз сделать (если не пятница и если не новости). "Визуально" - это чередование подъемов и спусков, уровни не совпадают. Ну, примерно как на иллюстрацию эволюции смотришь - соседние картинки похожи, дальние - уже нет. Ну а если не совпадают картинки сегодня-вчера, то этот метод не работает.
Задача намного скромнее - сравнить то, что уже случилось сегодня с началом предыдущего дня (размеры паттернов разные!) и оценить похожесть. Если она присутствует - нарисовать примерную траекторию курса на остаток сегодняшнего дня. Если брать H1 - это 24 бара. В любом случае никак не больше 24 сравнений. На M15 - 96 сравнений максимум. По моим наблюдениям, похожесть распространяется на 2 дня от силы, дальше рынок все "забывает". Оптимизация на интервале месяцев и годов - самообман.
Получилось кое-что... только не осознал. Испытываю чувство мистического экстаза:)