Стратегия является портом советника MetaTrader "FiboArc" (каталог MQL/24924) на платформу StockSharp. В оригинале
использовались несколько фильтров импульса и пробой линий Фибоначчи. В версии для StockSharp сохранена та же идея, но
реализована на высокоуровневом API свечей:
Две линейно-взвешенные скользящие средние (FastMaPeriod, SlowMaPeriod) задают направление тренда.
Индикатор Momentum проверяет удалённость от нейтрального уровня 100 и отсеивает слабые сигналы.
MACD подтверждает импульс и отслеживает свежие пересечения основной и сигнальной линий.
Упрощённая дуга Фибоначчи пересчитывается на каждом баре по ценам открытия двух опорных свечей,
выбранных параметрами TrendAnchorLength и ArcAnchorLength. Пробой этого динамического уровня заменяет работу с объектом
графика из версии для MetaTrader.
Расчёт выполняется только по закрытым свечам, что полностью соответствует поведению оригинального советника и исключает эффект
подглядывания вперёд.
Индикаторы и поток данных
Подписка ведётся на один поток свечей, задаваемый параметром CandleType. Каждая новая завершённая свеча передаётся в
индикаторы через SubscribeCandles(...).BindEx(...):
Индикатор
Назначение
Настройки по умолчанию
LinearWeightedMovingAverage (быстрая)
Краткосрочный тренд, сигнал на вход
FastMaPeriod = 6, типичная цена
LinearWeightedMovingAverage (медленная)
Фильтр направления тренда
SlowMaPeriod = 85, типичная цена
Momentum
Подтверждение силы движения через отклонение от 100
Обрабатываются только финальные значения индикаторов, ручные вызовы GetValue() не используются и требования репозитория
соблюдены.
Перестройка дуги Фибоначчи
В MetaTrader дуга рисовалась как объект и считывалась функцией ObjectGetValueByShift. В StockSharp графические объекты не
нужны, поэтому дуга моделируется численно:
TrendAnchorLength задаёт индекс базовой точки, а ArcAnchorLength — второй опорной точки.
Уровень дуги вычисляется как линейная интерполяция между ценами открытия опорных свечей с коэффициентом FibonacciRatio
(по умолчанию 0.618).
Для фиксации пробоя сравниваются открытие предыдущей свечи с прежним уровнем дуги и открытие текущей свечи с новым уровнем.
Пересечение снизу вверх (fibCrossUp) или сверху вниз (fibCrossDown) воспроизводит логику исходного советника.
Торговые правила
Вход в покупки
Покупка выполняется, когда соблюдены все условия:
Фиксируется пробой дуги Фибоначчи вверх (fibCrossUp).
Быстрая LWMA выше медленной (bullishTrend).
Модуль отклонения Momentum от 100 не меньше MomentumThreshold.
Линия MACD выше сигнальной либо произошло пересечение вверх.
Отсутствует открытая длинная позиция (позиция ≤ 0).
Объём заявки — значение Volume плюс величина открытого короткого объёма, чтобы стратегия могла перевернуться из шорта в лонг.
Вход в продажи
Логика полностью симметрична: fibCrossDown, быстрая LWMA ниже медленной, Momentum превышает порог, MACD ниже сигнальной линии.
Выходы
Позиция закрывается при возникновении любого из событий:
Изменение условий тренда или MACD в противоположную сторону.
Появление обратного сигнала пробоя дуги Фибоначчи.
Срабатывание адаптивного стоп-лосса или тейк-профита.
Закрытие всегда выполняется рыночными заявками, как и в версии MetaTrader.
Управление рисками
Сохранены ключевые элементы оригинального советника:
StopLossDistance и TakeProfitDistance задают фиксированные расстояния в ценовых единицах.
EnableBreakEven, BreakEvenTrigger, BreakEvenOffset управляют переводом стопа в безубыток.
EnableTrailing, TrailingTrigger, TrailingDistance включают свечной трейлинг.
Текущие уровни стопа и цели рассчитываются внутри стратегии и обновляются на каждом баре. Метод OnNewMyTrade пересчитывает
уровни после фактического исполнения заявки.