Возврат 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, прогоните схему на исторических данных в тестере, затем подстройте параметры или сами кубики под свой инструмент, прежде чем торговать вживую.