English 中文 Español Deutsch 日本語 Português
preview
Торговая стратегия на индикаторе улучшенного распознавания свечей Доджи

Торговая стратегия на индикаторе улучшенного распознавания свечей Доджи

MetaTrader 5Тестер | 4 апреля 2023, 13:56
1 231 2
ds2
ds2

Введение

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

В той статье было описано создание индикатора свечей Доджи на метабарах и продемонстрирована его работа.

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


Концепция торговой стратегии: достаточно ли только свечей?

Индикатор Доджи, использующий метабары, мы возьмем из вышеупомянутой статьи. К сожалению, не получится просто открывать и закрывать сделки по показаниям этого индикатора. Но дело тут не в индикаторе и не в метабарах. А в том, что свечной паттерн Доджи в принципе не рассчитан на использование в качестве самостоятельного торгового сигнала.

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


Подружить тренд и метабары

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

В общем, тренд мы построим на обычных барах.

Единственное, что нужно знать, это время окончания тренда, то есть номер бара, с которого уже начинается свеча Доджи, обнаруженная индикатором. Ведь ширина этой свечи может меняться в широком диапазоне (задаваемом в настройках индикатора). Бары, составляющие метабар свечи, лучше не считать частью тренда. Свеча Доджи — его потенциальная разворотная точка, то есть, она уже и не старый тренд, но и еще не новый. Либо она частично и то, и другое — как посмотреть. В целом ее можно считать и флетом, так как у нее цена закрытия близка к цене открытия.

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

Самый простой способ при расчете тренда узнать, когда же начинается свеча Доджи, — это производить расчет тренда в том же индикаторе, который строит эту свечу. То есть мы доработаем индикатор из прошлой статьи, чтобы он стал включать в себя фильтр: показывать только такие свечи Доджи, перед которыми есть соответствующий им тренд. Также этот индикатор с такой настройкой станет и непосредственно пригодным для торговли: по его сигналам можно будет совершать сделки без какого-либо дополнительного анализа.

Сейчас у индикатора есть входные параметры, имена которых начинаются с приставки “Candle_”. Это различные параметры свечи. Теперь нам нужно будет добавить в код индикатора еще и различные входные параметры тренда. Как минимум, это должны быть два следующих параметра.

  • Минимальная ширина тренда (измеряется в количестве баров):
input int     Trend_WidthMin        = 10;
  • Максимальная ширина тренда (измеряется в количестве баров):
input int     Trend_WidthMax        = 50;     

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

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

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

SkipBars = Candle_WidthMax; 
Теперь эта строка должна стать такой:
SkipBars = Candle_WidthMax + Trend_WidthMax;

Подходящий метод вычисления тренда

Определить наличие тренда можно различными алгоритмами. Какие-то из них проще, какие-то сложней. Для использования со свечами Доджи, я считаю, важно узнать не просто факт наличия тренда, но и некоторую его характеристику. Это проще показать визуально:

Примеры трендов перед свечой Доджи.

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

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

Это можно сделать, если для определения тренда использовать метод линейной регрессии. Мы при этом получим не просто признак наличия тренда, а еще и формулу линии, проходящей через середину трендового канала:

y = A + B * x

Состав формулы:

x — это координаты точек графика по горизонтальной оси, то есть в нашем случае это номера баров.

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

B — коэффициент, характеризующий наклон линии тренда. Чем этот коэффициент больше, тем тренд круче, мощнее. При положительном значении коэффициента линия будет слева направо возрастать, что соответствует восходящему тренду. Отрицательное значение коэффициента соответствует нисходящему тренду.

A — просто вспомогательный коэффициент для позиционирования линии тренда на нужной высоте графика. Он не несет какой-либо смысловой нагрузки в плане трейдинга.

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

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

      double BarPrice = (open[CurBar] + close[CurBar] + high[CurBar] + low[CurBar])/4;
        
      X = TrendBarNum;
      Y = BarPrice;
      N = TrendBarNum;
      S1 += X;
      S2 += Y;
      S3 += X * Y;
      S4 += X * X;

Когда все суммы по трендовым барам собраны, то выводятся коэффициенты формулы регрессии:

         B = (N * S3 - S1 * S2) / (N * S4 - S1 * S1);
         A = (S2 - B * S1) / N;

Когда мы рассчитали формулу линейной регрессии, то, анализируя коэффициент B, мы можем узнать, есть ли в этой группе баров тренд, согласуется ли он с направлением свечи:

         if ((CandleDir < 0)&&(B < 0)) continue;
         if ((CandleDir > 0)&&(B > 0)) continue;

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

