Схема стратегии Zigzag Candles
Схема держит на проводе два свинговых уровня — максимальный максимум и минимальный минимум пяти последних завершённых часовых свечей — и действует по той свече, которая достигает одного из них. Пара блоков Flag, сбрасывающих друг друга, разрешает одно действие на свинг, поэтому уровень, задетый много раз внутри одного движения, даёт одну заявку и не более. Каждый свинг сначала закрывает всё открытое; следующий за ним свинг открывает противоположную сторону.
Обзор стратегии
- Всё питается одной серией часовых свечей, и она поставляет только завершённые свечи, поэтому ни один уровень и ни одна заявка не строятся по цене, которую последующий тик ещё может забрать назад.
- Два конвертера читают максимум и минимум каждой свечи и питают Highest по пяти и Lowest по пяти. Оба индикатора публикуют значение только после того, как сформированы, поэтому уровня не существует, пока не закроются пять свечей.
- Два блока Variable держат уровни. Каждый принимает свежее значение индикатора, не отдавая его наружу, и на каждой свече заново публикует то, что держит, поэтому уровень доступен сравнениям на любом баре, а не только на том, который его изменил.
- Ещё два конвертера читают максимум и минимум только что закрывшейся свечи, а два блока Comparison сопоставляют их с удерживаемыми уровнями: максимум, который достигает верхнего уровня или превышает его, и минимум, который достигает нижнего или уходит под него.
- Снимок Position защёлкивается раз в свечу и дважды сравнивается с нулём, давая проверку «не в шорте» и проверку «не в лонге». Каждый из двух пробоев объединяется с соответствующей проверкой блоком Logical condition AND, поэтому верхний уровень отрабатывается, только пока позиция ещё не короткая, а нижний — только пока она не длинная.
- Каждый AND ведёт на Trigger своего Flag, а противоположный пробой — на Reset этого же Flag. Flag пропускает одну истину и затем молчит до сброса, что превращает уровень, задетый много раз внутри одного свинга, ровно в одно действие.
- Сработавший Flag одновременно приходит и на Modify position, настроенный на Close position, и на Modify position, настроенный на Open position. Применяется только один из них: существующая позиция закрывается по рынку, плоская открывается в ту сторону, которую требует свинг, а неприменимый блок отклоняет сигнал.
- Chart panel рисует часовые свечи, обе экстремальные линии, все три потока заявок и каждое исполнение, так что свинговые уровни и предпринятые по ним действия читаются с одной картинки.
Правила входа и выхода
- Вход в лонг: Минимум завершённой свечи достигает удерживаемого нижнего уровня или опускается ниже него, пока позиция не длинная. Нижний Flag срабатывает один раз: короткая позиция откупается по рынку и становится плоской, а плоская превращается в длинную объёмом Order Volume. Дальше Flag молчит, сколько бы раз минимум ни навещали снова, пока не будет взят верхний уровень.
- Вход в шорт: Максимум завершённой свечи достигает удерживаемого верхнего уровня или превышает его, пока позиция не короткая. Верхний Flag срабатывает один раз: длинная позиция продаётся по рынку и становится плоской, а плоская превращается в короткую объёмом Order Volume. Этот Flag молчит, пока не будет взят нижний уровень.
- Выход: Ни стопа, ни цели, ни таймера нет — позицию закрывает противоположный свинг. Тот же Flag, который открывает одну сторону, питает и блок Close position, поэтому первое касание другого уровня закрывает всё открытое. Поскольку объём входа фиксирован, а открывающий блок принимает только плоскую позицию, полный разворот всегда занимает два свинга: один закрывает, следующий открывает другую сторону.
Параметры
| Параметр | По умолчанию | Описание |
|---|---|---|
| Candles | 01:00:00 | Таймфрейм серии свечей. Поставляются только завершённые свечи, поэтому решение принимается раз в бар. |
| Swing High Length | 5 | Число завершённых свечей, по которым берётся верхний экстремум. Более длинное окно делает верхний уровень труднее достижимым, а свинги — длиннее; более короткое превращает почти каждую свечу в новый экстремум. |
| Swing Low Length | 5 | Число завершённых свечей, по которым берётся нижний экстремум. Оно задано отдельно от верхнего, чтобы две стороны можно было намеренно сделать несимметричными. |
| Initial Swing High | 999999999 | Значение, которое держит верхний уровень, пока верхний индикатор не сформирован. Оно намеренно недостижимо, чтобы во время прогрева ни один максимум его не коснулся и ни один шорт не был открыт до появления настоящего экстремума. |
| Initial Swing Low | 0 | Значение, которое держит нижний уровень, пока нижний индикатор не сформирован. Ноль недостижим сверху для торгуемой цены, что по той же причине держит длинную сторону в покое. |
| Order Volume | 1 | Количество, используемое обоими открывающими действиями. Закрывающему действию объём не нужен — оно закрывает всё открытое, — поэтому при фиксированном количестве позиция ходит только между одним лотом в шорт, плоской позицией и одним лотом в лонг. |
Детали диаграммы
- Блок Candles подписан только на завершённые свечи, и именно это делает уровни честными. Индикаторы питаются через Converter, а конвертер отдаёт обычное число, которое всегда считается окончательным; незавершённая свеча поэтому попадала бы в окна Highest и Lowest как готовая, и экстремум в итоге содержал бы сам себя. Та же подписка удерживает заявки в рамках правил: заявка, построенная по обновлению незавершённой свечи, несёт время открытия этого бара и отклоняется как пришедшая из прошлого.
- Пробой измеряется по уровням в том виде, в каком они стояли до оцениваемой свечи: удерживающие переменные заново публикуют то, что у них уже было, а индикаторы принимают новую свечу на том же баре, поэтому уровень, с которым сравнивается свеча, — это экстремум пяти предшествующих ей свечей, а не тот, что включает её саму.
- Два блока Flag связаны крест-накрест: верхний пробой сбрасывает нижний Flag, а нижний пробой — верхний. Эта пара и есть вся память схемы: она говорит, куда шёл последний свинг и был ли он уже отработан. Flag игнорирует ложь на любом из входов, поэтому сравнения, публикующие ложь на каждом обновлении свечи, ничего не стоят, и он выдаёт сигнал снова только после того, как достигнут противоположный уровень.
- Уровни держат блоки Variable, вход которых не работает как триггер; на их Trigger вместо этого подаётся серия свечей. Тем же приёмом раз в свечу защёлкивается значение Position, поэтому оба позиционных Comparison и оба блока Logical condition AND читают один и тот же снимок, а не значение, которое смещается у них под руками.
- Действуют три блока Modify position, все по рынку: один с Close position, который принимает оба Flag, и по одному с Open position на каждую сторону. На внешней свече — такой, которая и снимает предыдущий максимум, и уходит под предыдущий минимум, — оба Flag могут сработать в одном проходе, и отправляются две рыночные заявки; в позиции они гасят друг друга, но обе видны как исполнения в логе и на Chart panel.
Использование
Импортируйте файл .json в Designer, прогоните схему на исторических данных в тестере, затем подстройте параметры или сами кубики под свой инструмент, прежде чем торговать вживую.