Стратегия VirtPO TestBed Scalp
Стратегия переносит эксперта VirtPOTestBed_ScalpM1 из MetaTrader 4 на высокоуровневый API StockSharp. Основная идея сохранена: создаются виртуальные отложенные ордера, которые активируются при пересечениях стохастика и исполняются, когда цена подтверждает импульс. Все фильтры, правила управления позицией и расписание из оригинала реализованы средствами StockSharp.
Основная логика
Виртуальные отложенные ордера. При отсутствии позиции на каждом закрывшемся баре выполняется блок фильтров:
- спред не должен превышать
SpreadMaxPips(используются котировки Level1); - средний тиковый объём за три последних бара больше
VolumeLimit; - средняя абсолютная волатильность (размер тела баров за
VolatilityPeriod) превышаетVolatilityLimit; - ширина полос Боллинджера (период
BollingerPeriod, ширина 2) находится в диапазонеBollingerLowerLimit–BollingerUpperLimit; - текущее время входит в торговое окно (
EntryHour+OpenHours) и не попадает в запрещённые дни (Day1,Day2, пятничныйFridayEndHour); - разница между быстрой и медленной SMA в пунктах превышает
SmaDifferencePipsпо модулю; - тело предыдущего бара меньше
LastBarLimitPips.
После прохождения фильтров анализируются пересечения стохастика:
- пересечение вверх через
StochasticSetLevelактивирует виртуальный buy stop на расстоянииPoThresholdPipsвыше bid; - пересечение вниз через
100 - StochasticSetLevelактивирует виртуальный sell stop на таком же расстоянии ниже bid. Для каждого виртуального ордера сохраняются время истечения (PoTimeLimitMinutes) и расстояния стопа / тейк-профита (StopLossPips,TakeProfitPips).
- спред не должен превышать
Исполнение. Если включён флаг
TickLevel, стратегия отслеживает поток сделок и исполняет виртуальные ордера сразу после пробоя уровня. ПриTickLevel = falseпроверка выполняется на закрытии бара. Когда цена пересекает виртуальный уровень, отправляется рыночная заявка, а виртуальный ордер удаляется.Риск-менеджмент. После открытия позиции отслеживаются:
- фиксированные stop-loss и take-profit в пунктах от цены входа;
- опциональный трейлинг-стоп
TrailingStopPipsпо экстремуму с начала сделки; - максимальное время удержания
CloseTimeMinutesс фильтромProfitType(0 — закрыть всё, 1 — только прибыль, 2 — только убыток).
Все расстояния переводятся в цену по PriceStep инструмента с учётом пятизначных котировок, как в MQL. Параметр OrderVolume задаёт объём рыночной заявки. После закрытия позиции состояние стратегии сбрасывается.
Важные особенности
- Для расчёта спреда и триггеров необходим поток Level1; без лучшего bid/ask фильтры блокируют сделки.
- Режим
TickLevelповторяет поведение эксперта: при отключении исполнение происходит только на закрытии баров, что удобнее для тестирования. - Стратегия работает с одной совокупной позицией, аналогично ограничению количества ордеров в MT4.
Параметры
| Группа | Параметр | Описание |
|---|---|---|
| General | Candle Type | Тип свечей (по умолчанию 1 минута). |
| Execution | Tick Level | Использовать поток сделок для немедленного исполнения виртуальных ордеров. |
| Execution | PO Threshold (pips) | Расстояние от bid до уровня виртуального стопа. |
| Execution | PO Lifetime (min) | Время жизни виртуального ордера. |
| Filters | Max Spread (pips) | Максимально допустимый спред. |
| Filters | Volume Limit | Минимальный средний тиковый объём. |
| Filters | Volatility Period | Количество баров для расчёта волатильности. |
| Filters | Volatility Limit | Минимальный размер тела бара в пунктах. |
| Filters | Bollinger Period | Период полос Боллинджера. |
| Filters | Bollinger Lower / Upper | Допустимая ширина полос в пунктах. |
| Filters | Last Bar Limit | Максимальное тело предыдущего бара. |
| Trend | Fast/Slow SMA | Периоды средних для фильтра тренда. |
| Trend | SMA Difference | Минимальная разница SMA в пунктах. |
| Stochastic | %K / %D / Smooth | Параметры стохастика. |
| Stochastic | Stochastic Set | Уровень активации виртуального ордера. |
| Stochastic | Stochastic Go | Уровень исполнения виртуального ордера. |
| Trading | Order Volume | Базовый объём сделки. |
| Risk | Take Profit / Stop Loss / Trailing Stop | Дистанции выходов в пунктах. |
| Schedule | Disable Days, Day1, Day2 | Настройки запрета по дням недели (99 — отключить). |
| Schedule | Entry Hour / Open Hours | Старт и длительность торгового окна. |
| Schedule | Friday Cut-off | Час завершения торговли в пятницу. |
| Risk | Max Lifetime | Ограничение по времени удержания позиции (≥5000 — выключить). |
| Risk | Profit Filter | 0 — закрыть любую позицию, 1 — только прибыльную, 2 — только убыточную после таймера. |
Отличия от оригинала
- Класс MQL
CPOзаменён внутренним состоянием, которое вызываетBuyMarket/SellMarketпри пробое уровня. - Стопы и тейк-профиты проверяются по максимумам/минимумам свечи (в тестах) либо по тикам, если они доступны. Частичное исполнение и хеджевые позиции не поддерживаются.
- Алгоритм автолота
GLotsне переносился — в StockSharp используется фиксированныйOrderVolume.
Такое упрощение сохраняет торговую идею и вписывается в модель StockSharp с единой позицией.