Стратегия Omzdwwi Pending Manager
Общее описание
Omzdwwi Pending Manager — это портированная на StockSharp версия советника MetaTrader 4 omzdwwi7739cyjayvs_1_65.mq4. Алгоритм поддерживает «кольцо» отложенных заявок вокруг текущей цены, по расписанию выставляет рыночные сделки и сопровождает позиции трейлинг-стопами. В C#-реализации используются только высокоуровневые методы Strategy: подписка на Level1-данные, BuyStop/SellLimit, ReRegisterOrder и стандартные логи.
Основные функции:
- Поддерживает до четырёх отложенных заявок (buy stop, sell stop, buy limit, sell limit) на заданном расстоянии от Bid/Ask.
- По заданному времени (
SignalHour:SignalMinute) может открыть рыночную покупку и/или продажу, если это разрешено параметрамиWaitCloseиMaxMarketOrders. - Для активных позиций рассчитывает классические тейк-профит и стоп-лосс, дополнительную цель
ExitProfitPoints, а также трейлинг-стоп, повторяющий MQL-функциюTrailingPositions(). - Для отложенных заявок реализует «подтягивание» к рынку в духе
TrailingOtlozh(): как только цена проходит дистанциюoffset + step, заявка переставляется ближе. - Контролирует глобальные пороги прибыли/убытка по счёту и пишет информационные/предупреждающие сообщения, аналогичные
Alert()в терминале MT4.
Источники данных
- Используется подписка
SubscribeLevel1(). Каждое обновление котировки запускает проверки времени, установку/перестановку заявок и логику выхода. Свечи и индикаторы не применяются. GetWorkingSecurities()возвращает пару(Security, DataType.Level1), что обеспечивает корректную работу как в реале, так и в тестере.
Логика входа
- Рыночные заявки по расписанию. При наступлении указанного часа и минуты включаются внутренние флаги (
TimeBuySignal,TimeSellSignalи т.д.). Следующее обновление Level1 проверяет ограничения и вызываетBuyMarket()либоSellMarket(). После успешного вызова флаги сбрасываются. - Отложенные заявки. Для каждой включённой галочкой заявки стратегия проверяет, существует ли активный ордер. Если ордера нет — выставляет его на расстоянии
StepPoints * PriceStep. При наличии ордера контролирует цену и при необходимости переставляет его черезReRegisterOrder.
Логика выхода для рыночных позиций
- Фиксированные стоп/профит настраиваются параметрами
MarketStopLossPointsиMarketTakeProfitPoints. Пересечение Bid/Ask с этими уровнями закрывает позицию рыночной сделкой. - Дополнительная цель
ExitProfitPointsвоспроизводит опциюPipsProfitв оригинале и закрывает позицию при достижении заданного профита даже без тейк-профита. - Трейлинг-стоп повторяет схему из MQL: если прибыль достаточна (или
RequireProfitBeforeTrailing=false), внутренняя цена стопа переносится наBid - MarketTrailingOffsetPoints * PriceStepдля лонга иAsk + MarketTrailingOffsetPoints * PriceStepдля шорта, с минимальным шагомMarketTrailingStepPoints.
Трейлинг отложенных ордеров
- Для stop-заявок используется пара
StopTrailingOffsetPoints/StopTrailingStepPoints. Как только Ask или Bid проходит соответствующее расстояние, заявка переносится ближе к рынку. - Для limit-заявок аналогично применяются
LimitTrailingOffsetPointsиLimitTrailingStepPoints.
Контроль рисков
MaxMarketOrdersограничивает количество одновременно открытых лотов (кратноOrderVolume) при отключённомWaitClose.UseGlobalLevels,GlobalTakeProfitPercent,GlobalStopLossPercentотслеживают изменение текущей стоимости портфеля и выводят сообщения о достижении порога прибыли/просадки.
Параметры
| Группа | Параметр | Назначение |
|---|---|---|
| Общие | OrderVolume |
Объём сделки (лот), применяемый для всех ордеров. |
| Исполнение | WaitClose |
Запрет на новые входы до полного закрытия позиции. |
| Исполнение | MaxMarketOrders |
Максимум одновременно открытых лотов в одном направлении. |
| Отложенные | EnableBuyStop / EnableSellStop / EnableBuyLimit / EnableSellLimit |
Включение конкретных типов заявок. |
| Отложенные | StopStepPoints, LimitStepPoints |
Дистанция в пунктах до цены размещения stop/limit ордеров. |
| Отложенные | StopTakeProfitPoints, StopStopLossPoints, LimitTakeProfitPoints, LimitStopLossPoints |
Защитные уровни после срабатывания отложенного ордера. |
| Отложенные | StopTrailingOffsetPoints, StopTrailingStepPoints, LimitTrailingOffsetPoints, LimitTrailingStepPoints |
Параметры «подтягивания» отложенных ордеров. |
| Риск | MarketTakeProfitPoints, MarketStopLossPoints |
Тейк-профит и стоп-лосс для рыночных позиций. |
| Риск | MarketTrailingOffsetPoints, MarketTrailingStepPoints, RequireProfitBeforeTrailing |
Настройки трейлинг-стопа для позиций. |
| Риск | ExitProfitPoints |
Дополнительная цель по прибыли. |
| Время | UseTimeSignals, SignalHour, SignalMinute |
Расписание запусков. |
| Время | TimeBuySignal, TimeSellSignal, TimeBuyStopSignal, TimeSellStopSignal, TimeBuyLimitSignal, TimeSellLimitSignal |
Какие ордера активируются по таймеру. |
| Мониторинг | UseGlobalLevels, GlobalTakeProfitPercent, GlobalStopLossPercent |
Пороговые значения для контроля счёта. |
| Прочее | SlippagePoints |
Резервный параметр для совместимости с оригиналом. |
Особенности переноса
- В MT4 тейк/стоп задавались прямо у отложенного ордера. В StockSharp они реализованы через стратегию, которая отслеживает достижение уровней и закрывает позицию рыночной сделкой.
- Звуковые оповещения заменены на записи в журнал (
AddInfoLog,AddWarningLog). - Значение
MODE_STOPLEVELброкера не доступно из StockSharp, поэтому пользователь должен сам проверять, что выбранные дистанции разрешены площадкой.
Как использовать
- Выберите
SecurityиPortfolio, где задан корректный шаг цены. - Настройте дистанции в пунктах — стратегия автоматически преобразует их в абсолютные цены через
Security.ShrinkPrice. - Запустите стратегию. Она подпишется на поток котировок и начнёт сопровождать ордера в режиме, аналогичном оригинальному советнику.
Совет: при тестировании убедитесь, что подаются данные Level1. Именно они приводят в действие таймер и трейлинг, как это происходило в MetaTrader 4.