Обсуждение статьи "Создание самооптимизирующихся советников на MQL5 (Часть 7): Одновременная торговля на нескольких периодах"

 

Опубликована статья Создание самооптимизирующихся советников на MQL5 (Часть 7): Одновременная торговля на нескольких периодах:

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

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

WPR обычно считается осциллятором импульса, и его полный возможный диапазон составляет от 0 до -100. Значения от 0 до -20 считаются медвежьими, а значения от -80 до -100 — бычьими. По сути, индикатор работает путем сравнения текущей цены определенного символа с максимальным значением, достигнутым за выбранный пользователем период. Наша первая задача — создать новый класс SingleBufferIndicator, который будет использоваться как классом RSI, так и классом WPR. Благодаря тому, что классы RSI и WPR имеют общего родителя, мы получим согласованную функциональность обоих классов индикаторов. Начнем с определения класса SingleBufferIndicator и перечисления его членов. 

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


Автор: Gamuchirai Zororo Ndawana