English 中文 Español Deutsch 日本語 Português
preview
Возможности Мастера MQL5, которые вам нужно знать (Часть 42): Осциллятор ADX

Возможности Мастера MQL5, которые вам нужно знать (Часть 42): Осциллятор ADX

MetaTrader 5Торговые системы |
451 0
Stephen Njuki
Stephen Njuki

Введение

Индикатор ADX - это осциллятор, измеряющий силу тренда определенной ценной бумаги. Как и в предыдущих статьях, здесь будут рассматриваться различные закономерности, демонстрируемые этим индикатором в файле класса пользовательских сигналов для советников, собранных с помощью Мастера. Мы рассмотрим по одной модели за раз, как и в предыдущих статьях, посвященных RSI, полосам Боллинджера и RSI, а затем завершим тестом, который включает все модели, чтобы получить представление о том, какая из них имеет наибольший вес.

Однако перед этим мы завершим рассмотрение Parabolic SAR.


Дивергенция SAR и объема

Как уже упоминалось, Parabolic SAR в основном используется для определения потенциальных точек разворота и отслеживания стоп-лоссов на трендовых рынках. Это "потенциальные точки разворота", поскольку, если цена их пробивает, индикатор переворачивается, ставя точки на противоположном конце диапазона максимумов и минимумов, таким образом, сгенерированные точки на ценовом графике являются потенциальными уровнями разворота ценового действия. Эти точки следуют за ценой либо ниже (при восходящем тренде), либо выше (при нисходящем тренде), что позволяет трейдерам отслеживать эти развороты.

Расхождение объемов — это когда цена и объем движутся в противоположных направлениях. Для форекс-трейдеров данные об "объемах" не являются практичной концепцией, учитывая их разрозненность по разным брокерам и платформам. Компромиссным показателем является ценовой диапазон или волатильность. Таким образом, рост цены в любом направлении, сопровождающийся снижением волатильности, может служить сигналом продолжения.

Например, если Parabolic SAR разворачивается с нижней точки цены на верхнюю (указывая на сигнал продажи) и это сопровождается снижением диапазона ценовых баров, это можно истолковать как слабый сигнал на продажу и, скорее, как предвестник продолжения предыдущего тренда на покупку. Аналогично, когда цена достигает верхней точки SAR (выше цены при нисходящем тренде) и наблюдается расхождение (дивергенция) волатильности (уменьшение диапазона ценового бара), это сигнализирует о возможном продолжении или усилении нисходящего тренда. В коде эта логика выглядит так:

//+------------------------------------------------------------------+
//| Check for Pattern 7.                                             |
//+------------------------------------------------------------------+
bool CSignalSAR::IsPattern_7(ENUM_POSITION_TYPE T)
{  m_sar.Refresh(-1);
   m_sar_alt.Refresh(-1);
   if(T == POSITION_TYPE_BUY && Base(StartIndex() + 1) < Low(StartIndex() + 1) && Base(StartIndex()) > High(StartIndex()))
   {  return(Range(StartIndex()) < Range(StartIndex() + 1) && Range(StartIndex() + 1) < Range(StartIndex() + 2));
   }
   else if(T == POSITION_TYPE_SELL && Base(StartIndex() + 1) > High(StartIndex() + 1) && Base(StartIndex()) < Low(StartIndex()))
   {  return(Range(StartIndex()) < Range(StartIndex() + 1) && Range(StartIndex() + 1) < Range(StartIndex() + 2));
   }
   return(false);
}

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

И наоборот, если цена достигает любого из пороговых значений SAR при росте волатильности, это должно быть сигналом подтверждения разворота SAR. Этот сигнал, который также основан на тезисе о расхождении объема, по сути будет подобен паттерну 0, который мы рассмотрели в этой о SAR, а также будет представлять собой проверку на увеличение ценового диапазона. Этот конкретный шаблон не реализован в коде и не протестирован, но, как всегда, читатель может с ним ознакомиться.

