Самотестируемый и самооптимизируемый индикатор Matreshka Часть 4

Самотестируемый и самооптимизируемый индикатор Matreshka Часть 4

26 ноября 2018, 21:56
Dimitr Trifonov
0
181

5. Параметры индикатора Object Options:

5.1 ObjectsStartBar

Индикатор имеет возможность рисовать все Объекты на любом баре графика. Список MetaTrader Объектов используемые индикатором:

1.     Сетка Fibonacci Expansion

2.     TrendLines

3.     SRLines (Support and Resistance Lines)

Если ObjectsStartBar = 0, все объекты рисуются на самом последнем, самом новом баре чарта. Значение ObjectsStartBar устанавливает сдвиг (shift) начального бара назад во времени, индикатор нарисует объекты, которые были актуальны к моменту времени обозначеного начальным баром.

Например Сетка Fibonacci Expression при ObjectsStartBar=20 покажет Сетку, которая была актуальна 20 баров назад. ObjectsStartBar позволяет посмотреть как Сетка была построена и были ли достигнуты уровни Сетки последующими барами.


Индикатор с параметром ObjectsStartBar = 180, бар отмечен вертикальной красной линией. Справа от линии видна сертка, которая была актуальна на тот момент во времени.

5.2 AllowTrendLines

При значении AllowTrendLines = true индикатор рисует линии через вершины ZigZag-а. Линии соединяют каждые две последовательные вершины ZigZag-a и каждые два последовательных дна ZigZag-a. После построения линии, индикатор рисует „Луч“ вправо, вперед во время. Луч является предполагаем уровнем Сопротивления/Поддежки, уровня, к которому цена стремится дойти. Индикатор рисует линии для всех уровней (Lvl), рисуются все линии, которые начинаются после начала последней, самой новой волны Последнего уровня Lvl.


Индикатор с параметром AllowTrendLines = true

5.3 AllowSRLines

При значении AllowTrendLines = true индикатор рисует горизонтальные линии. При завершении любой волны любого порядка индикатор рисует горизонтальную линию на уровне цены экстремума окончания волны – если волна шла вверх, на уровне максимума волны, если вниз – на уровне мимимума. Нарисованые уровни разного уровня (Lvl) показывают разные по важности уровни Сопротивления/Поддержки. Чем старше уровень линии Сопротивления/Поддержки, тем больше вероятность что цена будет стремится к данной линии.


Индикатор с параметром AllowSRLines = true. Уровни Сопративления/Поддержки отмечены короткими горизонтальными линиями вправо от последнего бара, вместе с Сетками Fibonacci Expansion.

6. Параметры индикатора Trading Options:

6.1 AllowTrade

При AllowTrade = true Индикатор использует встроенный симулятор торговли на исторических данных и новых барах. При инициализации индикатор проводит все расчеты с самого старого по самый новый бар. Основные принципы работы модуля Trading Options:

1.     При появлении стрелки вниз или вверх индикатор симулирует открытие позиции, подсчитывает объем позиции и устанавливает TakeProfit и StopLoss.

2.     Уровень TakeProfit устанавливается параметрами TakeProfitFirstIndex и TakeProfitSecondIndex.

3.     Уровень StopLoss отслеживается параметрами AllowSimpleChannel, AllowSqueezeChannel и AllowWPRChannel.

4.     Индикатор чертит линию от момента открытия позиции до момента закрытия, так же как MetaTrader чертит линию для каждого ордера от момента открытия до момента закрытия. Если ордер приносит профит, линия черного цвета, если нет – красного.

5.     Индикатор рисует ордера на исторических данных, а так же в реальном времени на последнем, самом новом баре.


Пример работы открытия позиции и последующее закрытие по TakeProfit или StopLoss.

6.2 StartBalance

При StartBalance = 0 берется баланс Акаунта, подключенного к платформе MetaTrader. При StartBalance > 0 эта сумма, заданая StartBalance, является начальным балансом перед подсчетом индикатора.

6.3 PercentagePerOrder

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

1.     Индикатор берет баланс

2.     Лот равен сумме, необходимой для увеличения депозита на PercentagePerOrder процентов от депозита при достижении уровня TakeProfit.

3.     Если TakeProfit достигнут, для следующей позиции повторяется т.2

4.     Если нет, следующяя позиция имеет Лот необходимый для увеличения депозита на х+1 % от начальной суммы депозита, где ‚х‘ количество убыльных закрытых позиций после последней прибыльной

5.     Если достигнут TakeProfit, повторяется т.2, если нет т.4

7. Testing and Optimization

7.1 Testing

После инициализации индикатора в раздел Experts терминала Metatrader выводятся результат симуляции торговли, а так же статистические данные, например:


