Стратегия EXP FIBO ZZ
Обзор
EXP FIBO ZZ — порт советника MetaTrader 4 EXP_FIBO_ZZ_V1en на C#. Стратегия отслеживает последний подтверждённый коридор
ZigZag, размещает отложенный ордер Buy Stop над максимумом, Sell Stop под минимумом и прикрепляет защитные стоп-лосс и
тейк-профит, рассчитанные по коэффициентам Fibonacci. Реализация на StockSharp предоставляет все параметры через StrategyParam,
добавляет проверки корректности и сохраняет оригинальные настройки управления капиталом — выбор между балансом и свободными
средствами, а также перенос стопа в безубыток.
Торговая логика
Подготовка данных
- Подписывается на выбранный
CandleType(по умолчанию минутные свечи) и подаёт поток цен в индикаторыHighestиLowestдлинойZigZagDepth. - Упрощённый распознаватель ZigZag хранит три последних экстремума. Новый узел формируется, только если:
- максимум/минимум свечи совпадает с выходом индикатора;
- прошло не менее
ZigZagBackstepбаров после предыдущего разворота; - отклонение от текущего узла превышает
ZigZagDeviationPips(в метатрейдеровских пунктах).
- Подписывается на выбранный
Проверка коридора
- Как только есть три точки, две старшие задают границы. Торговля разрешена, когда высота коридора лежит между
MinCorridorPipsиMaxCorridorPips, а последний экстремум находится внутри диапазона с учётом минимального стоп-шагa брокера. - Вне торгового окна (
StartHour/StartMinute–StopHour/StopMinute) все отложенные ордера снимаются.
- Как только есть три точки, две старшие задают границы. Торговля разрешена, когда высота коридора лежит между
Выставление ордеров
- Уровни Buy Stop и Sell Stop равны границам коридора плюс/минус
EntryOffsetPips. - Дистанция стоп-лосса:
corridor * FiboStopLoss / 100. Тейк-профит:corridor * (FiboTakeProfit / 100 - 1)с отсечением отрицательных значений до нуля. - Перед постановкой вычисляется объём. Если
RiskPercent > 0, используется выбранный источник капитала (эквити приUseBalanceForRisk = true, либо эквити минус заблокированные средства) умноженный на риск-процент и поделённый на ориентировочную цену. Объём округляется к шагуVolumeStepи ограничивается диапазоном[MinVolume, MaxVolume]. При отсутствии данных применяетсяFixedVolume. - Активные ордера пересоздаются только при изменении цены или объёма, иначе остаются без изменений.
- Уровни Buy Stop и Sell Stop равны границам коридора плюс/минус
Ведение позиции
- После открытия позиции противоположный отложенный ордер отменяется, а защитные заявки регистрируются заново:
- стоп-лосс через
SellStop/BuyStopна рассчитанном расстоянии; - опциональный тейк-профит через
SellLimit/BuyLimit.
- стоп-лосс через
- Модуль безубытка (
EnableBreakEven) повторяет функциюMovingInWL: после полученияBreakEvenTriggerPipsприбыли стоп переносится к цене входа плюс/минусBreakEvenOffsetPips, что фиксирует небольшой доход и исключает повторные переносы.
- После открытия позиции противоположный отложенный ордер отменяется, а защитные заявки регистрируются заново:
Поддержание сессии
- При выходе за рамки торгового окна или при обнулении позиции все отложенные и защитные ордера снимаются. Метод
OnStoppedтакже удаляет их при завершении стратегии.
- При выходе за рамки торгового окна или при обнулении позиции все отложенные и защитные ордера снимаются. Метод
Параметры
| Название | Описание | Значение по умолчанию | Примечания |
|---|---|---|---|
CandleType |
Тип свечей для расчёта ZigZag. | 1m TimeFrame() |
Поддерживаются любые свечные типы StockSharp. |
ZigZagDepth |
Минимальное количество баров между разворотами. | 12 |
Аналог ExtDepth. |
ZigZagDeviationPips |
Минимальное отклонение (в пунктах MT4) для нового экстремума. | 5 |
Аналог ExtDeviation. |
ZigZagBackstep |
Минимум баров перед сменой направления. | 3 |
Аналог ExtBackstep. |
EntryOffsetPips |
Смещение от границ коридора для стоп-ордеров. | 5 |
Аналог n_pips. |
MinCorridorPips |
Нижняя граница высоты коридора. | 20 |
Аналог Min_Corridor. |
MaxCorridorPips |
Верхняя граница высоты коридора. | 100 |
Аналог Max_Corridor. |
FiboStopLoss |
Процент Fibonacci для стоп-лосса. | 61.8 |
Аналог Fibo_StopLoss. |
FiboTakeProfit |
Процент Fibonacci для тейк-профита. | 161.8 |
Аналог Fibo_TakeProfit. |
StartHour / StartMinute |
Начало торгового окна. | 00:01 |
Вне окна ордера снимаются. |
StopHour / StopMinute |
Конец торгового окна. | 23:59 |
Поддерживается переход через полночь. |
UseBalanceForRisk |
Источник капитала: эквити (true) или свободные средства (false). |
true |
Аналог Choice_method. |
RiskPercent |
Доля капитала на сделку. | 1 |
Значение 0 отключает риск-калькулятор. |
FixedVolume |
Фиксированный объём при отсутствии данных. | 0.1 |
Аналог Lots. |
EnableBreakEven |
Включить перенос стопа в безубыток. | true |
Аналог MovingInWL. |
BreakEvenTriggerPips |
Прибыль в пунктах для переноса стопа. | 13 |
Аналог LevelProfit. |
BreakEvenOffsetPips |
Смещение стопа относительно цены входа. | 2 |
Аналог LevelWLoss. |
DrawCorridorLevels |
Рисовать коридор на графике. | false |
Аналог флага линий в MT4. |
Особенности реализации
- Подсчёт пунктов соответствует MetaTrader: для инструментов с 3/5 знаками
PriceStepумножается на 10. - Цены и объёмы заявок округляются по биржевым атрибутам (
PriceStep,VolumeStep,MinVolume,MaxVolume). - При отсутствии информации по портфелю или цене стратегия безопасно возвращается к фиксированному объёму, не останавливая работу.
- Блок безубытка отменяет и переоформляет стоп только один раз, не вынося его дальше цены входа.
- При активном
DrawCorridorLevelsна графике отображается текущий ZigZag-коридор, что упрощает визуальный контроль.
Отличия от версии MetaTrader
- Исключены графические объекты, звуковые сигналы и комментарии — их заменяют средства визуализации StockSharp.
- Расчёт объёма использует данные портфеля и последние цены вместо
MarketInfo, поскольку требования к марже зависят от брокера. - Управление ордерами выполнено через высокоуровневые методы StockSharp (
BuyStop,SellStop,SellLimit,BuyLimit), что избавляет от ручной работы с тикетами при сохранении логики. - Распознаватель ZigZag реализован через встроенные индикаторы с параметрами глубины, отклонения и обратного шага, чтобы соответствовать потоковой модели свечей StockSharp.