Кроме того, с помощью этого паттерна трейдеры могут использовать дивергенцию объема вместе с Parabolic SAR для стратегических корректировок стоп-лоссов. Если вернуться к нашей первой настройке дивергенции объема, упомянутой выше, где мы искали слабые перевороты, указывающие на сильное продолжение, эти сигналы подразумевают приостановку тренда и могут указывать на важные уровни поддержки или сопротивления. Выявив их благодаря слабому развороту SAR и падающей волатильности, трейдеры могут размещать или перемещать свои стоп-лоссы на свои открытые позиции, которые следуют за доминирующим трендом, чтобы они находились чуть выше этих зон, если позиция короткая, или чуть ниже, если позиция длинная.

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

Эти комбинации могли бы быть более подходящими для индикаторов-осцилляторов, таких как RSI, и поскольку мы реализовали в коде только первый вариант дивергенции объема SAR, который подтверждает продолжение, а не разворот, читателю необходимо будет реализовать эти дополнительные проверки индикаторов при развороте. Тестирование с использованием паттерна 7 для валютной пары EURUSD за 2022 год на дневном таймфрейме дает нам следующие результаты:

sar_r7

Целое число битового шаблона, которое мы используем для паттерна 7, равно 0x80, что соответствует десятичному значению и входному целому числу 128. После его установки советник размещает сделки только с использованием паттерна 7.


Перевернутый SAR на более крупном таймфрейме

Parabolic SAR на более крупном таймфрейме может быть очень хорош для предоставления более широкой перспективы тренда и помочь отфильтровать шум от ложных разворотов, который преобладает на меньших таймфреймах. Если SAR на недельном графике сигнализирует о сильном восходящем тренде, трейдер, использующий 4-часовой график, может отдать приоритет длинным позициям и игнорировать сигналы продажи на более низком таймфрейме как потенциальный шум или краткосрочные откаты.

Совпадение сигналов на двух таймфреймах действительно представляет собой еще более сильный сигнал. Если 4-часовой таймфрейм является бычьим, а 15-минутный таймфрейм указывает на разворот, где SAR упирается в нижнюю границу ценового диапазона, эта конкретная точка может представлять не только сильный сигнал, но и "более резкий" вход. Существуют также стратегии, которые используют контртрендовые сделки, но они могут быть сопряжены с риском, поскольку максима "тренд — твой друг" хорошо послужила многим трейдерам. Опираясь на подтверждение SAR на нескольких таймфреймах, можно избежать рискованных и ненадежных входов против тренда.

SAR служит не только сигналом входа, но и индикатором выхода. Используя собранные с помощью Мастера советники и сопутствующие им классы, которые используют пороговые значения открытия и закрытия, мы лучше подготовлены к фактической реализации без какого-либо дополнительного кода. Использование кода, приложенного в конце статьи, и сборка советника на его основе рассматриваются здесь и здесь. Файлы расширения MQ5 включены просто для того, чтобы показать, как будет выглядеть собранный файл после запуска Мастера, а также для правильной ссылки на все необходимые файлы, которые должны присутствовать при сборке советника. Таким образом, проверки на нескольких таймфреймах позволяют сделать выходы более точными, что в теории должно обеспечить лучшую производительность. 

Трейдеры также могут использовать уровни SAR на более крупном таймфрейме, чтобы устанавливать уровни стоп-лосса для позиций, открытых на более коротких таймфреймах. Такой подход гарантирует, что стоп будет размещен на значительном уровне, что снижает вероятность преждевременного закрытия из-за краткосрочной волатильности. Тренды SAR на более крупных таймфреймах могут указывать на более длительные рыночные тренды, в то время как на более коротких таймфреймах фиксируются точки входа для извлечения выгоды из этих крупных движений. В MQL5 паттерн реализуется следующим образом:

//+------------------------------------------------------------------+
//| Check for Pattern 8.                                             |
//+------------------------------------------------------------------+
bool CSignalSAR::IsPattern_8(ENUM_POSITION_TYPE T)
{  m_sar.Refresh(-1);
   m_sar_alt.Refresh(-1);
   if(T == POSITION_TYPE_BUY && Base(StartIndex() + 1) > High(StartIndex() + 1) && Base(StartIndex()) < Low(StartIndex()))
   {  return(Alt(StartIndex()) < LowAlt(StartIndex()));
   }
   else if(T == POSITION_TYPE_SELL && Base(StartIndex() + 1) < Low(StartIndex() + 1) && Base(StartIndex()) > High(StartIndex()))
   {  return(Alt(StartIndex()) > HighAlt(StartIndex()));
   }
   return(false);
}

