Як правильно оптимізувати радників Ілан в тестері стратегій: частина перша

Давайте розглянемо, як правильно оптимізувати і тестувати роботів - радників в тестері стратегій програми МетаТрейдер 4 на прикладі радника Ілан 1.6. Радники з серії Ilan користуються великою популярністю серед початківців трейдерів. Практично кожен новачок, який прийшов на валютний ринок Форекс, здійснює знайомство з автоматичною торгівлею саме за допомогою використання радників Ilan. Воно не дивно, адже Ілани - це прості радники Форекс, які можуть бути завантажені в мережі інтернет безкоштовно. Завантажити Ілан різних модифікацій можна і на нашому сайті автофорекс.ру.

У відповідних розділах є інформація про те, як тестувати і оптимізувати радників , Але представлена ​​вона в загальному вигляді, тобто, без урахування особливостей налаштувань того або іншого робота, іншими словами - без конкретних прикладів. У зв'язку з цим ми пропонуємо окремо ознайомитися з особливостями радника Ilan 1.6, з його параметрами і змінними, а вже на основі цієї інформації, у другій частині матеріалу, детально розглянемо процес оптимізації та тестування цього ж радника.

Завантажити радника Ilan 1.6 з вхідними параметрами, опис яких буде розглянуто нижче, можна за наступним посиланням:

Завантажити архів з радником і SET-файлом - ilan_1.6.rar [17,86 Kb] (завантажень: одна тисяча сімсот сімдесят один)

Після стандартної процедури скачування архіву, його розпакування і копіювання файлів радника в папку з терміналом, перезавантажуємо термінал МетаТрейдер 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.

Для цього при відкритому вікні обраної валютної пари в панелі Індикатори вибираємо тип Трояндова - Commodity Chanel Index

У вікні, значення періоду за замовчуванням може бути відмінним від 55, тому його міняємо самостійно на 55. Тиснемо ОК.

Тиснемо ОК

Під вікном графіка з'являється вікно індикатора з рівнями +100, 0, -100. Крива лінія позначає напрямок руху тренда. На прикладі видно, що при різкому низхідному русі індикатора спостерігається зниження ціни інструменту. При цьому, графік індикатора опускається нижче значення -500, досягаючи позначки -517.

При цьому, графік індикатора опускається нижче значення -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.

Який сенс цієї змінної?
Що таке Еквіті?