Всем привет!
Сегодня я хотел бы начать исследование паттерна, имеющего название «Падающая звезда». Вот суть описания этого паттерна:
«Цена открытия и закрытия находятся относительно не далеко, а вот верхняя тень свечи длинная и превышает тело свечи как минимум в 3 раза. Нижняя тень или отсутствует, или очень короткая. В данном случае, покупатели пытались двинуть рынок вверх, но удалось это лишь в моменте, чтобы закрепиться у них не хватило сил, продавцы перехватили инициативу. Цена, скорее всего, пойдет вниз».
Вот пример такой свечи.
Я планирую проверить насколько данный паттерн отрабатывается на различных графиках акций, торгующихся на Московской бирже. Естественно, делать это я буду не вручную, а при написании скрипта на QLUA. Тем более, что этот скрипт будет состоять из частей, которые мы ранее рассматривали:
- Как прочитать свечи;
- Как определить наклон движения по свечам;
- Как прочитать время свечи;
- Как задать данные по бумагам, избегая ООП;
- Как использовать команду message().
Итак, давайте подробнее. Что конкретно будет делать скрипт, который я задумал написать?
- Написанный скрипт пройдется по акциям, которые мы определим ему (возможно, что все, которые торгуются на Московской бирже).
- По каждой акции скачает свечи по нескольким тайм-фреймам (которые мы определим).
- На каждом графике найдет свечу, соответствующую паттерну «Падающая звезда». Посмотрим как график вел себя до появления этого паттерна и как вел себя после появления этого паттерна.
- Эту информацию выведем командой message().
- Скопируем данные из сообщений и поместим в Эксель. А там уже по мере способностей проведем анализ.
Что бы не путаться при реализации этих действий давайте составим блок-схему этого алгоритма. Она получится не такая сложная – по сути это просто несколько вложенных друг в друга циклов и некоторая обработка данных.
Наличие блок-схемы очень полезно, так мы будем видеть, что мы уже реализовали, что нужно реализовать.
А теперь давайте определим требования к свече, выполняя которые мы ее будем считать как паттерн «падающая звезда».
У нас есть четыре цены: цена открытия цена закрытия, максимальная цена и минимальная цена.
Для начала мы определим что больше цена открытия или цена закрытия. Для этого у нас будет функция, которая получит два значения и вернет максимальное результат ее обозначим пока так: max_from(Цopen, Цclose).
Таким образом для свечи нам нужно определить значение:
На рисунке показано красным числитель данной формулы, зеленым – знаменатель.
Так вот, если К будет больше трех, то будем считать, что эта свеча соответствует искомому паттерну. Тут хотел бы обратить внимание, что число три взято «от балды». И, чем хорош подход к программированию, тем, что это значение мы запишем в переменную на этапе «задание переменных», дальше в расчетах будет фигурировать только переменная. А если нам понадобится, то можно будет это «от балды» заменить на другое «от балды», не ковыряясь в коде – только в начале работы скрипта.
Все вроде хорошо и понятно. Но, вот незадача. Мы в процессе работы, наверняка столкнемся с уродливыми свечами типа такой:
То есть цены входа, выхода и минимума будут одинаковыми или очень близкими. Движение вверх будет небольшим. Но, коэффициент К будет или огромным или выдаст ошибку из-за деления на ноль. Что бы избежать признания таких уродцев в качестве искомых паттернов, мы должны смотреть насколько свеча большая. То есть определять разницу между максимумом и минимумом. Если полученный результат будет незначительным, то эту свечу мы рассматривать не будем. Проблема в том, что для разных таймфреймов разное значение будет незначительным. И, я пока вижу только такой подход – все же посмотреть на реальные графики разных таймфреймов и определить для какого тамфрейма какое значение является достаточным или недостаточным.
Но, это я уже рассмотрю в следующей части.
На сегодня все. Всем удачи, всем пока.
Продолжение следует. А что там получится - я пока не знаю.
Часть 2. Подготовка к написанию скрипта
Часть 3. Написание скрипта.
=================================
Краткое содержание данного канала.
=================================