Мы проводим тесты с аналогичными настройками, указанными выше, с использованием шаблона 7, но используя недельный таймфрейм в качестве альтернативного, и получаем следующие результаты:

sar_r8

Мы используем входную битовую карту (input bitmap) 256 для представления девятого паттерна (8). Таким образом, SAR более крупного таймфрейма помогает трейдерам увидеть более широкий рыночный контекст, в котором работают сигналы более мелкого таймфрейма. Такой контекстный взгляд помогает избежать чрезмерной торговли или реагирования на незначительные сигналы, которые не соответствуют более сильному тренду.


Пересечение SAR и RSI

Как подчеркивается в недавней статье этой серии, RSI — это осциллятор, измеряющий скорость и изменение ценовых движений, обычно используемый для обнаружения состояний перекупленности и перепроданности. Он работает по шкале от 0 до 100, где значения выше 70 указывают на состояние перекупленности, а ниже 30 — на состояние перепроданности. Сочетание с SAR может помочь выявить тренды.

Parabolic SAR эффективен для определения текущего тренда или потенциальных разворотов тренда, но он также может генерировать ложные сигналы на нестабильных или флэтовых рынках. RSI может добавить слой анализа импульса, помогая подтвердить, действительно ли рынок перекуплен или перепродан, тем самым подтверждая силу или слабость тренда, определенного SAR. Таким образом, когда Parabolic SAR опускается ниже цены, сигнализируя о восходящем тренде, а RSI показывает значение около 30 (указывая на условия перепроданности), это усиливает сигнал о том, что разворот тренда, вероятно, подлинный и имеет восходящий импульс.

Однако сочетание с SAR может иметь двоякий эффект. Напомним, RSI — это индикатор импульса, и на рынке часто случаются всплески, когда импульс или заданная тенденция могут быть устойчивыми. С этой целью, даже если по умолчанию, как утверждалось выше, мы используем SAR для подтверждения ситуаций "перекупленности", чаще всего он также может служить для подтверждения преобладающего импульса, особенно если рассмотреть масштабы ситуаций разворота индикатора SAR и посмотреть на разрывы между точками и ценами или изменения точек вдоль каждого тренда. Такая логика явно представляют собой альтернативу паре SAR-RSI. Я не реализую ее в коде, а лишь упоминаю здесь в качестве темы для обсуждения. Вместо этого мы используем "традиционный" подход, который реализуем в MQL5 следующим образом:

//+------------------------------------------------------------------+
//| Check for Pattern 9.                                             |
//+------------------------------------------------------------------+
bool CSignalSAR::IsPattern_9(ENUM_POSITION_TYPE T)
{  if(T == POSITION_TYPE_BUY && Base(StartIndex()) < Low(StartIndex()))
   {  return(RSI(StartIndex()) <= 30.0);
   }
   else if(T == POSITION_TYPE_SELL && Base(StartIndex()) > High(StartIndex()))
   {  return(RSI(StartIndex()) >= 70.0);
   }
   return(false);
}

Тестирование с использованием приведенного выше списка не дает нам большого количества сделок, поскольку дневной график имеет тенденцию к сохранению устойчивости, что в целом говорит в пользу второго способа, которым мы могли бы реализовать эту комбинацию SAR-RSI, как указано выше. Результаты тестов представлены ниже:

sar_r9

Как и в случае с анализом индикаторов по различным паттернам, оптимизированный отчет о тестировании содержит выборку нескольких паттернов с настраиваемыми пороговыми значениями для каждого паттерна за период нашего тестового окна. Аналогичные результаты испытаний для Parabolic SAR представлены ниже:

sar_rALL

sar_cALL

