Стратегия Dematus
Общее описание
Стратегия Dematus является портом одноимённого советника MetaTrader 5. Она использует осциллятор DeMarker для поиска разворотных моментов и поддерживает пирамидинг с динамическим увеличением объёма. Работа ведётся по свечам типа CandleType, сигналы рассчитываются только на полностью сформированных барах.
На каждом завершённом баре анализируются два значения DeMarker: текущее и значение двух баров назад. Подъём показателя выше уровня 0.3 после нахождения ниже этой границы трактуется как восстановление бычьего импульса, а падение ниже 0.7 после нахождения выше этого уровня сигнализирует об усилении медведей. После первичного входа стратегия может добавлять позицию, если цена ушла от последней сделки не менее чем на DistancePips и индикатор вновь дал подтверждение.
Логика торговли
- Первичный вход:
- Покупка при пересечении уровня 0.3 снизу вверх (значение два бара назад < 0.3, текущее значение > 0.3) при отсутствии открытой позиции.
- Продажа при пересечении уровня 0.7 сверху вниз (значение два бара назад > 0.7, текущее значение < 0.7) при отсутствии открытой позиции.
- Добавление к позиции:
- Стратегия хранит цену последней сделки. Если цена смещается против позиции как минимум на
DistancePips(в пересчёте в цену) и возникает новый сигнал DeMarker в ту же сторону, подаётся заявка на добавление. - Объём очередной заявки равен предыдущему исполненному объёму, умноженному на
VolumeMultiplier, затем приводится к шагу объёма инструмента и проверяется на соответствие ограничениям биржи. Это повторяет механику коэффициента лотов в исходном советнике.
- Стратегия хранит цену последней сделки. Если цена смещается против позиции как минимум на
- Защита позиции:
- На каждую новую позицию выставляется фиксированный стоп по параметру
StopLossPips. При добавлении позиция переустанавливает общий уровень стопа. - Если
TrailingStopPips> 0, стоп подтягивается вслед за ценой, когда прибыль превышаетTrailingStopPips + TrailingStepPips, что эквивалентно логике трейлинга в MQL.
- На каждую новую позицию выставляется фиксированный стоп по параметру
- Защита капитала:
- В состоянии без позиции формируется виртуальный уровень капитала
Balance - VirtualStopEquity. - После роста капитала сверх
TrailingStartEquityот начального баланса активируется трейлинг по капиталу: фиксируется максимум и создаётся плавающий порогPeak - TrailingEquity. - При падении капитала ниже виртуального порога все позиции закрываются рыночными ордерами.
- В состоянии без позиции формируется виртуальный уровень капитала
Параметры
| Параметр | Описание |
|---|---|
InitialVolume |
Базовый объём первой сделки и объём после полного закрытия позиции. |
DemarkerLength |
Период расчёта индикатора DeMarker. |
StopLossPips |
Расстояние до фиксированного стоп-лосса в пунктах (0 — без стопа). |
TrailingStopPips |
Дистанция трейлинг-стопа в пунктах (0 — отключено). |
TrailingStepPips |
Минимальный дополнительный ход в пунктах перед подтяжкой трейлинг-стопа; должен быть > 0 при включённом трейлинге. |
DistancePips |
Минимальное отступление цены от последней сделки (в пунктах) перед добавлением позиции. |
TrailingEquity |
Отступ между максимумом капитала и защитным порогом при трейлинге по equity. |
VirtualStopEquity |
Буфер ниже баланса, определяющий стартовый уровень виртуального стопа при отсутствии позиции. |
TrailingStartEquity |
Прирост капитала, необходимый для активации трейлинга по equity. |
VolumeMultiplier |
Множитель, применяемый к объёму последней сделки при пирамидинге. |
ResetEntryPrice |
При включении очищает сохранённую цену входа после выхода, блокируя немедленное добавление. |
CandleType |
Тип/таймфрейм свечей, по которым выполняются расчёты и торговые решения. |
Особенности реализации
- Используется высокоуровневый API StockSharp. Подписка на свечи осуществляется через
SubscribeCandles, а индикатор DeMarker подключается методомBind, что позволяет получать готовые значения без прямого доступа к буферам. - Состояние индикатора хранится в трёх переменных, повторяющих обращение
iDeMarkerGet(0)иiDeMarkerGet(2)в оригинальном коде. - Объёмы заявок приводятся к шагу объёма инструмента и проверяются на соответствие минимальным и максимальным ограничениям.
- Контроль equity реализован через
Portfolio.CurrentValue: при срабатывании виртуального стопа стратегия принудительно закрывает позицию. - Размер пункта вычисляется на основе
Security.PriceStep. Для инструментов с точностью 3 или 5 знаков размер пункта умножается на 10, как и в MQL-версии.
Рекомендации по использованию
- Необходимо, чтобы подключённый портфель предоставлял актуальные данные по equity, иначе механика защиты капитала не сработает.
- Стратегия обрабатывает только завершённые свечи (
CandleStates.Finished), что соответствует логике "нового бара" в исходном советнике. - Пороговые значения 0.3 / 0.7 заданы константами. При необходимости их можно изменить непосредственно в коде.
- Стратегия подходит для реальной торговли и бэктестов. В режиме тестирования важно, чтобы симулятор портфеля возвращал значения equity, иначе блок защиты капитала будет неактивен.