FT Trend Follower — порт стратегии FT_TrendFollower.mq4 с MetaTrader 4 на платформу StockSharp. Алгоритм сопровождает среднесрочные тренды, комбинируя веер из нескольких экспоненциальных средних (GMMA), осциллятор Laguerre, фильтр пересечения быстрых и медленных EMA и подтверждение по основной линии MACD. Сделки открываются только после того, как цена погружается внутрь веера GMMA, разворачивается от экстремума Laguerre и большинство средних снова наклоняются в сторону предполагаемого тренда. Управление позицией полностью повторяет исходный советник: опциональный «свечный» стоп, фиксированный стоп и три взаимоисключающих модуля поэтапного выхода, основанных на дневных пивотах или скользящих каналах.
Логика стратегии
Структура GMMA и определение тренда
GMMA строится в диапазоне от StartGmmaPeriod до EndGmmaPeriod. Периоды разбиваются на пять групп по BandsPerGroup линий, что соответствует параметру CountLine в оригинальном EA.
Направление тренда определяется сравнением более медленной группы длинных GMMA (индекс CountLine + CountLine от конца массива) и более быстрой длинной группы (индекс CountLine от конца). Если медленные средние находятся выше быстрых — тренд восходящий, ниже — нисходящий.
Подтверждение наклона подсчитывает, сколько коротких, средних и длинных GMMA выросли или упали относительно предыдущей свечи. Для входа количество растущих (или падающих) линий должно превышать половину всего веера — это аналог счётчиков controlvverh/controlvverhS в MetaTrader.
Подготовка сигнала
Сброс по закрытию — если свеча закрывается ниже самой медленной GMMA, модуль покупок становится «вооружённым», если выше — модуль продаж. Пересечение самой быстрой GMMA в обратную сторону сбрасывает флаги (аналог CloseOk).
Триггер Laguerre — фильтр Laguerre (LaguerreGamma) должен сперва опуститься ниже LaguerreOversold (для лонга) или подняться выше LaguerreOverbought (для шорта) при сохранении контакта с длинными средними. После возврата через порог сигнал разрешается.
Пересечение EMA — для лонга быстрая EMA (FastSignalLength) должна опуститься ниже медленной (SlowSignalLength), а затем подняться выше неё; для шорта условия зеркальные.
Фильтр MACD — основная линия MACD (параметры 5/35/5, как в советнике) должна быть положительной для покупок и отрицательной для продаж.
Правила входа
Покупка выполняется при одновременном выполнении условий:
Тренд признан восходящим, а счётчик положительных наклонов превышает половину всех линий GMMA.
Триггер Laguerre был заранее активирован и текущее значение поднялось выше LaguerreOversold.
Быстрая EMA находится выше медленной после предыдущего «снижения».
Значение MACD больше нуля.
Продажа требует зеркальных условий: Laguerre должен пересечь LaguerreOverbought сверху вниз, MACD — ниже нуля и т.д. При развороте существующей позиции объём заявки автоматически включает объём для закрытия противоположного плеча, поэтому итоговый нетто-объём всегда равен Volume.
Управление рисками и выходы
Стопы — можно выбрать «свечный» стоп (UseSwingStop) на расстоянии SwingStopPips пунктов за минимумом/максимумом предыдущей свечи или фиксированный стоп (UseFixedStop) на FixedStopPips пунктов. Одновременное включение обоих вариантов запрещено и приводит к ошибке при запуске — как и в оригинальном советнике.
Модуль выхода по пивотам (Quit) — первая половина позиции закрывается при пробое дневного уровня R1/S1 при наличии плавающей прибыли. Остаток закрывается, как только индикатор Hull Moving Average (HmaPeriod) выдаёт валидное значение (аналог проверки буфера hma1).
Модуль выхода по диапазону пивотов (Quit1) — первая фиксация происходит на R1/S1, остаток закрывается на R2/S2, если сделка остаётся прибыльной.
Модуль выхода по каналу (Quit2) — первая фиксация также на R1/S1, оставшаяся часть закрывается, когда следующая свеча открывается ниже средней по минимумам (ChannelPeriod) для лонга или выше средней по максимумам для шорта, что соответствует волатильностному фильтру исходного EA.
За один запуск можно активировать только один модуль выхода.
Параметры
Volume — объём новой позиции.
StartGmmaPeriod / EndGmmaPeriod — границы веера GMMA.
BandsPerGroup — количество линий в каждой группе (CountLine).
FastSignalLength / SlowSignalLength — периоды EMA для фильтра пересечения.
TradeShift — наследованный параметр (0 или 1); стратегия работает по закрытым свечам.
UseSwingStop / SwingStopPips — включение и настройка «свечного» стопа.
UseFixedStop / FixedStopPips — включение фиксированного стопа в пунктах.