По моему мнению, использование нескольких паттернов, каждый из которых имеет свой идеальный порог, целесообразно, если эти пороговые значения не выбираются или не оптимизируются за какой-то узкий период без проведения форвард-тестов. Лучше всего использовать или тестировать их с предустановленными значениями, основываясь на оценке их производительности в реальных условиях эксплуатации.



Обзор ADX

Осциллятор ADX измеряет силу заданного тренда, используя 3 буфера. Из них DI+ и DI- можно рассматривать как отдельные индикаторы, поскольку они измеряют силу цены в заданном направлении. DI+ (индекс положительного направления) измеряет силу восходящего движения, в то время как DI- (индекс отрицательного направления) выражает силу нисходящего движения цен. Таким образом, когда DI+ выше DI-, это указывает на то, что покупатели имеют большее влияние, чем продавцы, и наоборот.

Буфер DI+ выводится из исторических ценовых движений, которые превышают предыдущий максимум. Это означает, что если сегодняшний максимум выше вчерашнего, то регистрируется положительное значение DI+. И наоборот, DI- вычисляется из части текущего минимума, которая ниже минимума предыдущего дня, так что буферное значение для DI- регистрируется, если мы получаем минимум ниже минимума предыдущего дня, предполагая, что используется дневной временной интервал.

Формулы для DI+ и DI- следующие:

DI+ = (Сглаженное положительное направленное движение / Средний истинный диапазон) × 100

DI- = (Сглаженное отрицательное направленное движение / Средний истинный диапазон) × 100

Средний истинный диапазон (Average True Range, ATR) является ключевой частью этих буферов, поскольку он нормализует значения индикатора, принимая во внимание преобладающую волатильность в данный момент времени. Это связано с тем, что, как и следовало ожидать, в нестабильных условиях, как правило, часто происходят крупные изменения максимумов и минимумов, поэтому при нормализации по истинному диапазону (TR) только крупные движения (несмотря на TR) получают соответствующий вес в буферах индикатора. TR вычисляется путем выбора наибольшего из трех вариантов, а именно: текущий максимум за вычетом текущего минимума, текущий максимум за вычетом предыдущего закрытия и предыдущее закрытие за вычетом текущего минимума. Сигналы этих буферов затем наблюдаются по их пересечениям, а также в сочетании с другими индикаторами, как мы увидим ниже.



Пересечение ADX с DI+ и DI-

Для нашего первого паттерна (0) бычий сигнал появляется, когда DI+ пересекает DI- снизу вверх. Это означает, что давление покупателей сильнее давления продавцов, что потенциально указывает на начало восходящего тренда. Напротив, медвежий сигнал (DI- > DI+). Когда DI- пересекает DI+ снизу вверх, это сигнализирует о том, что давление продавцов сильнее давления покупателей, что потенциально означает начало нисходящего тренда. Реализуем этот паттерн в MQL5 следующим образом:

//+------------------------------------------------------------------+
//| Check for Pattern 0.                                             |
//+------------------------------------------------------------------+
bool CSignalADX::IsPattern_0(ENUM_POSITION_TYPE T)
{  if(T == POSITION_TYPE_BUY && BasePlus(X() + 1) < BaseMinus(X() + 1) && BasePlus(X()) > BaseMinus(X()))
   {  return(true);
   }
   else if(T == POSITION_TYPE_SELL && BasePlus(X() + 1) > BaseMinus(X() + 1) && BasePlus(X()) < BaseMinus(X()))
   {  return(true);
   }
   return(false);
}

Основной буфер ADX измеряет силу тренда, а не его направление. Он колеблется в диапазоне от 0 до 100, при этом значения выше 25 указывают на сильный тренд, а значения ниже 25 указывают на слабый или бестрендовый рынок. Важно еще раз подчеркнуть, что ADX не указывает на то, является ли тренд бычьим или медвежьим, он просто измеряет силу тренда. Когда ADX растет, а DI+ выше DI-, это указывает на сильный бычий тренд. Если ADX растет, а DI- выше DI+, это указывает на сильный медвежий тренд.

Оптимизация этого паттерна для порогов открытия и закрытия, а также уровней тейк-профита на дневном таймфрейме 2022 года по EURCHF дает нам следующие результаты в одном из "идеальных" вариантов настроек:

adx_r1



ADX выше 25 — вход по сильному тренду

Выше мы рассмотрели два буфера DMI - DI+ и DI-. Третий буфер ADX является основным. Он также обеспечивает показания в диапазоне от 0 до 100. Первоначально он вычисляется путем определения индекса направления, который вычисляется по следующей формуле:

где:

  • DX - искомый индекс направления

  • +DI - уже определенное положительное направленное движение, формула которого показана выше

  • -DI - отрицательный аналог, формула которого также приведена выше

После того, как у нас есть индекс направления (DX), получение среднего индекса направления просто включает в себя получение экспоненциальной скользящей средней последних 14 значений индекса направления. В качестве альтернативы можно использовать метод сглаживания, который следует приведенной ниже формуле:

где:

  • n равен 14 или любому подходящему периоду усреднения, введенному в индикатор ADX.

Реализуем это в MQL5 следующим образом:

//+------------------------------------------------------------------+
//| Check for Pattern 1.                                             |
//+------------------------------------------------------------------+
bool CSignalADX::IsPattern_1(ENUM_POSITION_TYPE T)
{  if(T == POSITION_TYPE_BUY && Base(X()) > 25.0 && BasePlus(X()) > BaseMinus(X()))
   {  return(true);
   }
   else if(T == POSITION_TYPE_SELL && Base(X()) > 25.0 && BasePlus(X()) < BaseMinus(X()))
   {  return(true);
   }
   return(false);
}

При оптимизации с аналогичными настройками среды, как и в случае с паттерном 0, где нашим символом является EURCHF на дневном таймфрейме за 2022 год, мы получаем следующие результаты:

adx_r2


ADX падает ниже 25 - Слабость тренда

Паттерн 2 является зеркальным вариантом паттерна 1, отслеживая случаи, когда основной буфер ADX опускается ниже 25, чтобы пойти против текущего тренда, на что указывает спред DI+ к DI-. Таким образом, всякий раз, когда ADX опускается ниже 25, а DI- находится выше DI+, это интерпретируется как бычий сигнал, поскольку это признак ослабления медвежьего импульса. Аналогично, если пересечение ADX произошло, когда DI+ был выше DI-, это ранний признак медвежьего тренда. Реализуем это в MQL5 следующим образом:

//+------------------------------------------------------------------+
//| Check for Pattern 2.                                             |
//+------------------------------------------------------------------+
bool CSignalADX::IsPattern_2(ENUM_POSITION_TYPE T)
{  if(T == POSITION_TYPE_BUY && Base(X()+1) > 25.0 && Base(X()) < 25.0 && BasePlus(X()) < BaseMinus(X()))
   {  return(true);
   }
   else if(T == POSITION_TYPE_SELL && Base(X()+1) > 25.0 && Base(X()) < 25.0 && BasePlus(X()) > BaseMinus(X()))
   {  return(true);
   }
   return(false);
}

Тестовые запуски оптимизации с настройками, как в паттернах выше, дают нам следующие результаты для паттерна 2:

adx_r3



Пересечение ADX со скользящей средней

Для паттерна 3 применяемая дополнительная скользящая средняя — это не типичная скользящая средняя цены, а скорее еще один буфер значений скользящей средней для основного буфера ADX. Его можно использовать как параллельный буфер ADX, и когда ADX пересекает его так же, как цена обычно пересекает буферы скользящей средней на ценовом графике, это часто является мощным сигналом. Напомним, что сам по себе ADX является нейтральным по направлению, он лишь указывает на силу преобладающего сигнала, будь то длинный или короткий, посредством аналогичного пересечения. Реализуем это в коде следующим образом:

//+------------------------------------------------------------------+
//| Check for Pattern 3.                                             |
//+------------------------------------------------------------------+
bool CSignalADX::IsPattern_3(ENUM_POSITION_TYPE T)
{  if(T == POSITION_TYPE_BUY && Base(X()+1) < BaseAverage(X()+1) && Base(X()) > BaseAverage(X()) && BasePlus(X()) > BaseMinus(X()))
   {  return(true);
   }
   else if(T == POSITION_TYPE_SELL && Base(X()+1) < BaseAverage(X()+1) && Base(X()) > BaseAverage(X()) && BasePlus(X()) < BaseMinus(X()))
   {  return(true);
   }
   return(false);
}

