Открыть на GitHub

Схема стратегии с лимитными заявками по границам сессионного канала

English | 中文 | Español | Deutsch | Português | 日本語

Эта схема ежедневно фиксирует девятичасовой ценовой канал и выставляет на его границах управляемую на стороне клиента OCO-пару ожидающих лимитных заявок. Логика схемы запрашивает отмену встречной заявки после исполнения; это не атомарная OCO-команда биржи. Канал задают завершённые пятиминутные свечи, подписка на живой BestBid предоставляет котировочные события для исполнения, а следующий суточный сброс отменяет оставшиеся заявки и корректирует позицию рыночным действием ReduceOnly объёмом Order Volume.

schema

Обзор стратегии

  • Завершённые пятиминутные свечи поступают в сформированные Highest 108 и Lowest 108. В момент суточного снимка их скользящее окно содержит свечи с OpenTime от 01:00 до 09:55 UTC включительно, то есть полную сессию 01:00–10:00.
  • Кубик рабочего времени выставления выбирает завершённую свечу с меткой 09:55:00–09:59:59. Временная метка свечи содержит OpenTime, поэтому эта свеча поступает при завершении в 10:00 UTC; Flag превращает результат окна ровно в один импульс выставления за сессию.
  • Импульс фиксирует обе границы канала и текущую позицию. Если Session Low < Session High и Position = 0, схема регистрирует лимитную покупку по сохранённому минимуму, а затем лимитную продажу по сохранённому максимуму; объём каждой равен 1, ShrinkPrice отключён.
  • Непрерывно подписанный кубик Level1 читает BestBid. Его поток котировок поддерживает живые обновления цены для исполнения двух ожидающих заявок торговым коннектором; BestBid не заменяет ни одну из сохранённых границ канала.
  • Первый MyTrade любой лимитной заявки запрашивает отмену сохранённой встречной Order. Это клиентская OCO-логика: при обычной последовательной обработке событий она рассчитана на одно исполнение заявки канала, однако почти одновременные исполнения могут опередить отмену, поскольку на бирже операция не атомарна. При следующем сбросе схема отправляет запрос массовой отмены, дополнительно передаёт обе сохранённые заявки по детерминированным путям отмены и выполняет рыночное действие ReduceOnly объёмом Order Volume. При штатном единственном исполнении этот объём полностью закрывает позицию; если фактическая экспозиция отличается, ReduceOnly только сокращает её. График показывает свечи, обе линии канала, два потока заявок и все сделки входа и закрытия при сбросе.

Правила входа и выхода

  • Вход в лонг: На границе сессии в 10:00 UTC, если оба индикатора на 108 значений сформированы, сохранённый минимум ниже сохранённого максимума, а снимок позиции равен нулю, схема выставляет лимитную покупку объёмом Order Volume по Session Low. Заявка остаётся активной до исполнения или срабатывания одного из путей отмены.
  • Вход в шорт: При тех же проверках сформированного канала и нулевой позиции схема выставляет лимитную продажу объёмом Order Volume по Session High. Если эта заявка исполняется первой, её событие MyTrade передаёт сохранённую лимитную покупку в кубик отмены.
  • Выход: Кубиков стоп-лосса и тейк-профита нет. После первого исполнения канала клиентская логика запрашивает отмену встречной заявки вместо намеренного разворота позиции. Позиция остаётся открытой до сброса, связанного со свечой 00:55 и выполняемого при её завершении в 01:00 UTC; сброс запрашивает массовую отмену, явно отменяет обе сохранённые лимитные заявки и применяет рыночное действие ReduceOnly объёмом Order Volume. Оно полностью закрывает штатную позицию от одного исполнения и не может увеличить или развернуть отличающуюся фактическую экспозицию.

Параметры

Параметр По умолчанию Описание
Candles Series 00:05:00 Пятиминутная серия свечей; канал и два суточных временных окна обновляют только завершённые свечи.
Session High Length 108 Число завершённых свечей в сформированном Highest. При заданных таймфрейме и окнах 108 свечей покрывают 01:00–10:00 UTC.
Session High Source unset Не задан. Highest автоматически читает High каждой завершённой свечи.
Session Low Length 108 Число завершённых свечей в сформированном Lowest. Сохраняйте его равным Session High Length, чтобы обе границы описывали одну сессию.
Session Low Source unset Не задан. Lowest автоматически читает Low каждой завершённой свечи.
Order Volume 1 Объём каждой ожидающей лимитной заявки и действия ReduceOnly при сбросе. В штатном пути с одним исполнением он совпадает с размером позиции; ReduceOnly не даёт сбросу увеличить или развернуть экспозицию, если её фактический объём отличается.

Детали диаграммы

  • Кубик Свечи выдаёт только завершённые пятиминутные свечи. Два кубика Индикатор, ограниченные сформированными значениями, напрямую рассчитывают по этому потоку скользящие Highest 108 и Lowest 108.
  • Два кубика Рабочее время проверяют OpenTime свечи. Интервал выставления 09:55:00–09:59:59 действует при завершении этой свечи в 10:00 UTC, а интервал 00:55:00–00:59:59 — при завершении в 01:00 UTC. Этот сдвиг на одну свечу входит в настройку времени и не является задержкой исполнения.
  • Flag выставления выдаёт один импульс и остаётся установленным до сброса. Кубики Переменная фиксируют по этому импульсу Highest, Lowest, Position, ноль и объём; Сравнение и Логическое условие допускают одну пару с корректным каналом и нулевой позицией.
  • Кубик Регистрация заявки покупки сначала выставляет лимит по Session Low. Его зарегистрированная Order обновляет входы максимума и объёма перед запуском регистрации продажи по Session High. У обеих заявок ShrinkPrice равен false; они остаются рабочими до исполнения или отмены.
  • Кубик Level1 непрерывно подписан на BestBid. Сохранённый поток включает живую обработку котировок для исполнения ожидающих лимитов, а их цены по-прежнему поступают только из зафиксированных Highest и Lowest.
  • Каждая зарегистрированная Order сохраняется. MyTrade покупки передаёт сохранённую продажу в Отмену заявки, а MyTrade продажи симметрично отменяет покупку. Сброс вызывает Массовую отмену заявок, а затем также передаёт обе сохранённые заявки соответствующим кубикам отмены, поэтому очистка не зависит от подтверждения группового запроса.
  • Последним импульс сброса запускает Изменение позиции с условием ReduceOnly, объёмом Order Volume и алгоритмом MarketOrder. В расчётном последовательном пути с одним исполнением этот объём полностью закрывает позицию; если исполнения конкурируют или фактическая экспозиция отличается, ReduceOnly не даёт действию увеличить или развернуть её. Панель графика получает завершённые свечи, Highest, Lowest, оба потока Order, оба потока MyTrade лимитных заявок и поток MyTrade закрытия при сбросе.

Использование

Импортируйте файл .json в Designer, прогоните схему на исторических данных в тестере, затем подстройте параметры или сами кубики под свой инструмент, прежде чем торговать вживую.