Индикатор CaudateCandle_ByM1_v3

Советник CaudateCandle (распаковать архив как есть в <каталог данных терминала>\MQL4)

Развернутые результаты тестирования эксперта

 

Продолжим развитие идеи "хвостатых свечей", начало которой было положено в предыдущей статье. Начнем с улучшения визуального представления информации индикатором CaudateCandle, а после этого разработаем правила торговой стратегии на основании показаний индикатора и создадим полноценный эксперт. Полученная автоматическая торговая система (АТС) будет протестирована, а результаты теста подвергнутся анализу.

 

Новый индикатор CaudateCandle

При разработке второй версии индикатора нами уже отмечалось, что его алгоритм не в полной мере отсеивает повторяющиеся сигналы, допуская отображение практически одной и той же хвостатой свечи на протяжении нескольких свечей после формирования первоначального сигнала. Такое поведение индикатора объясняется тем, что проверка существования предыдущего сигнала проводилась только на одной предыдущей свече. Чтобы полностью исключить дублирование сигналов, потребуется осуществить проверку наличия подобного сигнала, как минимум, на половине предшествующих свечей, участвующих в формировании сигнала. Например, при периоде хвостатых свечей 100 баров (параметр Candles in synthetic bar равен 100) потребуется провести поиск наличия хвостатой свечи, подобной обнаруженной, на предыдущих 100 / 2 + 1 = 51 баре. Это первое новшество индикатора.

Второе новшество будет касаться лишь эстетической стороны, которая позволит трейдеру лучше оценить ту или иную торговую ситуацию. Первая и вторая версии индикатора недостаточно информативны, т. к. отображают найденные свечи небольшими точками, которые, кроме типа и местоположения свечи, ничего не говорят трейдеру. Для полноценного анализа пользователю необходимо видеть весь диапазон, который относится к синтетической свече, а также ее экстремумы. В итоге, вместо точки красного или синего цвета трейдер будет наблюдать полноценную свечу, состоящую из такого количества свечей, которое было задано в параметре индикатора Candles in synthetic bar

Минимум и максимум такой свечи будут равны минимуму и максимуму диапазона образования свечи. С формированием тела свечи дело обстоит иначе, не так, как это принято в общей практике. В предыдущей статье мы указывали на принцип определения тела свечи, который использовал не цены открытия и закрытия диапазона, а подсчет количества свечей, находящихся в верхней и нижней половинах синтетической свечи. При достаточном доминировании цен в одной из двух половинах свечи (степень достаточности указывается в параметре Concentration) свеча признавалась хвостатой с хвостом определенного типа (нижний или верхний хвост). Таким образом, тело хвостатой свечи - это абстрактное понятие. А потому визуализация тела свечи может производиться только в символической форме. 

Таким символом будет привычный трейдеру прямоугольник, растянутый от начала до окончания диапазона свечи. В категории цен этот прямоугольник займет половину высоты свечи. В зависимости от типа хвоста свечи, размещаться прямоугольник будет в верхней или нижней половине визуализируемого объекта. Итогом визуализации станут фигуры "Молот" и "Перевернутый молот" (см. рис. 1).

 

Рис. 1. Отображение синтетических свечей.

Указанный вид графика можно получить, использовав третью версию индикатора CaudateCandle_ByM1_v3.

 

Стратегия на основе хвостатых свечей

Разработка правил стратегии обычно начинается с составления алгоритма генерации торговых сигналов. В данном случае торговые сигналы могут быть недвусмысленно интерпретированы, исходя из показаний индикатора CaudateCandle_ByM1_v3: появление свечи в виде молота синего цвета - сигнал покупки, появление свечи в виде перевернутого молота красного цвета - сигнал продажи. 

Наличие алгоритма генерации торговых сигналов позволяет перейти к описанию методов расчета цен Stop Loss и Take Profit, если они вообще предусмотрены в стратегии. Во всех экспертах, созданных в рамках проекта MQLabs, цены Stop Loss всегда присутствуют, т. к. реальная торговля без этих уровней схожа с ездой на автомобиле без тормозов. Не будет исключением и рассматриваемая стратегия, в которой метод расположения цены Stop Loss рыночных ордеров напрашивается сам собой: ниже минимума синтетической свечи, дающей сигнал покупки, и выше максимума синтетической свечи, генерирующей сигнал продажи. Также отметим, что уровень фиксации убытка будет располагаться не в непосредственной близости от экстремумов свечи, а с небольшим отступом от них, который во многих случаях поможет предотвратить ложное срабатывание цены Stop Loss (см. рис. 2).

 