Ниже представлены тестовые прогоны с выбранными результатами оптимизации в настройках, аналогичных тем, которые мы использовали с паттернами выше:

adx_r4



Дивергенция ADX и цены

Дивергенция с ADX основана на преобладающем движении цены на основном графике ценной бумаги. Однако эта "дивергенция" несколько странная, поскольку всегда наблюдается снижение основного буфера ADX на фоне сильного тренда на ценовом графике в любом направлении. Таким образом, бычья дивергенция будет отмечена падением цены на основном графике, происходящим одновременно с падением ADX на основном буфере осциллятора. А медвежья дивергенция будет характеризоваться бычьим трендом на ценовом графике при одновременном снижении осциллятора ADX. Реализуем это в MQL5 следующим образом:

//+------------------------------------------------------------------+
//| Check for Pattern 4.                                             |
//+------------------------------------------------------------------+
bool CSignalADX::IsPattern_4(ENUM_POSITION_TYPE T)
{  if(T == POSITION_TYPE_BUY && Close(X()+2) > Close(X()+1) && Close(X()+1) > Close(X()) && Base(X()+2) > Base(X()+1) && Base(X()+1) > Base(X()) && Base(X()) <= 25)
   {  return(true);
   }
   else if(T == POSITION_TYPE_SELL && Close(X()+2) < Close(X()+1) && Close(X()+1) < Close(X()) && Base(X()+2) > Base(X()+1) && Base(X()+1) > Base(X()) && Base(X()) <= 25)
   {  return(true);
   }
   return(false);
}

Тестовый запуск некоторых оптимальных настроек дает нам следующие результаты:

adx_r5


Прорыв ADX и диапазона

Паттерн 5, как и 4 выше, полагается на ценовое действие на графике ценной бумаги для формирования и подтверждения своего сигнала. Однако в данном случае мы ожидаем прорывов цены после длительных периодов консолидации, подкрепленных скачками ADX выше порогового значения 25. Бычий сигнал — это прорыв сопротивления, происходящий одновременно с ростом ADX до значения выше 25. Аналогично, медвежий сигнал — это падение цены ниже уровня поддержки, которое также подкрепляется ростом ADX выше 25. Реализуем это в MQL5 следующим образом:

//+------------------------------------------------------------------+
//| Check for Pattern 5.                                             |
//+------------------------------------------------------------------+
bool CSignalADX::IsPattern_5(ENUM_POSITION_TYPE T)
{  if(T == POSITION_TYPE_BUY && ATRAverage(X()+1) > ATR(X()+1) && ATRAverage(X()) < ATR(X()) && ATR(X()) < High(X())-Low(X()) && Base(X()+1) < 25 && Base(X()) > 25 && Close(X()+1) < Close(X()))
   {  return(true);
   }
   else if(T == POSITION_TYPE_SELL && ATRAverage(X()+1) > ATR(X()+1) && ATRAverage(X()) < ATR(X()) && ATR(X()) < High(X())-Low(X()) && Base(X()+1) < 25 && Base(X()) > 25 && Close(X()+1) > Close(X()))
   {  return(true);
   }
   return(false);
}

Четкое определение консолидаций и прорывов в коде — очень громоздкий процесс, хотя для трейдеров, торгующих вручную, он не представляет трудностей. Наша работа по решению этой проблемы будет основана на использовании индикатора ATR и сборе его показаний за значительный промежуток времени, а затем сравнении их с последним диапазоном ценовых баров. Если ATR оставался подавленным в течение разумного периода времени и находился ниже недавнего диапазона ценового бара, то это может означать прорыв. Разумеется, это лишь неточное наблюдение, и я уверен, что можно сделать более тщательные реализации, но для наших целей в этой статье этого должно быть достаточно! Тестовые прогоны в настройках, аналогичных паттернам, уже рассмотренным выше, дают нам следующие отчеты:

adx_r6

