Давайте рассмотрим, как правильно оптимизировать и тестировать роботов - советников в тестере стратегий программы МетаТрейдер 4 на примере советника Илан 1.6. Советники из серии Ilan пользуются большой популярностью среди начинающих трейдеров. Практически каждый новичок, пришедший на валютный рынок Форекс, осуществляет знакомство с автоматической торговлей именно посредством использования советников Ilan. Оно не удивительно, ведь Иланы - это простые советники Форекс, которые могут быть скачаны в сети интернет бесплатно. Скачать Иланов различных модификаций можно и на нашем сайте автофорекс.ру.
В соответствующих разделах есть информация о том, как тестировать и оптимизировать советников, но представлена она в общем виде, то есть, без учета особенностей настроек того или иного робота, другими словами - без конкретных примеров. В связи с этим мы предлагаем отдельно ознакомиться с отличительными особенностями советника Ilan 1.6, с его параметрами и переменными, а уже на основе этой информации, во второй части материала, подробно рассмотрим процесс оптимизации и тестирования этого же советника.
Скачать советника Ilan 1.6 с входными параметрами, описание которых будет рассмотрено ниже, можно по следующей ссылке:
Скачать архив с советником и SET-файлом -
После стандартной процедуры скачивания архива, его распаковки и копирования файлов советника в папку с терминалом, перезагружаем терминал МетаТрейдер 4, в окне Навигатор
- Советники
находим советника Ilan 1.6 и перетаскиваем на график валютной пары. Открывается окно, где указываются входные параметры Илана по умолчанию, отвечающие за его настройки.
Рассмотрим каждую переменную, указав её значение и суть.
Переменная LotExponent: по умолчанию её значение равно 1.4. Это коэффициент увеличения лота при выставлении следующего колена. То есть, если первый лот открывается объёмом 0.01, то второй будет открываться в размере 0.01 * 1.3 = 0.013. Но, так как открыть ордер таким лотом нельзя, то он автоматически округляется до 0.01, а в памяти сохраняется значение 0.013. При определении объёма лота для третьего ордера уже 0.013 * 1.3. Получается 0.0169, значение округляется до 0.02. Объём четвертого ордера будет высчитываться следующим образом: 0.0169*1.3 = 0.2197, округляется опять до 0.02. Пятый ордер будет открыт объёмом 0.03, так как 0.2197*1.3 = 0.02856, что как раз и округляется до 0.03. Дальше расчёт объёмов лотов, с которыми будут открываться ордера, рассчитываются аналогичным образом. Если же первый ордер открывается с лотом 0.1, то второй ордер с объёмом 0.13 без округления, так как сделки такими лотами могут совершаться.
Вторая переменная - DynamicPips, может принимать 2 значения - true
и false
. True
- в настройках обозначается как 1 (разрешить), а false
- как 0 (запретить). Каков смысл этой переменной? Если установить значение true
, то советнику будет разрешено динамически изменять переменную DefaultPips, о которой речь пойдёт чуть ниже. Если проставлено значение false
, то шаг между выставлением новых ордеров будет фиксированным и равен значению переменной DefaultPips.
DefaultPips - определяет шаг между выставлением новых ордеров по умолчанию. То есть, если задать значение DefaultPips 12, а значение DynamicPips - false
, то советник Илан 1.6 будет открывать каждый новый ордер после прохождения ценой расстояния в 12 пунктов. В противном случае, переменная DefaultPips будет изменяться динамически.
Переменная Glubina - обозначает, сколько баров (или свечей) эксперт будет анализировать перед открытием первой сделки. Так, при установленном параметре, равном 24, робот отсчитает предыдущие High
и Low
свечи в общем количестве 24, и проанализирует по ним состояние рынка.
Параметр DEL - коэффициент расчёта динамического DefaultPips при DynamicPips - true
. При этом DefaultPips будет рассчитываться по формуле [количество High свечей - количество Low свечей]/DEL.
Переменная SLIP (проскальзывание) - определяет, насколько может отличаться цена, если дилинговый центр запросит реквоты. К примеру, если в процессе обработки заявки советника дилинговый центр сообщает об изменении цены на столько-то пунктов, и размер этого изменения равен или меньше значения SLIP, то ордер все равно будет обработан. А если изменение цены больше переменной SLIP, то ордер открыт не будет.
Переменная Lots определяет объём первого открываемого советником ордера. Значение по умолчанию - 0.01. Однако не все дилинговые центры при выбранном типе счета разрешают торговать микро-лотом, устанавливая возможный минимальный объём - 0.01. Тот же популярный у новичков дилинговый центр RoboForex на центовом счёте типа Fix-Cent разрешает открывать ордера минимальным объёмом 0.1.
Переменная LotDecimal определяет, сколько знаков будет рассчитывать советник Ilan 1.6 в лоте после запятой. Если он торгует микролотами, то есть в диапазоне от 0.01 до 0.09, то значение LotDecimal должно составлять 2. В условиях торговли минилотами (от 0.1 до 0.99) LotDecimal = 1, при торговле нормальными лотами (1 и более) переменная LotDecimal = 0. Подробная информация и мини, микро и стандартных лотах доступна здесь.
Переменная TakeProfit задаёт количество пунктов прибыли от безубытка всей серии ордеров, при которой робот закроет ордера.
Переменная Drop определяет значение вшитого в советник Ilan индикатора CCI с периодом 55. Рекомендуемое значение Drop = 500. Когда индикатор CCI превышает отметку 500, все открытые ордера советник закроет, во избежание больших потерь.
Сам индикатор CCI (Commodity Chanel Index
) - это трендовый индикатор индекса товарного канала, который измеряет отклонение цены валютной пары от среднестатистической цены. Для индикатора задан диапазон от +100 до -100, и если он выходит за эти пределы, то это свидетельствует о тренде вверх (значение индикатора больше +100) или тренде вниз (значение меньше -100) валютной пары, на графике которой установлен индикатор CCI.
Наглядно рассмотрим этот индикатор, вынеся его окно отдельно на график. Для этого при открытом окне выбранной валютной пары в панели Индикаторы
выбираем тип Трендовые
- Commodity Chanel Index
.
В открывшемся окне значение периода по умолчанию может быть отличным от 55, поэтому его меняем самостоятельно на 55. Жмём ОК
.
Под окном графика появляется окно индикатора с уровнями +100, 0, -100. Кривая линия обозначает направление движения тренда. На примере видно, что при резком нисходящем движении индикатора наблюдается снижение цены инструмента. При этом, график индикатора опускается ниже значение -500, достигая отметки -517.
Если до этого были открыты сделки на покупку, а цена пошла в сторону снижения, и индикатор CCI достиг отметки -500, то советник принудительно закроет все открытые сделки на покупку, чтобы избежать больших убытков, связанным с неверным определением направления для открытия сделок. В Журнале
торгового терминала MetaTrader 4 отразится запись Closed All due to TimeOut
, которая означает, что все сделки закрыты по тайм-ауту, то есть, дожидаться улучшения рыночного состояния не целесообразно.
Аналогично, принудительно будут закрываться сделки на продажу при достижении индикатором уровня +500.
Следующая переменная RsiMinimum - также является встроенным в код советника индикатором RSI. Рекомендуется задавать ей значение 30, которое будет являться нижней границей индикатора. Ниже этой границы советник не будет открывать сделки на продажу.
Переменная RsiMaximum - граница индикатора RSI, выше которой советник Ilan 1.6 не будет открывать сделки на покупку.
Индикатор RSI - Relative Strenght Index
- индекс относительной силы, измеряет импульс движения цены. Его значение находится в диапазоне от 0 до 100%. Значения ниже 30% считаются зоной перепроданности, то есть далее продавать валюту не рационально, поэтому в советнике значение 30 и является нижней границей. Также, пока индикатор будет находиться ниже уровня 30, будут ограничения на совершения сделок на покупку.
Значение выше 70 - является зоной перекупленности. Если индикатор выше этой отметки, то советник не будет совершать сделок на покупку, так как рынок сигнализирует о скором изменении направления тренда. Однако будет существовать запрет и на открытие сделок на продажу.
Значения индикатора RSI в советнике Илан 1.6 по умолчанию определяются на тайм-фрейме 1 час.
Сам индикатор относится к осцилляторам, поэтому искать его следует в панели Индикаторы
- Осцилляторы
- Relative Strenght Index
терминала MT 4. В появившемся окне параметров все значения оставляются по умолчанию.
Переменная MagicNumber - магическое число, которое присваивается каждой сделке, открытой советником, для того, чтобы отличать их от сделок, открываемых в торговом терминале другими советниками или самим трейдером вручную. По умолчанию, "магик" эксперта Илан 1.6 равен 2222.
MaxTraders = 20 - переменная, определяющая максимальное количество ордеров, которые робот может открывать в рамках одной серии.
Переменная UseEquityStop может принимать два значение - true (1 - разрешить) и false (2 - запретить). При значении true - Илан следит за общим убытком сделок, то есть, разрешается работа переменной TotalEquityRisk.
TotalEquityRisk - задаёт размер максимальной просадки по эквити, которую может допустить советник. Так, при значении TotalEquityRisk = 20, Ilan закроет все свои ордера, если общая просадка составит 20% от суммы средств на счету.
Что такое эквити? Эквити (на английском - Equity
) - это баланс счета с учётом текущих прибылей и убытков по открытым позициям. Если на счёте перед открытием первой сделки есть 1000 долларов, и размер убытков по открытым советником позициям составляет 20%, то есть 200 долларов, то все сделки принудительно закрываются.
Параметр UseTrailingStop может иметь значения 1 (true
-разрешить) и 2 (false
- запретить). В случае, когда задано значение true, и сделки входят в зону безубытка, будет активироваться трейлинг-стоп и скользить за ценой, пока она идёт в нужном направлении. Аналогичный принцип слежения за ценой заложен в работу советника Forex Trailingator, который сам сделки не открывает, а только сопровождает их.
Параметр UseTimeOut опять же принимает два значения true
- 1 и false
- 2. При значении переменной true советник Ilan 1.6 будет закрывать сделки, которые висят уже долгое время. Период, определяющий, как долго может висеть сделка открытой, выставляется переменной MaxTradeOpenHours. Значение переменной MaxTradeOpenHours измеряется в часах.
Как видно, правильная оптимизация советника Ilan 1.6, а также его тестирование будут зависеть от того, насколько верно и грамотно будут заданы его входные параметры. Поэтому очень важно научиться разбираться в них, чтобы правильно оптимизировать советника Илан 1.6 или других советников в тестере стратегий, заранее отсекая убыточные параметры.
Для закрепления материала рекомендуем ознакомиться с видео - версией первой части оптимизации советника Илан 1.6, а именно - с обзором переменных данного советника:
Во второй части статьи, которая опубликована здесь, подробно рассмотрен непосредственно сам процесс оптимизации и тестирования советника Илан 1.6 в тестере стратегий торгового терминала МетаТрейдер 4.