Стратегия Heiken Ashi Engulf
Обзор
Стратегия повторяет логику советников MetaTrader 5 heiken ashi engulf ea buy mt5.mq5 и heiken ashi engulf sell ea mt5.mq5, объединяя длинные и короткие сценарии внутри одного класса StockSharp. На каждом завершённом баре заново строятся свечи Heiken Ashi, проверяется модель поглощения, затем следуют подтверждения двумя скользящими средними и двумя фильтрами RSI. При выполнении всех условий отправляется рыночная заявка с фиксированными стоп-лоссом и тейк-профитом в метатрейдеровских пипсах.
Настройки «Buy» и «Sell» сохранены раздельно, чтобы их можно было оптимизировать независимо. Параметр Direction позволяет включить только покупки, только продажи либо оба направления.
Логика торговли
Построение Heiken Ashi
- Для каждого закрывшегося бара рассчитываются открытие, максимум, минимум и закрытие Heiken Ashi по классической формуле MT.
- В памяти хранятся две последние синтетические свечи (
shift = 1иshift = 2), что полностью повторяет смещения, используемые в исходных.mq5файлах.
Вход в покупку
- Позиция должна быть равна нулю (аналог блока
NoOpenedOrders). - Последняя Heiken Ashi свеча бычья, а предыдущая медвежья (
ChosenCandleType = 1,PreviousCandleType = 2). - Реальная свеча закрылась выше максимума позапрошлой (
Close[1] > High[2]), а сама позапрошлая свеча была медвежьей (Close[2] < Open[2]). - Закрытие Heiken Ashi находится выше базовой скользящей средней (
BuyBaselinePeriod/Method). - Быстрая средняя выше медленной (
BuyFastпротивBuySlow). - Оба фильтра RSI удерживают значения в заданных границах на указанном количестве баров (поведение блока
IndicatorWithinLimitsс учётом допустимых исключений). - После выполнения условий отправляется рыночная покупка нужного объёма, стоп и тейк пересчитываются из пипсов в цену и выставляются через
SetStopLoss/SetTakeProfit. По желанию выводится сообщение в лог (замена алерта MT5).
Вход в продажу
Условия зеркальны:
- Позиция отсутствует.
- Последняя Heiken Ashi свеча медвежья, предыдущая бычья.
- Текущая реальная свеча закрылась ниже минимума позапрошлой (
Close[1] < Low[2]), позапрошлая свеча бычья (Close[2] > Open[2]). - Закрытие Heiken Ashi ниже своей базовой средней, быстрая средняя ниже медленной.
- Оба фильтра RSI подтверждают сигнал в собственных диапазонах.
- Открывается короткая позиция, стоп-лосс и тейк-профит пересчитываются по параметрам «Sell».
Параметры
| Имя | Значение по умолчанию | Описание |
|---|---|---|
CandleType |
H1 | Таймфрейм для построения свечей и расчёта индикаторов. |
Direction |
Both | Какие сигналы активны: только покупки, только продажи либо оба направления. |
BuyVolume |
0.01 | Объём сделки в лотах для входа в длинную позицию. |
BuyStopLossPips |
50 | Стоп-лосс в пипсах MetaTrader для длинной позиции (0 отключает фиксированный стоп). |
BuyTakeProfitPips |
50 | Тейк-профит в пипсах MetaTrader для длинной позиции (0 отключает цель). |
BuyBaselinePeriod / BuyBaselineMethod |
20 / Exponential | Скользящая средняя, сравниваемая с бычьей свечой Heiken Ashi (inp1_Ro_*). |
BuyFastPeriod / BuyFastMethod |
20 / Exponential | Быстрая средняя трендового фильтра (inp12_Lo_*). |
BuySlowPeriod / BuySlowMethod |
30 / Exponential | Медленная средняя трендового фильтра (inp12_Ro_*). |
BuyPrimaryRsi* |
14, сдвиг 1, окно 2, исключения 0, пределы [0;100] | Первый RSI-фильтр (inp13_*). |
BuySecondaryRsi* |
5, сдвиг 2, окно 3, исключения 0, пределы [0;100] | Второй RSI-фильтр (inp14_*). |
SellVolume |
0.01 | Объём сделки в лотах для входа в короткую позицию. |
SellStopLossPips |
50 | Стоп-лосс в пипсах MetaTrader для короткой позиции. |
SellTakeProfitPips |
50 | Тейк-профит в пипсах MetaTrader для короткой позиции. |
SellBaselinePeriod / SellBaselineMethod |
20 / Exponential | Базовая средняя для медвежьего сценария (inp15_*). |
SellFastPeriod / SellFastMethod |
20 / Exponential | Быстрая средняя (inp26_Lo_*). |
SellSlowPeriod / SellSlowMethod |
30 / Exponential | Медленная средняя (inp26_Ro_*). |
SellPrimaryRsi* |
14, сдвиг 1, окно 2, исключения 0, пределы [0;100] | Первый RSI-фильтр для продаж (inp27_*). |
SellSecondaryRsi* |
5, сдвиг 2, окно 3, исключения 0, пределы [0;100] | Второй RSI-фильтр для продаж (inp28_*). |
AlertTitle |
«Alert Message» | Текст уведомления в журнале при открытии позиции. |
SendNotification |
true | Включает запись сообщения в лог (аналог уведомления MT5). |
Управление рисками
- Дистанции стоп-лосса и тейк-профита конвертируются из пипсов в ценовые единицы с учётом шага цены инструмента (автоматически поддерживаются 3- и 5-знаковые котировки).
- После входа в рынок метод
SetStopLoss/SetTakeProfitполучает расчётную итоговую позицию, что повторяет логику «виртуальных» стопов исходного советника. - Дополнительных трейлинг-стопов в оригинале не было, они не добавлялись.
Дополнительно
- Фильтры RSI работают по той же схеме «окно + количество исключений». Если истории недостаточно, сигнал отклоняется до накопления нужного количества значений.
- Хранение Heiken Ashi по каждому бару обеспечивает полное совпадение смещений (
Shift + CandlesShift) с MetaTrader. - Переключение
Directionне сбрасывает параметры противоположной стороны, что удобно при оптимизации.