Индикатор выводит:

- количество ордеров

- результат баланса

- максимальный лот

- минимальный Margin Level

- просадка в процентах от баланса и в деньгах

- время без прибыли

- максимальное количество прибыльных и убыточных позиций подряд

7.2 Optimization

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

1.     Первое значение параметра

2.     Шаг изменения параметра

3.     Последнее значение параметра

4.     Между значениями необходимо вставить символ ;

Подход взаимствован у оптимизации советников в платформе Metatrader. Например если вместо значения „5“ вписать для параметра DemarkPeriod значение „3;1;7“, индикатор перейдет в режим оптимизации, и запустит оптимизацию параметра DemarkPeriod:


Параметр DemarkPeriod со значением „3;1;7“ - индикатор запустит оптимизацию параметра

 

Индикатор начнет серию инициализаций индикатора – откроет окно с первым значением параметра – 3.


Запуск первой итерации из пяти, что приведет к инициализации индикатора с параметром DemarkPeriod = 3

По завершению инициализации и получения результата тестирования окно закроется и откроется с следующим значением DemarkPeriod – 3+1 = 4. После пересчета всех вариантов DemarkPeriod – 3, 4, 5, 6, 7 – индикатор выбирает тот, который принес максимальную прибыль. Индикатор делает последний пересчет -  со значением DemarkPeriod, которое дало максимальный профит по результату оптимизации, и оставляет график с индикатором открытым.


Последний пересчет –“Set best parameters and stop optimization”. По результатам оптимизации четвертая итерация оказалась самой прибыльной, идикатор устанавливает параметр DemarkPeriod = 6 и инициализируется заново.

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

( Последнее значение параметра – Первое значение параметра ) / Шаг изменения параметра = Целое число

Например:

            3;2;7 -> (7-3)/2 = 4/2 = 2

0.4;0.3;1.3 -> (1.3-0.4)/0.3 = 0.9/0.3 = 3

Важно делать ручную проверку Global Variables установленных Терминалом перед запуском оптимизации. Вызвать список Global Variables можно нажимая клавишу F3 находясь в терминале MetarTrader. Так как оптимизация контролируется с помощью Global Variables, для корректной работы оптимизатора необходимо чтобы переменные начинающие с именем “Matreshka Optimization..” были удалены перед началом оптимизации. В большенстве случаев индикатор заботится об удалении Global Variables, но если прервать оптимизацию до ее завешения и закрыть Терминал, индикатор не всегда успевает удалить Global Variables.


8. Hotkeys/Клавишы управления индикатором

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

Qпрячет/показывает все горизонтальные линии показывающие начало и время волн.

W - прячет/показывает все волны ZigZag, рисуемые индикатором.

E - прячет/показывает все стрелки, обозначающие начало Откатных волн.

R - прячет/показывает все стрелки, обозначающие начало Тренда/Трендовых волн

R - прячет/показывает все каналы окрытия позиции OpenChannel

Y - прячет/показывает все каналы 3PointsChannel

1 - 9 - При нажатии клавиш с цифрами от 1 до 9 индикатор прячет/показывает сетки Fibonacci Expansion, а также прячет/показывает сетки Fibonacci Retracement и Fibonacci Time Zone конкретного уровня. Сетки строятся поверх последней импульсной волны. Например нажимая один раз цифру 1, если на графике существует FibonacciExpansion Lvl 1, индикатор добавит сетку Fibonacci Retracement Lvl 1. Если нажать второй раз ту же клавишу, индикатор уберет Fibonacci Retracement Lvl 1 и добавит Fibonacci Time Zone Lvl 1. Нажимая несколько раз подряд клавишу можно подобрать удобный для пользователя набор сеток рисуемых индикатором на графике – например все три сразу - Fibonacci Expansion, Fibonacci Retracement, Fibonacci Time Zone.


Пример Импульсной волны А Lvl 3 (зеленой) вверх, которая завершилась. После нее идет Откатная волна B, а после Откатной новая Импульсная волна C вверх. На волну А установлены все три Сетки Fibonacci – Expansion (e), Retracement (r), Time Zone (t).

` - При нажатии клавиши ` которая находится слева от цифры 1 на клавиатуре, переключается контроль цифр 1 – 9. Теперь нажатие любой клавишы 1 – 9 прячет/показывает 3PointsChannel уровня Lvl, соответствующего нажатой клавише. Повторное нажатие клавиши ` возвращает переключатель к предыдущему режиму - клавишы 1 – 9 прячут/показывают сетки Fibonacci.

Индикатор опубликован в маркете - https://www.mql5.com/ru/market/product/33478