Рис. 2. Установка цены Stop Loss рыночного ордера.

Отступ от экстремума свечи, будет рассчитываться, а не являться фиксированной величиной. Основой для расчета станет высота синтетической свечи. Высота свечи сначала умножается на специальный коэффициент, задаваемый пользователем, а полученное значение вычитается или добавляется к экстремуму синтетической свечи. В будущем эксперте имя переменной-коэффициента - Start Stop Loss offset.

К примеру, на рис. 2 показана торговая ситуация, в которой значение коэффициента равно 1. Свеча-сигнал покупки имеет высоту 30 пунктов. Расчет цены Stop Loss ордера Buy производится вычитанием из цены минимума свечи результата умножения высоты свечи на значение коэффициента, т. е.: 1.3054 - 0.003 * 1 = 1.3024. Аналогичным образом рассчитывается цена Stop Loss ордера Sell. К цене максимума синтетической свечи (1.3185) прибавляется высота свечи (21 пункт), умноженная на значение коэффициента: 1.3185 + 0.0021 * 1 = 1.3206. Для придания реальности происходящему не нужно забывать о спреде, т. к. закрытие рыночных ордеров Sell производится по цене Ask, в то время как все цены, указанные на графике, являются ценами Bid. Поэтому к найденному значению добавляется величина спреда.

Перейдем к определению алгоритма расчета цены Take Profit рыночных ордеров стратегии. Индикатор CaudateCandle_ByM1_v3 не предоставляет даже намеков на то, каким должен быть этот алгоритм. По этой причине правила расчета цены Take Profit, описанные ниже, будут в некотором роде универсальными, т. е. не привязанными к данной конкретной стратегии.

При расчете цены Take Profit воспользуемся одним из классических подходов - вычислением заданного отношения размера потенциальной прибыли к потенциальному убытку. В большинстве стратегий для получения итоговой прибыли это отношение больше или равно 1. Навязывать пользователю определенную величину отношения мы не в праве. Поэтому в эксперте появится специальный параметр - Ratio of Take Profit to Stop Loss size. На его значение будет умножено расстояние между ценой открытия и ценой Stop Loss рыночного ордера. Полученный результат добавляется или вычитается из цены открытия ордера. По умолчанию величина коэффициента равна 1 (см. рис. 3).

 

Рис. 3. Расчет Take Profit при отношении прибыли к убытку, равном 1.

 

Скользящий Stop Loss

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

Существует широко распространенная проблема: оптимальная продолжительность удержания позиции. В идеале это то время, по истечении которого бессмысленно продолжать удержание открытой позиции, т. к. прогностическая способность стратегии ограничена некоторым периодом времени. По разным данным рассчитывать на сколько-нибудь действенный прогностический эффект стратегии можно в течение времени, которое от двух до пяти раз больше, чем тот период, на основании которого делался прогноз. Применительно к рассматриваемой стратегии это означает, что после образования хвостатой свечи действие полученного сигнала будет распространяться на период от 2 * Candles in synthetic bar до 5 * Candles in synthetic bar. Напомним, что Candles in synthetic bar - это количество свечей, которые составляют синтетическую свечу.

Мы не будем поступать по отношению к открываемым сделкам настолько категорично, закрывая их, если к заданному времени цена не достигла ни Stop Loss, ни Take Profit. Тем не менее, на время существования сделки будем обращать внимание, но с  другой целью: с целью начала перемещения уровня Stop Loss вслед за ценой в сторону прибыли. Для этого предусмотрим в эксперте еще один параметр: Period for Stop Loss moving. Параметр будет измеряться в периодах хвостатых свечей, т. е. в величинах другого параметра - Candles in synthetic bar. Если позиция существует более, чем Period for Stop Loss moving * Candles in synthetic bar свечей текущего графика, то будет включен механизм перемещения цены Stop Loss. Метод перемещения Stop Loss - по последним локальным экстремумам, период которых совпадает с периодом минимального удержания позиции. 

В итоге, если Candles in synthetic bar = 60, а Period for Stop Loss moving = 5, то первое перемещение Stop Loss ордера произойдет через 300 свечей существования сделки. Цена стоп-приказа будет перемещена на минимум или максимум цены, достигнутый ею за последние 300 свечей. С образованием каждой новой свечи расчет цены Stop Loss будет повторен (см. рис. 4).

 

Рис. 4. Скользящий Stop Loss.

 

Настроечные параметры советника

