С чего все начиналось
Осваивая новое направление в программировании (программирование под платформу MetaTrader), мне пришла идея попробовать свои силы в чем-то большем. Например, найти какой-то нестандартный способ прогнозирования движения цен на валютные пары.
Изначально, предпринимались попытки реализовать либу со всеми статистическими показателями, но на полпути я обнаружил, что таковые уже существуют:
Проанализировав их содержимое, я понял одну простую вещь…
Все функции, описанные и реализованные в вышеизложенных исходниках являются основой стандартных торговых индикаторов.
Для справки
Торговый индикатор — это прежде всего экономико-математическая модель, представляющаяся в удобном виде, чаще всего в виде линий на графике или под ним. Он рисуется вслед за изменениями в цене или других данных о рынке.
Все они берут за основу статистику и математику, а именно: аппроксимацию и интерполяцию, расчет средних значений различных порядков, расчет гистограмм распределения и др. Данные таких индикаторов основываются на показаниях цены в зависимости от времени.
Количество формул просто внушало! Затея казалась практически нереальной, по-этому я решил отложить в сторону мат. расчеты и использовать шаблонный подход.
Как это было
Первый шаг (провал)
Попытавшись следовать примеру индикаторов, я пытался программно анализировать цену на всем историческом промежутке времени. За основу брал размер бара, его объем и направление:
Результат оказался нулевым! Анализируя только характеристики бара, практически не возможно спрогнозировать дальнейшее поведение тренда.
Второй шаг (провал)
Далее были предприняты попытки найти некие «шаблоны», состоящие из нескольких баров. То-есть, теперь, за основу бралось понятие шаблона, или как я это называю — маска. Также, было введено новое понятие — длина маски.
Соорудив «пирамиду» из вложенных циклов, я запустил первый проход по всей истории в поисках схожих масок длиной в 6 баров. Результат меня шокировал! Программа ничего не нашла за последние 12лет! Совпадений — 0! Что не так?
После нескольких часов «допиливания» алгоритма, выяснилось, что не в нем дело. Все дело в точности вычислений. Действительно, практически нереально найти одинаковые маски такой длины. Не долго думая, добавляю внешний параметр — максимальная точность вычислений. Пробуем опять тестировать, только уже с маской в 3 бара и максимальной точностью 90 процентов. Результат опять шокирует. 206 масок найдено, причем расположены они одна на одной:
Попытки изменять длину маски или точность приводили всегда то к нулевому результату, то к «куче» масок, в которой практически ничего нельзя разобрать, что уж говорить о прогнозировании. И снова провал.
Третий шаг — долгожданное прояснение
После двух абсолютно провальных попыток реализовать индикатор «моей мечты», который, опираясь на статистику, сможет отвечать на вопрос «Что будет завтра?», я абстрагировался и решил тотально поменять алгоритм работы с трендом.
Я оставил позади, идею непосредственного анализа цены, и подключил мат. аппарат, а точнее его реализацию — торговые индикаторы.
По-сути, если рассуждать логически, индикаторы всесторонне описывают состояние рынка. Данное утверждение можно даже не аргументировать, это и так понятно. Погрузившись в вопрос, из него выплывает, что чем больше разнотипных индикаторов мы используем, тем более точным является наше описание текущего состояния тренда.
И тут наступил переломный момент! Мы же можем получать не только значения цены, по историческим данным, но и так-же, беспрепятственно, мы способны рассчитать состояние тренда в любой момент истории.
Остается только техническая часть вопроса.
Чем закончилось
В результате «третьего шага», был разработан алгоритм анализа текущего состояния тренда и поиска шаблонных ситуаций в истории. Данная программка успешно показала хороший публичный прогноз на конкурсе идей от 15.03.2012. При следовании указаниям этого прогноза, была возможность заработать более 1500пунктов за 15.02-16.02.2012. В данный момент проходят массовые доработки и оптимизации кода (т.к. вычисления получились ну очень тяжелыми), и уже в скором времени, я выложу его на всеобщее обозрение.
Выводы
Наступив на кучу граблей, теперь уже с уверенностью, могу дать пару советов начинающим трейдерам/исследователям/программистам:
1. Не пытайтесь анализировать конкретные значения цены.
2. Цена — это функция от спроса, предложения и брокерских уловок.
3. Пытайтесь подходить к исследованию вопросов прогнозирования со стороны трейдера, брокера и программиста.
Успешных вам прогнозов!
Подвал
1. Краткое определение индикаторов взято с сайта: http://infofx.ru/
2. Ссылки исходных кодов ведут на решения неизвестных мне людей. Но могу вас уверить, эти сорцы не способны навредить вашему компьютеру, т.к. это файлы обычного текстового формата.
3. К сожалению, нулевая карма не позволяет писать в «Финансы». Адаптировал топик под данный хаб. Как только смогу — перенесу.
4. Я открыт для обсуждения данного вопроса. Буду рад любому замечанию или дополнению.
Автор: fxstats