Стратегия Profit Hunter HSI with Fibonacci
Обзор
Эта стратегия представляет собой перенос на C# советника MetaTrader 4 Profit_Hunter_HSI_with_fibonacci.mq4. Оригинальный код
совмещал фильтр на основе экспоненциальной скользящей средней (EMA) с Fibonacci-уровнями, рассчитанными по дневным свечам. Версия
для StockSharp использует высокоуровневый API: подписывается на поток внутридневных свечей, параллельно получает дневные данные,
по последним максимумам и минимумам строит сетку Fibonacci и по взаимодействию цены с ключевыми уровнями формирует торговые
сигналы. Управление позицией реализует начальную защиту и ступенчатый трейлинг стоп по тому же алгоритму, что и в MT4.
Потоки данных
- Внутридневные свечи – параметр
TimeFrameзадаёт рабочий таймфрейм (по умолчанию 1 минута). Каждая завершённая свеча подаётся на вход EMA, обновляет ссылочные уровни поддержки/сопротивления (значенияNumBarsсвечей назад) и запускает торговую логику. - Дневные свечи – отдельная подписка собирает старший таймфрейм. Два индекса определяют, какие дневные свечи используются в качестве опорного максимума и минимума. При появлении новой дневной свечи сетка Fibonacci пересчитывается целиком, включая расширения 161.8%, 261.8% и 423.6%.
Формирование сигналов
В оригинальном советнике сохранялись цены последнего максимума и минимума, а переменная highFirst указывала, какая экстремальная
точка встретилась раньше. Перенос сохраняет идею, сравнивая индексы выбранных дневных свечей:
- Если индекс максимума меньше индекса минимума (
highFirst = true), считается, что рынок сначала сделал максимум, а затем минимум, и сетка строится от минимума вверх. - В противном случае предполагается, что минимум появился раньше, и уровни откладываются от максимума вниз.
На каждой завершённой внутридневной свече выполняется последовательность, повторяющая MT4-скрипт:
- Трендовый фильтр – EMA с периодом
MaPeriod. Если цена закрытия (используется как аналог Bid/Ask) выше EMA, тренд считается восходящим ("Naik"), если ниже – нисходящим ("Turun"). При нейтральном положении относительно EMA входы блокируются. - Сигналы Fibonacci – в зависимости от
highFirstсравниваются уровни 23.6%, 76.4%, 91% и 14.6%. Результатом становится одна из строкReverse-Buy,Reverse-Sell,Trading-AreaилиContinuation. Три первые участвуют в правилах входа,Continuationслужит для информационного вывода. - Правила входа – реализованы все шесть веток исходного советника:
- Восходящий тренд + "Trading-Area" + пробой сопротивления → покупка со стопом на уровне поддержки.
- Восходящий тренд + "Reverse-Sell" +
highFirst == false+ цена ниже сопротивления → продажа со стопом на уровне 14.6%. - Восходящий тренд + "Reverse-Buy" +
highFirst == false+ цена ниже сопротивления → покупка со стопом на уровне 91%. - Нисходящий тренд + "Trading-Area" + пробой поддержки → продажа со стопом на сопротивлении.
- Нисходящий тренд + "Reverse-Sell" +
highFirst == true+ цена ниже сопротивления → продажа со стопом на 91%. - Нисходящий тренд + "Reverse-Buy" +
highFirst == true+ цена ниже сопротивления → покупка со стопом на 14.6%. В стратегии одновременно может быть только одна позиция; новые заявки не подаются, пока есть открытые ордера.
Управление позицией
- Выход по уровням – как и в MT4, длинная позиция закрывается при возврате цены к поддержке, короткая – при росте до сопротивления, независимо от текущего результата.
- Исходный стоп – цена стоп-лосса, выбранная при входе, сохраняется внутри стратегии и проверяется на каждой свече. StockSharp- версия не модифицирует ордера брокера напрямую, а контролирует условие самостоятельно.
- Ступенчатый трейлинг – в оригинале стоп сдвигался при достижении прибыли 60 пунктов, далее каждые 20 пунктов переносился ещё на
5 пунктов в сторону прибыли (до барьера 260 пунктов). Перенос выполняет ту же лестницу, умножая значения на
PriceStepинструмента. Для коротких позиций стоп опускается, тем самым фиксируя прибыль.
Параметры
| Имя | Описание | Значение по умолчанию | Примечания |
|---|---|---|---|
NumBars |
Номер свечи в прошлом, чьи High/Low используются как поддержка/сопротивление. | 3 |
Аналог numBars, значение > 0. |
MaPeriod |
Период EMA для фильтрации тренда. | 5 |
Соответствует maPeriod. |
TimeFrame |
Таймфрейм внутридневных свечей. | 1 минута |
Аналог timeFrame, принимает любой TimeSpan. |
DaysBackForHigh |
Индекс дневной свечи с максимумом. | 1 |
Соответствует daysBackForHigh. |
DaysBackForLow |
Индекс дневной свечи с минимумом. | 1 |
Соответствует daysBackForLow. |
Volume |
Объём рыночного ордера. | 1 |
В лотах/контрактах, должен быть положительным. |
Особенности реализации
- Графические объекты из MT4 не переносятся: в StockSharp визуализация выполняется иначе, а подписи носили декоративный характер.
- Вместо вызовов
iLow/iHighстратегия хранит списки завершённых свечей и считывает необходимые значения напрямую по индексу. - Управление стопом реализовано внутри метода
ManagePosition, что избавляет от использованияOrderModifyи делает код независимым от конкретного брокера. - При ошибке регистрации ордера внутреннее состояние сбрасывается, чтобы не оставалось "подвешенных" намерений на повторную отправку.
Отличия от версии для MetaTrader
- В MT4 использовались цены
BidиAskв реальном времени. Здесь их роль выполняет цена закрытия свечи, что полностью сохраняет логику принятия решений. - Проверка "кто был первым" больше не опирается на глобальные массивы
High[]/Low[]. Сравнение индексов дневных свечей повторяет исходное поведение для стандартных параметров и даёт ожидаемый результат при иных настройках. - Защитные ордера брокера заменены виртуальными условиями выхода, проверяемыми после получения каждой свечи. Это упрощает перенос стратегии на разные соединения и при этом оставляет те же правила выхода, что и в оригинале.