Схема стратегии Account Rules Guard
Схема торгует пересечения EMA(120)/EMA(450) на завершённых минутных свечах и оборачивает этот обычный вход в надзорный контур уровня счёта. P&L change, формула, два сравнения, логическое ИЛИ, защёлка Flag и сохранённый флаг вместе следят за суммарным денежным результатом прогона. Как только этот результат достигает предела убытка или цели по прибыли, надзорный контур закрывает позицию, записывает произошедшее в лог и блокирует любые дальнейшие входы до конца прогона.
Обзор стратегии
- Завершённые минутные свечи поступают в два блока Indicator — быструю EMA и медленную EMA, — а два блока Crossing читают эту пару в обоих направлениях.
- P&L change сообщает реализованные и нереализованные деньги в одном и том же обновлении, а Formula складывает их в единый суммарный результат, который пересчитывается при каждом обновлении P&L.
- Два блока Comparison сравнивают суммарный результат с уровнем Max Loss и уровнем Profit Target, а Logical condition с оператором OR превращает любой из ответов в один сигнал о срабатывании правила.
- Flag защёлкивает этот сигнал в первый же раз, когда он истинен. Вход сброса намеренно оставлен неподключённым, поэтому надзорный контур работает как переключатель в одну сторону до конца прогона.
- Variable типа flag хранит состояние защёлки и переизлучает его на каждой свече — именно это нужно логическому AND для работы; Logical condition с оператором NOT превращает сохранённое состояние в разрешение, которое читают ворота входа.
- Каждые ворота входа — это логическое AND трёх вещей: пересечения в своём направлении, разрешения от надзорного контура и проверки позиции, построенной из Current position и Comparison с нулём.
- Position modify открывает один Volume по рынку по условию открытия позиции, поэтому вход берётся только из нулевой позиции; противоположное пересечение подаётся во второй Position modify, который закрывает открытое и оставляет схему вне позиции, а не переворачивает её.
- Когда правило срабатывает, третий Position modify обнуляет позицию, Variable делает снимок результата в этот момент, String formatter оформляет его, а Notification пишет его в лог вместе со второй строкой, описывающей разрешение платформы на торговлю.
Правила входа и выхода
- Вход в лонг: Завершённая свеча, на которой быстрая EMA пересекает медленную снизу вверх, при несработавшем надзорном контуре и позиции не в лонге, покупает один Volume по рынку. Условие открытия позиции означает, что вход берётся только из нулевой позиции: тот же сигнал, пришедший при уже открытой позиции, отклоняется, а не наращивает её.
- Вход в шорт: Завершённая свеча, на которой быстрая EMA пересекает медленную сверху вниз, при несработавшем надзорном контуре и позиции не в шорте, продаёт один Volume по рынку. Как и на длинной стороне, условие открытия позиции допускает вход только из нулевой позиции.
- Выход: Обычный выход — противоположное пересечение: закрывающий блок Position modify обнуляет всё открытое, поэтому схема возвращается к нулевой позиции и ждёт нового пересечения, а не разворачивает позицию. Аварийный выход — надзорный контур: как только суммарный реализованный и нереализованный результат достигает уровня Max Loss или уровня Profit Target, позиция закрывается по рынку, защёлка устанавливается, сумма и разрешение платформы записываются в лог, и до конца прогона ни один вход больше не допускается.
Параметры
| Параметр | По умолчанию | Описание |
|---|---|---|
| Candles | 00:01:00 | Таймфрейм серии свечей. Скользящие средние, переизлучение состояния защёлки, импульс объёма и чтение разрешения приводятся в действие только завершёнными свечами. |
| Fast EMA Length | 120 | Период быстрой экспоненциальной скользящей средней. |
| Slow EMA Length | 450 | Период медленной экспоненциальной скользящей средней. |
| Max Loss | -5000 | Суммарный реализованный и нереализованный результат в деньгах счёта, при достижении которого или ниже надзорный контур срабатывает. Записывается отрицательным числом и намеренно взят с запасом: слишком близкий предел останавливает схему раньше, чем она наторгует достаточно, чтобы что-то показать. |
| Profit Target | 10000 | Суммарный реализованный и нереализованный результат, при достижении которого или выше надзорный контур срабатывает. Его достижение завершает прогон так же, как и убыток: позиция закрыта, защёлка установлена, дальнейших входов нет. |
| Volume | 1 | Фиксированное количество, используемое обоими входными блоками. Два закрывающих блока берут количество из открытой позиции и это значение игнорируют. |
Детали диаграммы
- P&L change выдаёт реализованные и нереализованные деньги вместе, а Formula
r + uскладывает их в то значение, которое оценивают оба блока Comparison. Блок молчит, пока по счёту действительно не было движения, поэтому надзорный контур не может сработать до первой сделки, а обе Variable с пределами запускаются самим суммарным результатом, так что обе стороны каждого сравнения всегда приходят в одном обновлении. - Разрешение хранится, а не транслируется потоком. Flag выдаёт значение только в момент установки, а логическое AND этим воспользоваться не может, потому что AND ждёт значения на каждом входе и очищает их после срабатывания. Поэтому состояние защёлки живёт в Variable типа flag, значение по умолчанию которой — false, а вход Trigger — поток свечей: на каждой свече она переизлучает текущее состояние, а Logical condition с оператором NOT превращает его в разрешение на вход.
- Оператор OR на сигнале срабатывания — осознанный выбор: в отличие от AND он не ждёт значения на каждом входе, поэтому поднять сигнал может и один предел в одиночку. Он также выдаёт ложный ответ на каждом спокойном обновлении, и дальше по цепочке это ничего не стоит: Flag игнорирует ложный триггер, Variable со снимками его игнорируют, а Position modify отказывается по нему действовать, поэтому отрицательный ответ никогда не отправляет заявку.
- Закрывающие блоки используют условие закрытия позиции, и вход объёма им вообще не нужен: количество берётся из открытой позиции. Входные блоки сохраняют свой Volume, а Current position в сравнении с нулём даёт каждым воротам те же проверки «не в лонге» и «не в шорте», которые заявлены в правиле входа.
- Is trade allowed читает собственное разрешение платформы на каждой свече, и он намеренно не включён в ворота входа: на записанной истории он весь прогон отвечает «не разрешено», поэтому построенные на нём ворота никогда бы не открылись и схема вообще не торговала бы. Его ответ фиксируется в Variable и оформляется блоком String formatter во вторую строку Notification — там ему и место: он объясняет состояние платформы в момент срабатывания правила, а не заглушает схему. Notification настроен на тип «лог» — единственный тип, который доставляется во время воспроизведения истории.
Использование
Импортируйте файл .json в Designer, прогоните схему на исторических данных в тестере, затем подстройте параметры или сами кубики под свой инструмент, прежде чем торговать вживую.