input double  Trend_PowerMin        = 0.01;

В коде этот параметр преобразовывается в ту же единицу измерения, что и коэффициент B из формулы регрессии, и они сравниваются:

         if (MathAbs(B) < (Trend_PowerMin*_Point*PeriodSeconds()/60)) continue;

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

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

Чтобы вычислить ширину канала, нужно пройтись по всем барам тренда, вычислить для каждого бара значение регрессии (тот самый «y» из ранее уже полученной формулы линейной регрессии), вычислить разницу между этим значением и ценами бара, накапливать наибольшие значения этих разниц:

         for (X=1; X<=TrendBarNum; X++)
         {
            int TmpCurBar=CandleStartBar+X;
            Y = A + B*X;
            DH=high[TmpCurBar]-Y;
            DL=low [TmpCurBar]-Y;
            if ((DH > maxDH)||(X==1)) maxDH=DH;
            if ((DL < minDL)||(X==1)) minDL=DL;
         }

Эту самую ширину канала мы можем сравнивать с высотой свечи Доджи – чтобы сделать вывод, достаточно ли сильны движения в этой свече, чтобы развернуть этот тренд. Для этого в индикатор добавим еще один входной параметр тренда, задающий максимально допустимое отношение ширины канала к высоте найденной свечи Доджи:

  input double  Trend_ChanelPowerMax  = 1;

В коде индикатора он учитывается следующим образом:

         if ((maxDH-minDL) > Trend_ChanelPowerMax*CandleHeight) break; 

Полный код индикатора есть в приложении к статье.


Финальный алгоритм индикатора для стратегии

Теперь, когда у нас есть код, определяющий наличие тренда, подключим его в качестве фильтра. Чтобы на графике индикатора можно было отображать только те свечи Доджи, перед которым есть тренд, подходящий по всем параметрам: направление, длина, ширина.

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

bool DetectTrend(
                 int CandleStartBar,
                 int CandleDir,
                 double CandleHeight,
                 const double& open[],
                 const double& high[],
                 const double& low[],
                 const double& close[]
                )

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

               if (DojiExists)
               {
                  if (DetectTrend(CurBar, CandleDir, CandleHeight, open, high, low, close))
                     break; // свеча и тренд есть, дальше не надо расширять метабар
                  else
                     DojiExists=false;
               }

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


Алгоритм торгового советника

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

Таким образом, показания такого индикатора — это уже готовый сигнал для торгового советника. Появилась линия на индикаторе — открываем сделку. Остается решить вопрос, когда же потом сделку закрывать.

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

Кстати, по такому сигналу происходит не просто закрытие сделки. А следом тут же произойдет и открытие новой сделки — в направлении, противоположном предыдущему. Так как мы используем сигналы индикатора и для входа.

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

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

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

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


Проверка получившегося торгового советника

Перед проведением масштабных испытаний на истории проверим, насколько корректно в принципе всё работает. Запустим советника в тестере стратегий MetaTrader 5 на небольшом отрезке истории и рассмотрим его сделки, отображенные на графике.

Видно, что поведение советника соответствует задуманному алгоритму. Вот случай, когда сделка открылась по корректному сигналу индикатора:

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


Позже эта сделка закрылась по обратному сигналу с открытием новой сделки в другом направлении:

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


Случай, когда от индикатора долго не было встречного сигнала, и закрытие сделки произошло по тейк-профиту:

Сигналов на индикаторе нет. Сделка, открытая советником, закрылась по достижении уровня тейк-профита.


Подготовка к тестированию торговой стратегии на истории

Получившийся у нас торговый советник имеет очень гибкие настройки. Можно настроить его, чтобы он торговал на свечах Доджи, основанных на метабарах. А можно — чтобы на классических (одиночных) барах. Параметры тренда перед свечой тоже можно настраивать вплоть до нулевых значений (что будет, по сути, означать, что наличие тренда не учитывается). Всё это кардинально влияет на поведение советника. Можно даже условно считать эти варианты настроек разными торговыми стратегиями. Оптимизация покажет, какие же из этих вариантов наиболее эффективны.

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

Выберем для тестирования таймфрейм H4 и символ EURUSD. Для хорошей статистики, с минимальным влиянием случайностей и эффекта подгонки, мы возьмем отрезок истории побольше — длиною в 10 лет. Тестер стратегий в MetaTrader 5 позволяет разбить выбранный отрезок на две половины: на первой будет производиться обучение советника, а на второй половине — автоматическое тестирование после обучения (форвард-тест).



