Стратегия OCO Pending Orders
Общее описание
Стратегия OCO Pending Orders переносит логику советника MetaTrader4 OCO_EA.mq4 в высокоуровневый API StockSharp. Трейдер может одновременно задать до четырёх ценовых уровней (покупка лимитом, покупка стопом, продажа лимитом, продажа стопом). Когда лучшая заявка на покупку или продажу достигает выбранного значения, стратегия немедленно отправляет рыночную заявку и при необходимости отменяет остальные уровни в классическом режиме «одна исполняется – остальные снимаются».
Стратегия использует только данные уровня 1, индикаторы не требуются. Она рассчитана на ручные и полуавтоматические сценарии, когда уровни задаёт трейдер, а исполнение и сопровождение сделки берет на себя платформа.
Логика работы
- Трейдер задаёт нужные уровни и переводит параметр Armed в значение
true. - Стратегия подписывается на обновления Level1 и хранит последнюю лучшую цену bid и ask.
- При каждом обновлении котировок выполняются проверки:
- Если лучшая цена ask меньше либо равна уровню Buy limit, отправляется рыночная заявка на покупку.
- Если лучшая цена ask больше либо равна уровню Buy stop, отправляется рыночная заявка на покупку.
- Если лучшая цена bid больше либо равна уровню Sell limit, отправляется рыночная заявка на продажу.
- Если лучшая цена bid меньше либо равна уровню Sell stop, отправляется рыночная заявка на продажу.
- После срабатывания соответствующий уровень обнуляется. При включённом параметре Use OCO link оставшиеся уровни очищаются сразу же, полностью повторяя поведение оригинального советника. При выключенном параметре остальные уровни продолжают контролироваться до собственного срабатывания или ручного удаления.
- Когда все уровни равны нулю, стратегия автоматически переводит Armed в
false, предотвращая случайные сделки.
Все сделки выполняются методами BuyMarket и SellMarket, что гарантирует немедленное исполнение с учётом подключённой биржевой площадки. В журнал добавляются подробные сообщения о каждом срабатывании.
Параметры
- Order volume – объём заявки при каждом срабатывании. Значение должно быть положительным.
- Buy limit price – уровень ask для входа в длинную позицию по лимитному сценарию.
0отключает уровень. - Buy stop price – уровень ask для входа в длинную позицию по стоп-сценарию.
0отключает уровень. - Sell limit price – уровень bid для входа в короткую позицию по лимитному сценарию.
0отключает уровень. - Sell stop price – уровень bid для входа в короткую позицию по стоп-сценарию.
0отключает уровень. - Stop loss (pips) – расстояние защитного стоп-ордера в пунктах. Конвертируется в цену через
Security.PriceStep(если шаг цены не задан, используется значение1). - Take profit (pips) – расстояние защитного тейк-профита в пунктах. Преобразование аналогично стопу.
- Use OCO link – при значении
trueпервая исполненная заявка очищает остальные уровни и отключает стратегию; при значенииfalseоставшиеся уровни продолжают контролироваться. - Armed – переключатель, разрешающий или запрещающий торговлю. Если активных уровней не осталось, стратегия автоматически сбрасывает параметр в
false.
Управление рисками
В методе OnStarted стратегия включает StartProtection, рассчитывая абсолютные расстояния до стоп-лосса и тейк-профита из параметров в пунктах. Защитные заявки выставляются как рыночные, что повышает вероятность выхода даже на малоликвидных инструментах.
Стратегия не размещает отложенные лимитные заявки на бирже, а реагирует на факт достижения цены и выполняет вход рыночным ордером — ровно так же действовал исходный MQL-советник, который после входа модифицировал сделку на заданные расстояния стопа и тейка.
Рекомендации по использованию
- Настройте соединение, инструмент и портфель в StockSharp стандартным образом.
- Укажите желаемый объём в параметре Order volume.
- Задайте нужные уровни, переведите Armed в
true. Уровни, равные0, не учитываются. - При необходимости отключите Use OCO link, если требуется удерживать остальные уровни после первой сделки.
- Следите за журналом стратегии, чтобы контролировать моменты срабатывания и автоматический сброс параметров.
Помните, что преобразование пунктов в цену использует шаг котировки, предоставленный брокером. Для инструментов с нестандартным шагом (например, дробные пункты) перед активацией стратегии скорректируйте значения стопа и тейка.
Отличия от оригинального MQL-скрипта
- Вместо ручной модификации ордеров применяется
StartProtection, автоматически выставляющий защитные заявки. - Используются высокоуровневые подписки на Level1, а не прямой доступ к глобальным переменным
Bid,Ask,High,Low. - Все параметры оформлены через
StrategyParam<T>, поэтому их легко менять и оптимизировать в интерфейсе StockSharp. - Уведомления выводятся в журнал стратегии, заменяя комментарии и звуковые сигналы MT4.