Несмотря на то, что мы стремимся использовать схожие среды и настройки тестирования для всех моделей, эта конкретная модель практически не дала никаких сделок при использовании дневного таймфрейма. Вот почему было сделано исключение и использован часовой таймфрейм. Таким образом, приведенные выше результаты получены на часовом таймфрейме, а не на дневном, как в случае с другими моделями, приведенными выше.


Заключение

На этом мы прервем рассмотрение ADX. Есть еще три паттерна, которые будут рассмотрены вместе со следующим индикатором. Мы рассмотрели ADX на основе паттернов. Это стало возможным, поскольку класс сигналов советников, собранных в Мастере, позволяет это сделать благодаря коду класса Expert Signal. Классы Мастера, используемые при сборке советников, предоставляют множество функций и методов, которые явно исключают необходимость писать код с нуля, особенно при изучении или тестировании идей на предварительном этапе. Помимо использования паттернов, в рамках этой серии нам еще предстоит рассмотреть и другие области, такие как использование отложенных ордеров, настройка потока ордеров или количества одновременных позиций, которые можно открыть в любое время, использование индикаторов, таких как ATR, для управления входными параметрами ценового разрыва не только для трейлинг-стопа, но и для начальных уровней стоп-лосса и тейк-профита, а также многое другое. Надеюсь, мы рассмотрим эти и многие другие вопросы когда-нибудь в будущем, а пока займемся основами - паттернами и обычными индикаторами.

Перевод с английского произведен MetaQuotes Ltd.
Оригинальная статья: https://www.mql5.com/en/articles/16085

Прикрепленные файлы |
SignalWZ_40.mqh (26.64 KB)
SignalWZ_42.mqh (23.87 KB)
wz_40.mq5 (8.39 KB)
wz_42.mq5 (8.39 KB)
Добавляем пользовательскую LLM в торгового робота (Часть 5): Разработка и тестирование торговой стратегии с помощью LLM (II) - Настройка LoRA Добавляем пользовательскую LLM в торгового робота (Часть 5): Разработка и тестирование торговой стратегии с помощью LLM (II) - Настройка LoRA
Языковые модели (LLM) являются важной частью быстро развивающегося искусственного интеллекта, поэтому нам следует подумать о том, как интегрировать мощные LLM в нашу алгоритмическую торговлю. Большинству людей сложно настроить эти модели в соответствии со своими потребностями, развернуть их локально, а затем применить к алгоритмической торговле. В этой серии статей будет рассмотрен пошаговый подход к достижению этой цели.
Нейросети в трейдинге: Обобщение временных рядов без привязки к данным (Mamba4Cast) Нейросети в трейдинге: Обобщение временных рядов без привязки к данным (Mamba4Cast)
В этой статье мы знакомимся с фреймворком Mamba4Cast и подробно рассматриваем один из его ключевых компонентов — позиционное кодирование на основе временных меток. Показано, как формируется временной эмбеддинг с учётом календарной структуры данных.
От новичка до эксперта: Совместная отладка на MQL5 От новичка до эксперта: Совместная отладка на MQL5
Политика «решения проблем» может создать четкую программу для овладения сложными навыками, такими как программирование на MQL5. Такой подход позволяет сконцентрироваться на решении проблем, одновременно развивая свои навыки. Чем больше проблем вы решаете, тем более продвинутый опыт передается в ваш мозг. Лично я считаю, что отладка - это самый эффективный способ освоить программирование. Сегодня мы рассмотрим процесс очистки кода и обсудим лучшие методы преобразования запутанной программы в ясную и функциональную. Прочтите эту статью и откройте для себя ценную информацию.
Компьютерное зрение для трейдинга (Часть 2): Усложняем архитектуру до 2D-анализа RGB-изображений Компьютерное зрение для трейдинга (Часть 2): Усложняем архитектуру до 2D-анализа RGB-изображений
Компьютерное зрение для трейдинга, как работает и как разрабатывается по шагам. Создаем алгоритм распознавания RGB-изображений графиков цен с механизмом внимания и двунаправленным LSTM-слоем. В результате получаем рабочую модель прогнозирования цены евро-доллара с точностью до 55% на валидационном участке.