Открыть на GitHub

Возврат Last Price к средней лимитами по Level1

Главная тема примера — кубики Order registering и Level1: знакомый возврат от отклонения EMA выражен маркетабельными лимитными заявками. Несмотря на историческое название стратегии, все решения по-прежнему принимаются только по завершённой четырёхчасовой свече; тикового сигнального пути здесь нет.

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

  • Закрытия завершённых четырёхчасовых свечей питают EMA(20) и сравниваются с границами на 0,5% ниже и выше неё.
  • При нулевой позиции close ниже нижней границы требует покупку, а close выше верхней — продажу.
  • Лонг закрывается при возврате close к EMA или выше, шорт — при возврате к EMA или ниже.
  • На каждой свече фиксируется best ask для buy-лимита и best bid для sell-лимита; гейты положительной цены не дают поставить заявку до появления котировки.
  • Один и тот же объём одна единица используется для входа и выхода, поэтому позиция, открытая схемой, обнуляется встречным исполнением.

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

  • Вход в лонг: При Position == 0 и Close < EMA × (1 − 0,5/100) регистрируется buy limit по сохранённому best ask. Цена через спред должна исполниться подобно BuyMarket из исходника.
  • Вход в шорт: При Position == 0 и Close > EMA × (1 + 0,5/100) регистрируется sell limit по сохранённому best bid. Цена через спред должна исполниться подобно SellMarket.
  • Выход: При Position > 0 и Close >= EMA общий sell-блок продаёт одну единицу по best bid. При Position < 0 и Close <= EMA общий buy-блок покупает одну единицу по best ask.

Параметры

Параметр По умолчанию Описание
Candle Time Frame 04:00:00 Интервал завершённых свечей для EMA и всех решений; совпадает с дефолтом C#.
EMA Period 20 Число завершённых закрытий в ExponentialMovingAverage.
Entry Distance, % 0.5 Процентное отклонение от EMA, необходимое для входа из нулевой позиции.
Shared Entry/Exit Volume 1 Единый объём входных и выходных лимитных заявок.

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

  • C# использует рыночные заявки и на входе, и на выходе. Схема намеренно показывает Order registering и ставит маркетабельный лимит: buy по best ask, sell по best bid — ради аналогичного немедленного исполнения.
  • Пассивный вариант покупал бы по best bid и продавал по best ask, но тогда понадобился бы Order cancellation или replacement для заявок, оставшихся после смены сигнала.
  • Close и EMA приходят из одной завершённой свечи. Небольшая переменная выпускает сохранённый close только после обновления EMA и не даёт сравнить новый close со старой средней.
  • Общий объём повторяет BuyMarket/SellMarket без аргумента, использующие Strategy.Volume. Внешнюю позицию или позицию другого размера фиксированный выход одной единицей не обязан обнулить.
  • Торговая идея пересекается с опубликованной MA_Deviation. Отличительный урок здесь — явная фиксация котировок Level1 и исполнение маркетабельными лимитами.

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

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