
Возможности Мастера MQL5, которые вам нужно знать (Часть 50): Осциллятор Awesome
Введение
Осциллятор Awesome - еще один индикатор, разработанный легендарным инвестором Биллом Вильямсом, создателем индикатора Аллигатор, который мы рассмотрели в предыдущей статье о паттернах. По сути, он предназначен для измерения динамики рынка и помощи в выявлении потенциальных изменений в преобладающих трендах. Осциллятор Awesome (Awesome Oscillator, AO) основан на разнице между 34-периодной простой скользящей средней (SMA) и 5-периодной SMA, где обе применяются к медианной цене. Медианная цена рассчитывается по формуле:
(High-Price + Low-Price) / 2
АО отображается в виде колеблющейся гистограммы, расположенной выше и ниже нулевой линии, которая служит маркером отсутствия импульса, а пересечение выше или ниже указывает на потенциальное изменение тренда. Зеленые столбцы на гистограмме отображают усиление бычьего импульса с предыдущего ценового бара, тогда как красные столбцы отображают усиление медвежьего импульса также с предыдущего бара. Кроме того, как правило, когда столбцы гистограммы находятся выше нулевой линии, это часто говорит о преобладании бычьего тренда, а если те же столбцы гистограммы (опять же, независимо от цвета) зеркально отражаются по другую сторону нулевой линии, это говорит о преобладании медвежьего импульса.
Откуда пошло название Awesome (потрясающий)? Четкого ответа на этот вопрос нет, однако утверждается, что АО упрощает сложные расчеты импульса, превращая их в простой визуальный индикатор. Благодаря двойному фокусу на быстро меняющихся и "долгосрочных" простых скользящих средних, он помогает трейдерам получить относительное представление как о краткосрочной, так и о долгосрочной динамике рынка. Он очень универсален и хорошо работает в стратегиях следования за трендом и разворота. Его практическое применение в основном направлено на помощь в согласовании торговли с преобладающей динамикой рынка. Он может предоставить потенциальные точки входа и выхода, как мы рассмотрим ниже с помощью множества сигнальных паттернов, а также может быть полезен при анализе дивергенции, который мы также используем в сигнальных паттернах.
Несмотря на множество паттернов и потенциальных областей применения, он также имеет некоторые ограничения. Как и многие осцилляторы, АО может подавать ложные сигналы на рынках с ограниченным диапазоном или на нестабильных рынках. Это означает, что его следует использовать в сочетании с другими индикаторами для получения более широкой и комплексной стратегии.
После этого краткого вступления, следуя нашей традиции, давайте теперь рассмотрим некоторые паттерны АО. В этой статье мы рассмотрим 9 различных паттернов, проиндексированных от 0 до 8. Мы, как всегда, рассмотрим и протестируем каждый паттерн по отдельности, прежде чем завершить тестированием нескольких паттернов. Я не советую проводить такое тестирование в реальных условиях, если только трейдер не уверен в относительном весе паттерна на основе собственного опыта использования. Чтобы протестировать один паттерн за раз, нам нужно присвоить входной параметр m_inputs или Patterns Used Bitmap определенному индексу. Если мы хотим протестировать только паттерн 0, этот индекс будет равен 2 в нулевой степени. Если это паттерн 4, то индекс будет 2 в четвертой степени и т. д.
Прикрепленный код предназначен для сборки с помощью Мастера MQL5, поэтому он имеет формат, который упрощает сборку. Руководства для новичков можно найти здесь и здесь. Эти серии посвящены использованию преимуществ, предоставляемых Мастером MQL5, главными из которых являются быстрое тестирование и создание прототипов новых идей. Необходимость кодировать все с нуля — очевидное преимущество, но при этом можно упустить из виду стандартную платформу тестирования при тестировании нескольких идей, что может быть ключевым фактором в понимании того, что действительно важно для вашей собственной стратегии и подхода к рынкам. Давайте начнем.
Пересечение нулевой линии
Наш первый паттерн с индексом 0, вероятно, является наиболее распространенным паттерном для этого индикатора, и это пересечение нулевой линии. По определению, нулевая линия в АО представляет собой нейтральное состояние импульса, то есть пересечение гистограммы выше или ниже этой линии подразумевает изменение импульса. Здесь все просто: бычье пересечение появляется, когда АО пересекает нулевую линию снизу вверх, открывая возможность для покупки; тогда как медвежье перемечение появляется, когда АО пересекает нулевую линию сверху вниз и опускается ниже нее. Реализуем это в MQL5 следующим образом:
//+------------------------------------------------------------------+ //| Check for Pattern 0. | //+------------------------------------------------------------------+ bool CSignalAwesome::IsPattern_0(ENUM_POSITION_TYPE T) { if(T == POSITION_TYPE_BUY && AO(X() + 1) < 0.0 && AO(X()) > 0.0) { return(true); } else if(T == POSITION_TYPE_SELL && AO(X() + 1) > 0.0 && AO(X()) < 0.0) { return(true); } return(false); }
Пересечения нулевой линии представляют собой изменение импульса с медвежьего на бычий или наоборот в зависимости от направления пересечения. Это может послужить ранним индикатором изменения тренда для трейдера. Пересечения этой линии должны подтверждаться альтернативными индикаторами, такими как линии тренда и т. д. Столбики гистограммы этого осциллятора также имеют высоту и крутизну относительно нулевой линии, что служит индикатором силы импульса - более высокие столбцы указывают на более сильный импульс, что говорит о том, что постепенные пересечения (или пересечения со столбцами меньшего размера) часто указывают на более слабые сигналы, чем пересечения с более высокими столбцами.
Как всегда, контекст имеет значение, поэтому постепенные пересечения в бычьей среде не обязательно являются слабым сигналом, так же как пересечения с гистограммами большого размера на неустойчивом рынке сами по себе могут не указывать на сильный сигнал. Этот осциллятор может служить ориентиром для входного сигнала, и это наше основное применение в этой статье, хотя, поскольку мы используем пороговые значения длинных и коротких условий как для открытия, так и для закрытия, по своей сути классы сигналов собранных с помощью Мастера советников также используют потенциал выхода любого примененного/выбранного сигнала.
Основными преимуществами паттерна 0 являются простота интерпретации и масштабируемость, поскольку этот осциллятор можно прикрепить к нескольким таймфреймам — от внутридневных до долгосрочных графиков, также он может выступать в качестве раннего предупреждения о потенциальных разворотах тренда. Его недостатком является запаздывание, поскольку он основан на скользящих средних, и сигнал может запаздывать на быстро меняющихся рынках. Кроме того, ложные сигналы могут быть обычным явлением на консолидирующихся рынках или в случаях, когда рынки находятся в состоянии незначительной коррекции в рамках преобладающего тренда. Наконец, как уже говорилось, сигнал требует подтверждения, что по сути означает, что это не очень сильный сигнал, по крайней мере, сам по себе. Ниже представлены результаты тестирования с входными параметрами короткого периода оптимизации с GBPJPY за 2022 год на 4-часовом таймфрейме:
Двойная вершина
Наш второй паттерн (с индексом 1) представляет собой сигнал с двумя вершинами, и хотя его довольно просто интерпретировать в ручной торговле, при реализации автоматизированной торговли или в пользовательском сигнале всё становится сложнее. Итак, по определению, двойная вершина возникает, когда два пика формируются по одну сторону от нулевой линии — либо выше для медвежьего тренда, либо ниже для бычьего тренда, при этом второй пик находится ближе к нулевой линии. Ключевое правило для паттерна 1 заключается в том, что нулевая линия не должна быть пробита между двумя пиками.
Бычий сигнал возникает, когда оба пика находятся ниже нулевой линии, причем последний пик находится ближе к нулевой линии, и наоборот, медвежий пик возникает, когда оба пика находятся выше нулевой линии, причем последний пик находится ближе к нулевой отметке. Для этого паттерна высота гистограммы между пиками должна уменьшиться, чтобы отразить потерю импульса предыдущего тренда (который вот-вот развернется). Нулевая линия также служит границей, при которой пересечение до формирования двух пиков делает сигнал недействительным, а также если пики расположены слишком близко, то сигнал становится недействительным. В моем коде эта особенность не реализована. Читатели могут попробовать реализовать ее самостоятельно:
//+------------------------------------------------------------------+ //| Check for Pattern 1. | //+------------------------------------------------------------------+ bool CSignalAwesome::IsPattern_1(ENUM_POSITION_TYPE T) { bool _1 = false; int _i = X(); if(T == POSITION_TYPE_BUY && AO(_i) < 0.0 && LowerColor(_i) == clrGreen && LowerColor(_i + 1) == clrRed) { while(AO(_i) < 0.0) { _i++; if(LowerColor(_i) == clrGreen && LowerColor(_i + 1) == clrRed) { if(fabs(AO(_i)) < fabs(AO(X()))) { _1 = true; } break; } if(AO(_i) >= 0.0) { break; } } } else if(T == POSITION_TYPE_SELL && AO(_i) > 0.0 && UpperColor(_i) == clrRed && UpperColor(_i + 1) == clrGreen) { while(AO(_i) > 0.0) { _i++; if(UpperColor(_i) == clrRed && UpperColor(_i + 1) == clrGreen) { if(fabs(AO(_i)) < fabs(AO(X()))) { _1 = true; } break; } if(AO(_i) <= 0.0) { break; } } } return(_1); }
Паттерн 1 важен, поскольку он часто указывает на преобладающее расхождение импульса и ценового движения, что выступает ранним предупреждением о разворотах. Вероятно, сильная сторона паттерна 1 — это способность улавливать развороты. Точные точки входа могут располагаться сразу после формирования второго пика, который находится ближе к нулевой линии, и именно этот вариант мы реализовали в нашем коде выше. Однако альтернативный «более безопасный» подход может заключаться в том, чтобы входить после того, как осциллятор пересекает нулевую границу после формирования двух пиков.
Паттерн 1 также может быть полезен при размещении стоп-лосса, когда вместо традиционного размещения стоп-лосса после открытия позиции после формирования этого паттерна, позиция закрывается в том случае, если осциллятор повторно достигает более высокого из двух пиков (то есть первого). Опять же, реализация остается на усмотрение читателя. Кроме того, этот паттерн можно расширить для установления целевых показателей прибыли: когда осциллятор пересекает нулевую линию, позиция, открытая при регистрации второго меньшего пика, закрывается, если она прибыльная. Такой подход в идеале будет работать лучше всего на больших таймфреймах, поскольку на меньших таймфреймах нулевая линия может быть пересечена, когда цена все еще находится в пределах спреда.
Хотя этот паттерн встречается реже и, следовательно, можно утверждать, что он более надежен, чем паттерн 0, его все равно можно сочетать с линиями тренда; с анализом объема, если доступны данные по объему, где более высокий объем на втором, меньшем, пике может служить явным подтверждением сигнала; и с инструментами дивергенции в виде MACD или RSI, где дивергенция может придать дополнительную надежность сигналу. К его плюсам можно отнести отсутствие запаздывания по сравнению с пересечениями простых скользящих средних или паттерном 0, точность направления, поскольку он не только определяет следующий тренд, но и подкрепляет его, подчеркивая преобладающую слабость импульса в отношении текущего тренда, и, конечно, его масштабируемость по разным таймфреймам и рынкам. Тестирование с оптимизированными настройками для GBPJPY на 2022 год на 4-часовом таймфрейме дало нам следующие результаты:
Ограничения для паттерна 1 вытекают из его сложности, особенно когда дело доходит до реализации его в коде. Как уже говорилось, это относительно простой паттерн, который можно вывести из ценового графика, но вот заставить советник интерпретировать его из ценового буфера — это совсем другая история. Кроме того, в нестабильных или неопределенных рыночных условиях велик риск появления ложных сигналов. Подтверждение с помощью уже упомянутых инструментов или даже свечных паттернов может смягчить эту проблему.
Блюдце
Наш третий паттерн (с индексом 2) помогает определить потенциальные развороты путем считывания цвета полос гистограммы осциллятора. Бычья модель "блюдце" указывает на потенциальный разворот рыночного импульса вверх, который обозначен двумя последовательными красными столбиками гистограммы, где второй столбик гистограммы имеет меньшую величину, чем предыдущий, а третий столбик, следующий за этими двумя, зеленый и выше, чем второй короткий красный столбец. Все эти столбцы должны располагаться выше нулевой линии, а вход обычно происходит на закрытии зеленого столбца.
Медвежья модель "блюдце", как и ожидалось, является перевернутой бычьей, где мы имеем 2 последовательных зеленых столбца, второй из которых ближе к нулевой линии (или короче), а третий столбец красный и выше, чем второй короткий зеленый столбец. Столбцы должны быть ниже нулевой линии, а сигналом на вход служит закрытие красного столбца. Ключевым моментом этой паттерна является то, что он зависит от изменений импульса, а не от чистого ценового движения, и это, как правило, делает его эффективным в определении краткосрочных разворотов тренда или подтверждения силы более крупных трендов. Реализуем паттерн в MQL5 следующим образом:
//+------------------------------------------------------------------+ //| Check for Pattern 2. | //+------------------------------------------------------------------+ bool CSignalAwesome::IsPattern_2(ENUM_POSITION_TYPE T) { if(T == POSITION_TYPE_BUY && UpperColor(X() + 2) == clrRed && UpperColor(X() + 1) == clrRed && UpperColor(X()) == clrGreen) { return(true); } else if(T == POSITION_TYPE_SELL && LowerColor(X() + 2) == clrGreen && LowerColor(X() + 1) == clrGreen && LowerColor(X()) == clrRed) { return(true); } return(false); }
Главные преимущества этого паттерна заключаются в том, что его легко найти и интерпретировать, его можно использовать вместе с другими распространенными индикаторами для повышения точности сигналов, и он, как правило, достаточно хорошо справляется с волатильными рынками, в условиях, когда изменения импульса могут быть довольно частым явлением. К ограничениям можно отнести снижение точности в условиях низкой волатильности и отсутствия тренда, где лучше использовать его в сочетании с дополнительным индикатором. Тестовый прогон с благоприятными оптимизированными настройками входных параметров с использованием GBPJPY 2022 года на 4-часовом графике дал нам следующее:
Расхождение между ценой и АО
Паттерн с индексом 3 основан на дивергенции. Что такое дивергенция? Простое отклонение между показаниями индикатора и поведением цены, которое часто сигнализирует о возможном развороте или ослаблении преобладающего тренда. Однако при использовании этого паттерна мы склонны концентрироваться на расхождении между максимумами/минимумами цены и пиками/впадинами осциллятора АО. Однако в этой статье мы рассмотрим более простую форму дивергенции, а именно тенденции изменения цены максимумов/минимумов и значения гистограммы АО.
Бычья дивергенция возникает, когда цена формирует более низкие минимумы, но осциллятор АО формирует более высокие максимумы. Тезис, лежащий в основе этой модели, заключается в том, что наблюдается ослабление медвежьего импульса, и, следовательно, возможен разворот тренда в сторону повышения. Возможным, более четким сигналом для входа может быть выбор этого паттерна, когда АО находится ниже нулевой линии, и ожидание пересечения нулевой линии для входа в позицию на покупку.
И наоборот, медвежья дивергенция произойдет, когда цена образует более высокие максимумы, но осциллятор АО достигает более низких минимумов, что указывает на ослабление бычьего импульса, несмотря на движение цены. Это будет означать разворот тренда в сторону понижения, и подходящей точкой входа в короткую позицию может стать момент, когда АО пересечет нулевую линию сверху вниз или вспомогательным индикатором будет подтвержден медвежий паттерн. Реализуем это в MQL5 следующим образом:
//+------------------------------------------------------------------+ //| Check for Pattern 3. | //+------------------------------------------------------------------+ bool CSignalAwesome::IsPattern_3(ENUM_POSITION_TYPE T) { if(T == POSITION_TYPE_BUY && Low(X() + 3) > Low(X()) && AO(X() + 3) < AO(X())) { return(true); } else if(T == POSITION_TYPE_SELL && High(X() + 3) < High(X()) && AO(X() + 3) > AO(X())) { return(true); } return(false); }
Ключевые характеристики этого паттерна заключаются в том, что он привлекает внимание к изменениям импульса, которые часто предшествуют разворотам цен, особенно на уровнях перекупленности или перепроданности. Поэтому он больше предназначен для выявления потенциальных разворотов, а не продолжения движения цены. Тестовый прогон с идеальными настройками при тех же параметрах, что мы использовали выше, дает нам следующий результат:
Его преимущества не сильно отличаются от уже рассмотренных паттернов, поскольку он помогает предвидеть ранние изменения тренда до того, как они произойдут, является универсальным для различных рынков и таймфреймов, и паттерн можно сочетать с другими индикаторами для подтверждения сигналов пробоя. Его недостатки примерно те же - он, как правило, ненадежен на боковых рынках, часто требует подтверждения и запаздывает.
Фильтрация ложных пробоев
Наш паттерн с индекслм 4 посвящен ложным пробоям, которые происходят, когда цена вроде как пробивает важный уровень поддержки/сопротивления, но затем меняет направление, возможно, потому, что ей не удалось сохранить импульс. Фильтрация таких пробоев может, по крайней мере на бумаге, повысить точность торговли, если предположить, что импульс является ключевым показателем устойчивости пробоя.
Как было сказано во введении, АО измеряет импульс путем сравнения краткосрочной простой скользящей средней (5-периодной) с долгосрочной (34-периодной) при применении медианной цены. Таким образом, анализируя значения АО в момент пробоя, трейдеры могут определить, достаточно ли он подкреплен импульсом или разрывом между 5-периодным и 34-периодным ценовым действием. Мы реализуем паттерн 4 в MQL5 следующим образом:
//+------------------------------------------------------------------+ //| Check for Pattern 4. | //+------------------------------------------------------------------+ bool CSignalAwesome::IsPattern_4(ENUM_POSITION_TYPE T) { if(T == POSITION_TYPE_BUY && Close(X() + 1) < MA(X() + 1) && Close(X()) > MA(X()) && UpperColor(X() + 1) == clrGreen && UpperColor(X()) == clrGreen && AO(X() + 1) > 0.0) { return(true); } else if(T == POSITION_TYPE_SELL && Close(X() + 1) > MA(X() + 1) && Close(X()) < MA(X()) && LowerColor(X() + 1) == clrRed && LowerColor(X()) == clrRed && AO(X() + 1) < 0.0) { return(true); } return(false); }
Согласно нашему источнику, мы определяем прорыв как пересечение скользящей средней с периодом 8. Возможно, стоит использовать 34-периодную? Однако этого короткого периода было достаточно для целей нашего тестирования. Альтернативные подходы к определению пробоя включают линии тренда или графические фигуры, такие как треугольники или прямоугольники. Любой выход цены за пределы уровней, определяемых этими индикаторами, будет однозначно означать пробой.
Дальнейший анализ АО в точке пробоя может дать некоторое представление о том, является ли он устойчивым. Если размер гистограммы (размер столбчатой диаграммы осциллятора) при прорыве значителен, то это может быть выгодно для инвестирования, однако короткие или незначительные гистограммы часто требуют дополнительного подтверждения, прежде чем можно будет приступить к реализации сигнала. Средствами получения такого подтверждения являются: если АО в конечном итоге пересекает нулевую линию или если гистограмма уже находится в части, указывающей на импульс преобладающего/сигнального тренда, то перед открытием позиции должны быть видны более длинные или похожие по цвету столбцы гистограммы АО.
Что касается определений сигналов, бычий пробой происходит, когда цена пересекает скользящую среднюю снизу вверх и закрывается выше нее, при этом АО находится выше нулевой линии, а последние два столбца имеют зеленый цвет. С другой стороны, медвежий пробой происходит, когда цена пересекает скользящую среднюю сверху вниз и закрывается ниже нее, при этом АО находится ниже нулевой линии, а последние 2 ее столбца окрашены красным. Результаты тестирования с использованием аналогичных символов и настроек, которые использовались выше с другими паттернами, представляют собой следующий отчет:
Подтверждение продолжения тренда
Паттерн 5 действует как проверка, которая гарантирует, что любой тренд (восходящий или нисходящий) с большой вероятностью сохранится. Это снижает риск открытия сделок до разворота. АО может быть эффективным средством подтверждения продолжения тренда посредством анализа импульса. Продолжение бычьего тренда наблюдается, когда гистограмма АО остается зеленой и выше нулевой линии, а цена закрытия продолжает расти. Продолжение медвежьего тренда наблюдается, когда АО находится ниже нулевой линии, цена идет вниз, а гистограммы АО красные. В MQL5 паттерн реализуется следующим образом:
//+------------------------------------------------------------------+ //| Check for Pattern 5. | //+------------------------------------------------------------------+ bool CSignalAwesome::IsPattern_5(ENUM_POSITION_TYPE T) { if(T == POSITION_TYPE_BUY && Close(X() + 1) < Close(X()) && UpperColor(X() + 1) == clrGreen && UpperColor(X()) == clrGreen && AO(X() + 1) > 0.0) { return(true); } else if(T == POSITION_TYPE_SELL && Close(X() + 1) > Close(X()) && LowerColor(X() + 1) == clrRed && LowerColor(X()) == clrRed && AO(X() + 1) < 0.0) { return(true); } return(false); }
Тестовые прогоны с настройками оптимизации GBPJPY на 2022 год на 4-часовом таймфрейме дают нам следующие результаты:
Дополнительные паттерны, которые могут подтвердить продолжение тренда и которые можно закодировать для дополнения представленных выше паттернов — это пересечение нулевой линии (паттерн 0) или сигнал отката, когда за кратковременным ослаблением импульса (например, меньшие столбцы) следует новое усиление столбцов гистограммы АО, что означает, что преобладающий ценовой тренд остается неизменным, или сигнал "Двойная вершина", который мы рассмотрели выше в паттерне 1. Ниже мы реализуем комбинацию нескольких паттернов для размещения сделок в собранном советнике.
Однако, чтобы торговать только с помощью паттерна 5, необходимо задать входной параметр для используемой битовой карты равным 32, и если мы оптимизируем этот паттерн с теми же настройками тестера стратегий, что и для других паттернов, мы получим следующий отчет при некоторых благоприятных входных настройках. Поскольку паттерн изначально подвержен влиянию импульса, его преимущества и недостатки не сильно отличаются от плюсов и минусов других паттернов, рассмотренных выше.
Отскок от нулевой линии
Отскок от нулевой линии или близость к ней — это наш паттерн 6. АО приближается к нулевой линии, но не пересекает ее, возобновляя свой предыдущий тренд. При бычьем отскоке подразумевается, что АО, находясь выше нулевой линии, опускается к нулевой линии, а затем отступает от нее без пересечения. При медвежьем отскоке АО находится ниже нулевой линии и стремительно приближается к ней, а затем отступает, не пересекая ее. Для нашего класса пользовательского сигнала мы реализовали паттерн так:
//+------------------------------------------------------------------+ //| Check for Pattern 6. | //+------------------------------------------------------------------+ bool CSignalAwesome::IsPattern_6(ENUM_POSITION_TYPE T) { if(T == POSITION_TYPE_BUY && AO(X() + 2) > AO(X() + 1) && AO(X() + 1) >= 0.0 && AO(X() + 1) < AO(X())) { return(true); } else if(T == POSITION_TYPE_SELL && AO(X() + 2) < AO(X() + 1) && AO(X() + 1) <= 0.0 && AO(X() + 1) > AO(X())) { return(true); } return(false); }
Тестовый прогон с благоприятными настройками оптимизации дал нам следующие результаты:
Раннее предупреждение о развороте
Наш восьмой паттерн (с индексом 7) характеризуется внезапным изменением цвета с зеленого на красный и наоборот. Реализация цвета в коде:
// color UpperColor(int ind) { // return(AO(ind) >= AO(ind + 1) && AO(ind + 1) > 0.0 ? clrGreen : clrRed); } color LowerColor(int ind) { // return(AO(ind) <= AO(ind + 1) && AO(ind + 1) < 0.0 ? clrRed : clrGreen); }
Эти функции находятся в интерфейсе класса пользовательского сигнала и используются во всем классе, а не только для этого паттерна. Торговая стратегия для паттерна 7 заключается в том, что переход от медвежьего тренда к бычьему происходит, когда цвет гистограммы АО меняется с красного на зеленый независимо от положения АО относительно нулевой линии. Аналогичным образом, переход от бычьего тренда к медвежьему отмечается резким изменением цвета гистограммы с зеленого на красный, независимо от того, где находится АО относительно нулевой линии. Реализация в коде:
//+------------------------------------------------------------------+ //| Check for Pattern 7. | //+------------------------------------------------------------------+ bool CSignalAwesome::IsPattern_7(ENUM_POSITION_TYPE T) { if(T == POSITION_TYPE_BUY && ((UpperColor(X() + 1) == clrRed && UpperColor(X()) == clrGreen) || (LowerColor(X() + 1) == clrRed && LowerColor(X()) == clrGreen))) { return(true); } else if(T == POSITION_TYPE_SELL && ((UpperColor(X() + 1) == clrGreen && UpperColor(X()) == clrRed) || (LowerColor(X() + 1) == clrGreen && LowerColor(X()) == clrRed))) { return(true); } return(false); }
Тестирование этого паттерна только с подходящими настройками оптимизации в условиях, аналогичных тем, что использовались выше с другими паттернами, за очевидным исключением того, что входной параметр паттерна был установлен на 128, дает нам следующие результаты:
Сила тренда по гистограмме
Наш последний паттерн развивает идеи предыдущего и добавляет меру к размеру гистограммы AO. Из приведенной выше реализации цветового кода видно, что цветовое кодирование AO обусловлено изменениями размера гистограммы. Таким образом, увеличение гистограммы выше нулевой линии или уменьшение размера столбцов, когда АО ниже нуля, приводит к появлению зеленых столбцов АО. Во многом это напоминает паттерн 7. Однако для паттерна 8 усиление бычьего импульса отмечено последующими зелеными столбцами (которые означают рост или соответствующее снижение), а последний столбец гистограммы АО более чем в 8 раз превышает спред ценной бумаги. Использование 8-кратного спреда является произвольным выбором. Как правило, оптимизированный входной параметр может лучше определить, каким должен быть этот порог, или можно также использовать некоторую долю текущей волатильности. Реализация в коде:
//+------------------------------------------------------------------+ //| Check for Pattern 8. | //+------------------------------------------------------------------+ bool CSignalAwesome::IsPattern_8(ENUM_POSITION_TYPE T) { if(T == POSITION_TYPE_BUY && AO(X() + 2) > 0.0 && fabs(AO(X() + 2)) >= 8.0 * m_symbol.Spread()*m_symbol.Point() && UpperColor(X() + 2) == clrGreen && UpperColor(X() + 1) == clrGreen && UpperColor(X()) == clrGreen) { return(true); } else if(T == POSITION_TYPE_SELL && AO(X() + 2) < 0.0 && fabs(AO(X() + 2)) >= 8.0 * m_symbol.Spread()*m_symbol.Point() && LowerColor(X() + 2) == clrRed && LowerColor(X() + 1) == clrRed && LowerColor(X()) == clrRed) { return(true); } return(false); }
Основной тезис здесь заключается в том, что более мелкие столбцы (зеленые или красные) указывают на ослабление тренда и, следовательно, на период консолидации, в то время как более длинная и заметная гистограмма указывает на сильный импульс, а преобладающий тренд обладает некоторой устойчивостью. Тестовый запуск только этого паттерна дает нам следующий отчет:
Наш пользовательский класс сигналов также может торговать по нескольким паттернам, и если мы выполним оптимизацию для подходящих весовых коэффициентов паттерна с GBPJPY в том же году и на том же таймфрейме, что и при индивидуальных запусках паттерна, мы получим следующие результаты:
Заключение
Мы рассмотрели паттерны еще одного индикатора Билла Вильямса, осциллятора Awesome. Существует ряд реализаций и аспектов, которые мы не рассмотрели при реализации этих паттернов в коде, например, добавление дополнительных входных параметров для лучшего управления порогом каждого паттерна и, конечно, надлежащая перекрестная проверка любых предпочтительных входных параметров перед использованием. Как всегда, это остается на усмотрение читателя. Полный исходный код приложен в конце статьи.
Название файла | Описание |
---|---|
SignalWZ_50.mqh | Файл класса пользовательских сигналов на основе осциллятора Awesom |
wz_50.mq5 | Пример собранного в Мастере советника, показывающий использованные файлы |
Перевод с английского произведен MetaQuotes Ltd.
Оригинальная статья: https://www.mql5.com/en/articles/16502
Предупреждение: все права на данные материалы принадлежат MetaQuotes Ltd. Полная или частичная перепечатка запрещена.
Данная статья написана пользователем сайта и отражает его личную точку зрения. Компания MetaQuotes Ltd не несет ответственности за достоверность представленной информации, а также за возможные последствия использования описанных решений, стратегий или рекомендаций.





- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования