Стратегия «Фиксация equity по проценту»
Общее описание
- Категория: управление рисками / автоматизация на уровне счёта.
- Оригинальный источник: советник MQL5 «Close by Equity Percent» (#20880).
- Назначение: отслеживать, насколько текущая стоимость портфеля (equity) превосходит последнюю фиксированную величину баланса, и при достижении заданного коэффициента закрывать все открытые позиции.
- Инструменты: любые бумаги, которые уже торгуются другими стратегиями или вручную в рамках выбранного портфеля.
Основная идея
Первоначальный советник сравнивал AccountEquity с AccountBalance. Баланс меняется только после полного закрытия позиций, поэтому при достижении порога Balance * EquityPercentFromBalance все сделки фиксируются. Перенос в StockSharp сохраняет эту защиту прибыли, используя высокоуровневый API стратегии.
Как работает стратегия
- При запуске фиксируется текущее значение портфеля — это «баланс» в состоянии без позиций.
- Стратегия подписывается на минутные свечи (параметр
CandleType) по выбранному инструменту. Поток свечей используется исключительно как таймер проверки equity. - На каждой завершённой свече:
- Если портфель плоский (нет позиций), эталон баланса обновляется до текущего значения портфеля.
- Текущее equity (
Portfolio.CurrentValue) сравнивается сbalanceSnapshot * EquityPercentFromBalance. - Если условие выполняется, стратегия вызывает
ClosePosition(position.Security)для каждой открытой позиции и фиксирует результат.
- После закрытия всех позиций баланс снова обновляется, и цикл ожидания повторяется.
Параметры
| Имя | Тип | Значение по умолчанию | Описание |
|---|---|---|---|
EquityPercentFromBalance |
decimal | 1.20 | Коэффициент роста equity относительно баланса, при котором нужно закрыть все позиции. Значение 1.20 означает фиксацию прибыли при увеличении equity до 120% от последнего баланса. |
CandleType |
DataType |
Свечи таймфрейма 1 минута | Поток данных, запускающий периодические проверки equity. Можно изменить на более подходящий таймфрейм. |
Особенности реализации
- Для закрытия позиций используется
Strategy.ClosePosition(Security)— прямой аналог циклаPositionCloseиз исходного MQL-кода. - Снимок баланса обновляется только после полного закрытия всех позиций, что соответствует поведению
AccountBalanceв MetaTrader. - Стратегия не открывает сделки — она контролирует уже существующие позиции и закрывает все бумаги в выбранном портфеле.
- Перед запуском необходимо задать и
Portfolio, иSecurity. Инструмент нужен лишь для получения свечей, играющих роль таймера.
Рекомендации по использованию
- Запустите стратегию на том портфеле, который требуется защитить, и выберите ликвидный инструмент для тайминга (например, основной фьючерс или индекс).
- Настройте
EquityPercentFromBalanceпод желаемый уровень фиксации прибыли. - При росте equity до указанного коэффициента стратегия автоматически закроет все позиции.
- После фиксации прибыль переходит в баланс, снимок обновляется, и следующий цикл начнётся заново с новой базой.
Пример
- Начальный снимок баланса: 10 000 USD.
EquityPercentFromBalance = 1.2→ целевое equity = 12 000 USD.- Позиции выросли, equity достигло 12 050 USD.
- Стратегия закрыла все позиции; новый баланс = 12 000 USD.
- Далее требуется рост до 14 400 USD (12 000 * 1.2), чтобы снова сработало условие фиксации.