Мы проведем два сеанса тестирования (и обучения), чтобы выявить, что же эффективней: метабары или классические свечи. Сравнивать будем по фактору восстановления, то есть отношению полученной прибыли к просадке. Чем больше этот параметр, тем стратегия прибыльней.

Оптимизируемых параметров у советника много, так что для ускорения оптимизации проведем ее не полным перебором, а генетическим алгоритмом.


Настройки для однобаровых (классических) свечей Доджи

Таймфрейм H4. Ширина свечи — строго 1 бар. Остальные настройки имеют широкий диапазон оптимизации:

Параметр советника Старт
Шаг
Стоп
Candle_WidthMin 1
Candle_WidthMax 1
Candle_HeightPowerMin 0.2 0.2 2
Candle_BodyPowerMax 0.1 0.1 0.4
Candle_ShadowPowerMax 0.1 0.1 0.4
Trend_WidthMin 1 3 10
Trend_WidthMax 1 4 40
Trend_PowerMin 0 0.2 2
Trend_ChanelPowerMax 0.5 0.2 2
Lots 0.1
TakeProfit 300 300 3000
StopLoss 300 300 3000

Получается свыше 63 миллионов комбинаций параметров. Но генетическая оптимизация позволит сократить перебор в тысячи раз и уложиться в несколько минут времени.


Настройки для метабаровых свечей Доджи

Метабары могут иметь переменную ширину в неограниченном диапазоне, то есть один советник мог бы сразу торговать по огромному количеству свечей разной ширины. Но для чистоты эксперимента мы не будем задавать диапазон сильно шире, чем в тестировании однобаровых свечей. Стандартные доступные таймфреймы, ближайшие к H4, это H3 и H6. Метабарами мы захватим лишь промежуток между этими значениями. Ближайший меньший таймфрейм, позволяющий это сделать, — M30. Запустив советник на нем, мы сможем торговать на всех метабарах, имеющих ширину, эквивалентную любой из следующих: H3.5, H4, H4.5, H5, H5.5. Лишь один из этих таймфреймов (H4) доступен для торговли на классических свечах Доджи. На остальных мы бы не смогли торговать в принципе, если бы не метабары. Свечи на метабарах — словно кролик, которого фокусник извлекает из пустой шляпы. Только с кроликом это ловкий фокус с перепрятыванием заранее существующего объекта, а вот метабары ловят реальные дополнительные ценовые движения (мы в этом убедились в предыдущей статье). И вот-вот мы уже узнаем, можно ли эти движения превратить в реальный дополнительный доход.

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

Параметры, отличающиеся от однобарового теста, выделены жирным шрифтом.

Таймфрейм M30 (но за счет метабаров симулируется как бы H4 и его окрестности).

Параметр советника Старт
Шаг
Стоп
Candle_WidthMin 7
Candle_WidthMax 11
Candle_HeightPowerMin 0.2 0.2 2
Candle_BodyPowerMax 0.1 0.1 0.4
Candle_ShadowPowerMax 0.1 0.1 0.4
Trend_WidthMin 8 24 80
Trend_WidthMax 8 32 320
Trend_PowerMin 0 0.2 2
Trend_ChanelPowerMax 0.5 0.2 2
Lots 0.1
TakeProfit 300 300 3000
StopLoss 300 300 3000


Результаты тестирования торговой стратегии на истории

В процессе оптимизации советника на 5 годах истории тестер стратегий перебрал порядка 5 тысяч вариантов настроек и построил график, где отобразил, какой результат достиг советник на каждом из вариантов. Можем поставить рядом такие графики от однобарового советника и от метабарового, выровняв их по масштабу вертикальной шкалы (фактор восстановления):


Все результаты оптимизации однобарового (слева) и метабарового (справа) советников


По этим графикам видно, что с метабарами советник в целом достигал более хороших результатов.

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

Тип свечей Количество сделок
(за один проход советника по обучающей истории)
Минимум Среднее Максимум
Однобаровые
0
54
1472
Метабаровые
0
82
3796

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

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

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

  • количество сделок >= 120 (за 5 лет это 2 сделки в месяц)

После этого из около 5000 вариантов настроек остались всего около 600 для однобарового советника и около 900 для метабарового (так как он в среднем совершает больше сделок). Вот по ним и построим единый график для сравнения этапов обучения однобарового советника и метабарового:

Минимально достоверные результаты оптимизации


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

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

