Блог им. Serj90
Посмотрите на эту красоту:
или вот
Какой объем данных кроется за всей этой механикой…
Дисклеймер: картинки взяты (а откуда ж еще) из гугл картинок. Претендовать на авторство и в мыслях не было.
Всегда завораживал кластерный график в скальперских приводах и самописках на lua к квиковским графикам. Все эти маркет-дельта, гистограммы, объемы – действительно уникально позволяют оценить преобладание быка или медведя в свече. Но, я задался вопросом, что делать, если хочется оценить паритет на истории, да еще и чтобы можно было подсунуть любой период для оценки и любой таймфрейм? (в MT4 и ninja слышал, что это доступно из коробки)
Копая в этом направлении, пришлось несколько моментов из классического кластерного анализа взять за аксиому. Например, кластерный подход явно указывает, что паритет продавца или покупателя ОБЫЧНО (с большей вероятностью) задаст общее направление свечи. Если покупатели агрессивнее, то в ходе кластерного анализа мы можем сказать – свеча с большой вероятностью будет зеленая.
Однако в решении вопроса обозначенного мной выше, всё не так однозначно. К примеру, открывая график дневок на периоде пол года, я не знаю у кого был паритет в той или иной свече, и похоже никогда не узнаю))) (ну разве что препарирую тиковую историю)))) Допустим доджи стрекоза, молот, висельник, надгробие и т.д. могут говорить, о том, что в конце периода свечи продавцы/покупатели просто исчезли, хотя 90% времени именно они продавливали цену в той или иной тени свечи и 90% объема внутри свечи прошло именно от их ударов по рынку(((
Отсюда мы можем действовать в двух направлениях:
Оговорка 1. Свои изыскания я проводил начиная со второго направления. Дело в том, что в моменте мне не было интересно, кто на текущем уровне цены был когда-то более настойчив, бык или медведь. Меня интересовал сам факт, является ли текущий уровень цен важным уровнем или нет.
Оговорка 2. Опытный трейдер скажет, «чего там определять, раскрой глаза, уровни на графике они явно выражены!». Соглашусь. Но как формализовать этот уровень? Как из аналогового восприятия через глаза, оцифровать этот уровень и перенести его в механическую ТС? В некотором роде, с доработками, описанный мной ниже подход можно рассматривать как одно из таких решений.
Оговорка 3. Да, кластерный анализ также включает в себя и явное обозначение объема торгов на ценовом уровне. Наперед скажу, что эту задачу я уже решил. О результатах расскажу в рамках описания проделанных исследованиях по направлению 1. А сейчас остановлюсь подробнее в направлении 2.
Итак. Задача обозначена, но не понятно, как её решать. В связи с этим было принято решение разбить задачу на подзадачи. И первой такой подзадачей стало описание того, что я хочу получить на выходе, а именно:
Теперь по порядку. Видеть – значит визуальное представление, для уровней лучше всего подходит формат графика. График, значит оси координат. Ордината – ценовой уровень. Абсцисса — … оставим на попозже.
Выполняемый в автоматизированном режиме – значит используем софт. У меня вся ТС построена в excel, это большая бочка со множеством макросов, кнопочек и триггеров. На сторону исполняемого кода на C# у меня отнесены только интеграции и загрузчики. Такая архитектура – это следствие лени. Простой дневник сделок плавно развился в целую систему не выходя за рамки excel, а когда встал вопрос загрузки данных и интеграции с quik, я оглянулся и понял, что прошел точку невозврата, переписать ядро ТС из excel в отдельный софт и прикручивать графану – это капец сколько времени уйдет. Поэтому пока несильно парюсь над производительностью, сижу и развиваю систему дальше, находу оптимизируя ядро, выводя невостребованный и неактуальный функционал. Создателям excel надо поставить памятник, это нереально крутая штука.
Расчет – значит будет какое-то математическое ядро. Оно простое, его раскрою ниже.
Цена уровня крупной проторговки – работаем с историческими данными цен, как закрытия так и с остальными OHL наборами.
На любом периоде и любом таймфрейме. Тут подробнее. Что такое период в контексте решаемой задачи? Это временной отрезок, выбор которого чем-то обусловлен, и в рамках которого мы пытаемся получить интересующую нас информацию. Тогда, что такое тайм фрейм в контексте решаемой задачи? Это просто количество свечей приходящихся на единицу временного отрезка (периода). Получается период – это окно. А таймфрейм – это свечной масштаб в этом окне. Лупа))
При решение задачи я нашел подтверждение логичному заключению, что именно период определяет и выявляет зону проторговки. Что может случиться с ценой на периоде допустим 2 месяца? Да всё что угодно, позитивная новость вокруг эмитента может смениться негативной, может измениться оценка экономического состояния даже мира, в конце концов крупняк может зайти и выйти, и еще раз зайти в инструмент. В общем событий масса, отсюда и попытка как рыба-прилипала сесть на хвост акуле и ходить с ней от проторговки до проторговки. Этим и занимаются трейдеры, ищут тренд и цепляются за его хвост.
Теперь собственно к реализации. На вход мат ядру будет подаваться ценовой ряд (цена close) ограниченный периодом (окном) у меня это пока что ~14 торговых недель или 71 свеча. Безусловно правильнее брать тиковую историю и выявлять паритет на них. Наверное, но:
А. Это какой объем данных?
Б. А если мы хотим динамический период?
В. А если нам надо стравливать в мат ядро сейчас один инструмент, а через минуту по кнопке второй?
Г. К тому же насколько нам важна такая детализация, если мы поднимаемся на уровень дневок и выше?
Д. Какой смысл считать паритет в дневной свече с размахом теней допустим в 0.2%?
Почему, эти 0.2% не так важны – будет ниже.
Итак, 71 свеча, это не отрезок по оси абсцисс, это только выборка. Отрезок по оси ординат не имеет смысл брать, например, для акции от 0 до бесконечности. Я ищу уровни на периоде, а значит и ценовые уровни должны быть ограниченны этим периодом. Отсюда для оси Y я беру минимальную и максимальную цену closeв выборке.
Дальше для построения «кластера» (взял в кавычки, т.к. ушел от классической реализации) я должен определить, что будет является единицей на отрезке оси Y. После анализа располагаемых данных, я пришел подходу, когда высчитывается средний шаг цены от минимальной цены close до максимальной цены close из представленной выборки.
Причем чем больше получается значение среднего шага, тем более размашистыми свечами я могу пренебречь. При шаге в 2 рубля, свечка размахом тела в 1 рубль – не интересна. Или при средней цене в 0.8% я также спокойно могу пренебречь свечами с телами в 0.2%.
Дальше сами уровни формируются как:
y_index = Минимальная цена (close) в выборке + средний шаг цены * index
значения переменной indexлежат в промежутке от 0 до 71.
Теперь мы располагаем ценовыми уровнями. Осталось начать отрисовывать «кластер». Для этого надо взглянуть на представленную к анализу выборку, из значений цен close 71-ной свечи и полученных 72-ух ценовых уровней. Цены close из выборки не совпадают с полученным списком уровней, что логично. Поэтому для прорисовки кластера я беру значение цены close каждой свечи в выборке и начинаю сверять её на предмет вхождения в диапазон, ограниченный каждой парой соседних уровней. Если цена свечи лежит в границах пары уровней, то ставим +1 на наибольшей границе пары. Выбор «какому уровню присваивать единицу» на самом деле обусловлен позиционированием ТС, если она работает от лонга, то лучше в полученных парах уровней признак проторговки (единичку) присваивать верхней границе.
Собственно, набрав таких вот единиц на различных уровнях цены в диапазоне мы получаем «кластерную» диаграмму:
Мда, конечно это далеко от изображений в начале топика. Но лиха беда начало))
Прагматичный читатель спросит, ну и как это торговать?
Путь в никуда)) по той простой причине, что наличие проторговки не гарантирует, что цена к ней подойдет. Хотя ММ любит шнырять от одной к другой, но масштаб не тот. Второй аргумент, где продавать в сегодняшнем SBER?
Сопротивлений нет. Их еще не нарисовали проторговки участников.
В принципе перед публикацией этого поста меня терзали сомнения. С одной стороны хотелось поделиться. С другой, это не кнопка бабло, которую здесь ждут, даже не часть грааля, кому это нахрен надо.
Полезность сие изыскания…. Ну собственно это тоже одна из причин почему решил опубликовать. Хотя на эту штуку в определенных ситуациях поглядываю, несмотря на то, что к такому виду анализа местная публика относится скептично (такой вывод я сделал исходя из комментариев к постам на СЛ по данной теме).
Что касается возврата к классическому определению кластерного анализа, и развития идеи в этом направлении, пока не могу однозначно сказать напишу или нет. Под настроение в общем. Но картинка там веселее:
(72е свечи)