Обсуждение статьи "Автоматизация торговых стратегий на MQL5 (Часть 41): Стратегия Candle Range Theory (CRT) — накопление, манипуляция и распределение (AMD)"

 

Опубликована статья Автоматизация торговых стратегий на MQL5 (Часть 41): Стратегия Candle Range Theory (CRT) — накопление, манипуляция и распределение (AMD):

В этой статье мы разработаем на MQL5 торговую систему на основе стратегии Candle Range Theory (CRT). Она определяет диапазоны накопления на заданном таймфрейме, выявляет пробои с фильтрацией по глубине манипуляции и подтверждает разворот для открытия сделок в фазе распределения. Система поддерживает динамический или статический расчёт Stop Loss и Take Profit по соотношению риска и прибыли, необязательный трейлинг-стоп и ограничение количества позиций в каждом направлении.

Стратегия Candle Range Theory (CRT) — это стратегия Price Action, направленная на выявление ключевых фаз внутри диапазона свечи для поиска разворотных сделок с высокой вероятностью. Движение рынка разделяется на три основные фазы: накопление, когда цена консолидируется в заданном диапазоне, что часто указывает на накопление позиций институциональными участниками; манипуляцию, когда цена ненадолго выходит за границы диапазона, чтобы заманить трейдеров в ловушку и выбить слабые позиции; и распределение, когда после подтверждённого возврата в диапазон начинается основное направленное движение. Подход основан на предположении, что значительные пробои нередко оказываются ложными движениями для сбора ликвидности, после которых следует сильное движение в противоположную сторону.

В бычьем сетапе мы используем диапазон свечи, закрывшейся ростом, ожидаем пробой вниз в фазе манипуляции для снятия стоп-приказов ниже минимума и открываем позицию на покупку после подтверждённого возврата цены обратно в диапазон выше минимума, рассчитывая на восходящее распределение. В медвежьем сетапе диапазон задаётся свечой, закрывшейся снижением; затем ожидается пробой выше максимума в фазе манипуляции, а позиция на продажу открывается после возврата цены обратно в диапазон ниже максимума с расчётом на нисходящее распределение. Фильтр минимальной глубины манипуляции и подтверждение разворота по барам помогают исключать слабые сетапы и выбирать более убедительные сигналы. Ниже показан пример сетапа CRT.

ПРИМЕР СЕТАПА CANDLE RANGE THEORY (CRT)

Мы зададим диапазоны накопления на выбранном пользователем таймфрейме. Система будет выявлять пробои и, если соответствующая настройка включена, проверять глубину манипуляции относительно процентного порога. Разворот будет подтверждаться заданным количеством закрывшихся баров на таймфрейме подтверждения. Количество позиций в каждом направлении ограничивается. Для Stop Loss и Take Profit применяется динамический или статический расчёт с учётом соотношения риска и прибыли. После достижения порога прибыли можно включить трейлинг-стоп. Все фазы отображаются на графике прямоугольниками, уровнями и подписями

Автор: Allan Munene Mutiiria

 
Спасибо, выглядит интересно.
 
Вы не объяснили, как определяется начало каждой новой фазы накопления.
 
Christian Gomez #:
Спасибо, выглядит интересно.
Спасибо
 
Stanislav Korotky #:
Вы не объяснили, как определяется начало каждой новой фазы накопления.

Речь идет о диапазонах свечей, представленных на графике.

      double prevMax = iHigh(_Symbol, RangeTF, 1);                //--- Получить предыдущее максимальное значение
      double prevMin = iLow(_Symbol, RangeTF, 1);                 //--- Получить предыдущее минимальное значение
      double prevStart = iOpen(_Symbol, RangeTF, 1);              //--- Получить предыдущую открытую позицию
      double prevEnd = iClose(_Symbol, RangeTF, 1);               //--- Получить предыдущую цену закрытия
      rangeMax = prevMax;                                         //--- Установить максимальное значение диапазона
 
Allan Munene Mutiiria #:

Вот так выглядят диапазоны свечей.

Это не отвечает на вопрос — как определить начало фазы накопления (каждой из них, ведь эта фаза повторяется снова и снова на разных участках графика). Речь идет о времени, а не о ценовом диапазоне. Речь также не идет о визуализации.

 
На мой взгляд, вопрос о начале новой фазы накопления действительно остаётся без ответа.

Получение High и Low предыдущей закрытой свечи определяет только ценовые границы очередного диапазона:

iHigh(_Symbol, RangeTF, 1);
iLow(_Symbol, RangeTF, 1);

Но это ещё не определяет, когда должен начинаться новый цикл CRT во времени.

Если на каждом новом баре предыдущая свеча автоматически становится новым диапазоном, тогда range постоянно сдвигается. Возникает несколько вопросов:

— фиксируется ли диапазон после начала манипуляции;
— когда предыдущий setup считается завершённым или отменённым;
— можно ли создавать новый range, пока старый ещё находится в состоянии Manipulation или Distribution;
— что является reset-условием: вход в позицию, достижение TP/SL, возврат в диапазон, истечение заданного количества баров или появление новой опорной свечи;
— допускается ли несколько одновременно активных CRT-диапазонов.

Для однозначной автоматизации здесь нужна state machine, например:

WAITING_FOR_RANGE
→ RANGE_ACTIVE
→ MANIPULATION_DETECTED
→ REVERSAL_CONFIRMED
→ DISTRIBUTION / TRADE_ACTIVE
→ COMPLETED или INVALIDATED
→ WAITING_FOR_NEW_RANGE

Без явного правила перехода из COMPLETED/INVALIDATED к новому RANGE_ACTIVE стратегия может выглядеть понятно визуально, но её программное поведение и результаты тестирования будут зависеть от неописанных предположений.

Поэтому ключевой вопрос именно такой: какое конкретное событие завершает текущий CRT-цикл и разрешает создать следующий диапазон?