Посмотрим теперь, как советники с лучшими вариантами настроек поведут себя на следующих 5 годах истории на форвард-тесте. На последнем графике было видно, что в среднем (линия регрессии) результаты обучения достигали значения, равного 2. Вот и возьмем в качестве хороших значений всё что выше этого среднего. К выборке, отображаемой на графике выше, применим дополнительный фильтр:

  • фактор восстановления >= 2 (на 5-летней истории при просадке 50% это соответствовало бы 20% годовых).

Размер выборки теперь сократился примерно до 200 значений как для однобарового, так и метабарового советников. Для всех настроек из этой выборки мы найдем результаты, достигнутые на форвард-тесте, и построим по ним график:


Форвард-тест лучших настроек, полученных при оптимизации


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

А сколько же сделок совершали все советники с этого графика? Посчитаем:

Тип свечей Количество сделок
(за один проход советника по форвард-истории)
Минимум Среднее Максимум
Однобаровые
121
231
543
Метабаровые
122
352
1173

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

Напомню, что это и было целью исследования в данной статье — определить, позволяют ли метабары совершать больше сделок (а не только находить больше свечей) и увеличивает ли это доход. Можно дать утвердительный ответ на оба вопроса.

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

Timeframe H4 M30
Входные параметры
Candle_WidthMin 1 7
Candle_WidthMax 1 11
Candle_HeightPowerMin 0.4 2 1.8 1.6
Candle_BodyPowerMax 0.2 0.1 0.2 0.2
Candle_ShadowPowerMax 0.1 0.4 0.4 0.3
Trend_WidthMin 1 80 80 80
Trend_WidthMax 13 296 296 168
Trend_PowerMin 1.6 0 0 0
Trend_ChanelPowerMax 1.5 1.9 1.7 1.9
Lots 0.1
TakeProfit 900 300 300 300
StopLoss 300 3000 1200 3000


Заключение

Экспериментально удалось показать, что применение свечей на метабарах вместо классических (однобаровых) свечей позволяет торговой стратегии совершать значительно больше сделок.

Метабары стоит применять осторожно: ведь убыточная стратегия, совершая больше сделок, станет еще убыточней. Но вот прибыльная стратегия может стать более прибыльной.

Прикрепленные файлы |
MQL5.zip (5.39 KB)
Последние комментарии | Перейти к обсуждению на форуме трейдеров (2)
Dmitiry Ananiev
Dmitiry Ananiev | 4 апр. 2023 в 14:01
Качество статей и польза от них что-то в последние полгода не очень. Алгоритмы оптимизации никуда не встраиваются. Как ими пользоваться в реальных советниках - непонятно.
Какие то недоразвитые теории в использовании индикаторов... Печально все это. 
Rashid Umarov
Rashid Umarov | 4 апр. 2023 в 17:11

Раньше и трава была зеленее, ага...

Напишите что-то свое, на злобу дня.

Алгоритмы оптимизации никуда не встраиваются. Как ими пользоваться в реальных советниках - непонятно.

Изучайте и встраивайте.  Какие проблемы.

Пример ансамбля ONNX-моделей в MQL5 Пример ансамбля ONNX-моделей в MQL5
ONNX (Open Neural Network eXchange) — открытый стандарт представления нейронных сетей. В данной статье мы покажем возможность одновременного использования двух ONNX-моделей в одном эксперте.
Разработка торговой системы на основе индикатора Gator Oscillator Разработка торговой системы на основе индикатора Gator Oscillator
Представляю вашему вниманию новую статью из серии, в которой мы учимся строить торговые системы на основе самых популярных индикаторов. На этот раз мы поговорим об индикаторе Gator Oscillator и создадим торговую систему по простым стратегиям.
Нейросети — это просто (Часть 37): Разреженное внимание (Sparse Attention) Нейросети — это просто (Часть 37): Разреженное внимание (Sparse Attention)
В предыдущей статье мы познакомились с реляционными моделями, в архитектуре которых используются механизмы внимания. Одной из особенностей указанных моделей является повышенное использование вычислительных ресурсов. В данной статье будет предложен один их механизмов уменьшения количества вычислительных операций внутри блока Self-Attention. Что позволит увеличить производительность модели в целом.
Измерение информативности индикатора Измерение информативности индикатора
Машинное обучение стало популярным методом разработки стратегий. В трейдинге традиционно больше внимания уделяется максимизации прибыльности и точности прогнозов. При этом обработка данных, используемых для построения прогностических моделей, остается на периферии. В этой статье мы рассматриваем использование концепции энтропии для оценки пригодности индикаторов при построении прогностических моделей, как описано в книге Тимоти Мастерса "Тестирование и настройка систем рыночной торговли" (Testing and Tuning Market Trading Systems by Timothy Masters).