Для создания полноценной картины возможностей разработанного советника (CaudateCandle_Expert), приведем полный перечень его настроечных параметров:

  1. Static order volume - фиксированный объем каждой сделки. Если равно 0, то применяется динамический объем.
  2. Order volume in percents of balance - при значении параметра Static order volume, равном 0, включается расчет динамического объема сделок. Вычисление производится на основании текущей величины баланса в процентах от него. Сделка будет открыта с таким объемом, залог по которой составляет Order volume in percents of balance процентов баланса. Корректной считается любая величина более 0% и менее 100%. При значениях параметра Static order volume, отличных от нуля, параметр Order volume in percents of balance игнорируется.
  3. Candles in synthetic bar - количество свечей для создания синтетической свечи. Любое натуральное число больше 2.
  4. Concentration, % - концентрация свечей в одной из ценовых половин диапазона в процентном выражении. Достижение этой величины позволяет отнести свечу к хвостатой. Любое значение больше 0 и меньше 100%.
  5. Applied price - способ усреднения цен свечей. 
  6. Start Stop Loss offset - отступ от экстремума синтетической свечи при расчете цены Stop Loss, выраженный в высоте хвостатой свечи. Любое неотрицательное значение.
  7. Period for Stop Loss moving - период существования сделки до первой попытки перемещения цены Stop Loss. Выражается в величинах Candles in synthetic bar. Любое натуральное число.
  8. Ratio of Take Profit to Stop Loss size - коэффициент отношения размера Take Profit сделки к размеру ее Stop Loss. Любое положительное значение.
  9. Order open sound - имя звукового файла, проигрывающегося при установке ордера.
  10. Expert orders ID - идентификатор ордеров советника, используемый в случае осуществления одновременной торговли на текущем символе другой программой или трейдером. 

 

Тестирование эксперта

Изначальная идея стратегии подразумевает ее использование на минутном графике МТ4. Тем не менее, работоспособность программы ни в коей мере не пострадает при ее использовании на любом другом таймфрейме. Правда, в этом случае теряется сама суть идеи. По этой причине с выбором таймфрейма мы долго не думаем: только М1. 

Исторический период тестирования: 01.01.2012 - 11.05.2013. Этот период разобьем на две части, первая из которых (01.01.2012 - 11.09.2012) будет выступать в роли участка оптимизации, а вторая (11.09.2012 - 11.05.2013) часть станет участком форвард-теста. 

В процессе оптимизации осуществлялся подбор значений четырех параметров эксперта: Candles in synthetic barConcentrationStart Stop Loss offset и Ratio of Take Profit to Stop Loss size. Результаты тестирования приведены на рис. 5 - 8.

EURUSD. Значения настроечных параметров: Candles in synthetic bar = 70, Concentration = 70, Start Stop Loss offset = 1,  Ratio of Take Profit to Stop Loss size = 4. Чистая прибыль 2 063 доллара, максимальная просадка 314 долларов. Фактор восстановления 6.57.

 

Рис. 5. Результаты тестирования советника CaudateCandle_Expert на валютной паре EURUSD.

 

USDCHF. Значения настроечных параметров:  Candles in synthetic bar = 70, Concentration = 75, Start Stop Loss offset = 0.5,  Ratio of Take Profit to Stop Loss size = 4. Чистая прибыль 708 долларов, максимальная просадка 245 долларов. Фактор восстановления 2.89.

 

Рис. 6. Результаты тестирования советника CaudateCandle_Expert на валютной паре USDCHF.

 

GBPUSD. Значения настроечных параметров: Candles in synthetic bar = 78, Concentration = 80, Start Stop Loss offset = 0.5,  Ratio of Take Profit to Stop Loss size = 4. Чистая прибыль 92 доллара, максимальная просадка 503 доллара. Фактор восстановления ниже единицы.

 

Рис. 7. Результаты тестирования советника CaudateCandle_Expert на валютной паре GBPUSD.

 

USDJPY. Значения настроечных параметров: Candles in synthetic bar = 90, Concentration = 65, Start Stop Loss offset = 1,  Ratio of Take Profit to Stop Loss size = 3. Чистая прибыль 542 доллара, максимальная просадка 723 доллара. Фактор восстановления ниже единицы.

 

Рис. 8. Результаты тестирования советника CaudateCandle_Expert на валютной паре USDJPY.

 

Использование полученного советника рекомендуется только в полуавтоматическом режиме под присмотром трейдера и после всестороннего изучения слабых и сильных сторон стратегии. Приведенные результаты тестирования демонстрируют только то, как могла бы работать стратегия на указанном историческом периоде, что не является гарантией повторения таких результатов в будущем.