Схема стратегии Trade Report Alerts
Эта схема — пример отчётности, а не изобретения сигналов. Сделки даёт обычное пересечение экспоненциальных скользящих средних с периодами 9 и 26 на завершённых пятиминутных свечах, а всё вокруг превращает эти сделки в читаемый текст: каждая собственная сделка в момент исполнения становится одной строкой лога, а раз в день ветка, управляемая часами, выводит реализованный результат стратегии. Отчётная часть читает торговую и никогда не выставляет, не изменяет и не блокирует ни одной собственной заявки.
Обзор стратегии
- Завершённые пятиминутные свечи подаются на быструю ExponentialMovingAverage с периодом 9 и медленную с периодом 26. Блок Crossing сводит эту пару к единственному событию:
true, когда быстрая линия пересекает медленную снизу вверх,false— когда сверху вниз, и ничего между этими моментами. - Позиция считывается один раз за свечу — через снимок, который выпускает сама свеча, — и три сравнения с нулём описывают её как нулевую, длинную или короткую. Все решения строятся на этом снимке, поэтому сделка, пришедшая в середине бара, не может заново открыть уже принятое решение.
- Из нулевой позиции пересечение вверх открывает длинную позицию, а пересечение вниз — короткую. Оба входных блока несут условие Open-position, поэтому они молчат, пока удерживается любая позиция, и не могут нагромождать заявку на заявку.
- Из удерживаемой позиции противоположное пересечение закрывает её блоком Close-position, который берёт объём заявки из самой позиции. Событие заявки этого закрытия затем запускает вход в новом направлении, поэтому переворот записан двумя явными шагами, а не одной увеличенной заявкой.
- Одно вынесенное в параметры значение Volume подаётся на все четыре входных блока; два закрывающих блока объём не получают, потому что блок Close-position и так знает, сколько открыто.
- Блок Strategy trades подхватывает каждую собственную сделку стратегии и через String formatter отправляет её в уведомление типа Log, поэтому каждое исполнение оставляет одну строку с направлением, объёмом, инструментом и ценой.
- Вторая ветка отчитывается по часам, а не по рынку. Current time подаётся на два окна Working time — окно отчёта около полудня и окно сброса сразу после полуночи, — а Flag, поставленный между ними, превращает всё окно отчёта ровно в один импульс в день.
- Этот единственный импульс выпускает реализованный результат стратегии из переменной, которая хранит последнее переданное ей значение, форматирует его и пишет в лог. Поскольку переменная стартует с нуля, строка статуса появляется и в тот день, когда не было ни одной сделки.
Правила входа и выхода
- Вход в лонг: Пересечение быстрой экспоненциальной средней выше медленной, проверенное в момент, когда снимок на время свечи показывает нулевую позицию, отправляет рыночную заявку на покупку объёмом Volume. Если же открыта короткая позиция, то же пересечение сначала закрывает её полностью, а возникшая заявка на закрытие немедленно запускает вход в длинную позицию, так что направление меняется в пределах одной свечи.
- Вход в шорт: Пересечение быстрой экспоненциальной средней ниже медленной, проверенное в момент, когда снимок на время свечи показывает нулевую позицию, отправляет рыночную заявку на продажу объёмом Volume. Если же открыта длинная позиция, то же пересечение сначала закрывает её полностью, а возникшая заявка на закрытие немедленно запускает вход в короткую позицию.
- Выход: Ни стопа, ни тейк-профита, ни блока защиты здесь нет: позиция удерживается до противоположного пересечения, которое полностью закрывает её блоком Close-position, берущим объём из позиции. Отчётная ветка наблюдает за сделками и прибылью и никогда не выставляет, не заменяет и не отменяет заявок, поэтому отключение уведомлений не изменило бы торговое поведение.
Параметры
| Параметр | По умолчанию | Описание |
|---|---|---|
| Candles | 00:05:00 | Тайм-фрейм серии свечей; индикаторы и все построенные на них решения двигают только завершённые свечи. |
| Fast EMA Length | 9 | Период быстрой ExponentialMovingAverage; это более быстрая половина пары пересечения. |
| Slow EMA Length | 26 | Период медленной ExponentialMovingAverage; это более медленная половина пары пересечения. |
| Volume | 1 | Объём, подаваемый на четыре входных блока. Два закрывающих блока его игнорируют и берут размер из открытой позиции. |
| Report Window Begin | 12:00:00 | Начало дневного окна отчёта. Первый момент внутри него поднимает отчёт о статусе. |
| Report Window End | 12:05:00 | Конец дневного окна отчёта. Оно должно быть лишь достаточно широким, чтобы часы один раз попали внутрь; флаг оставляет от отчёта одну строку при любой ширине. |
| Day Reset Begin | 00:00:00 | Начало окна сброса, которое снимает флаг и разрешает новый отчёт на следующий день. |
| Day Reset End | 00:05:00 | Конец окна сброса. Между этим моментом и началом окна отчёта ветка молчит. |
| Fill Report Caption | Trade report | Заголовок, который пишется в каждом уведомлении о сделке, — по нему в логе узнают строки по отдельным сделкам. |
| Status Report Caption | Strategy status | Заголовок, который пишется в уведомлении о дневном статусе, — он отделяет его от строк по отдельным сделкам. |
Детали диаграммы
- Блок Candles выдаёт только завершённые пятиминутные свечи, а два блока Indicator считают по ним значения ExponentialMovingAverage с периодами 9 и 26. Фильтр «только сформированные» выключен, поэтому обе линии доступны с самого начала воспроизведения и обе выводятся на график.
- Блок Crossing срабатывает только на пересечении; Logical condition типа NOT превращает его событие «вниз» в положительный триггер. Текущая Position сохраняется в Variable, которая выпускается раз в свечу, а три блока Comparison превращают её в признаки нулевой, длинной и короткой позиции, которые четыре условия AND объединяют с пересечением.
- Шесть блоков Modify position работают по этим четырём условиям: два входа из нулевой позиции с условием
OpenPosition, два закрытия с условиемClosePositionи ещё два входаOpenPosition, запускаемые событием заявки соответствующего закрытия, — именно поэтому переворот происходит в два шага. Все шесть выставляют рыночные заявки, и ни один из них не ждёт онлайн-подключения. - Strategy trades выдаёт каждую собственную сделку. String Formatter оформляет её по шаблону
Fill: {Order.Side} {Trade.TradeVolume:0.########} {Order.Security.Id} @ {Trade.TradePrice:0.########}, а Notification типаLogпишет её под заголовком отчёта о сделках. - Current time подаётся на две проверки Working time; окно отчёта устанавливает Flag, а окно сброса его снимает — именно это ограничивает ветку одним импульсом в день. Импульс выпускает реализованное значение блока P&L из переменной, предустановленной в ноль, второй String Formatter пишет
Daily status: realized result {0}, а второе уведомлениеLogего публикует.
Использование
Импортируйте файл .json в Designer, прогоните схему на исторических данных в тестере, затем подстройте параметры или сами кубики под свой инструмент, прежде чем торговать вживую.