UMNICK - адаптивний радник

Спонсор цієї статі - сайт Richinvest.biz - торгуйте бінарніми опціонами з максимальним прибутком!

Останні два місяці MQL-програмісти настільки поглинені новиною про вихід нового терміналу МТ5, що в більшості своїй вже забули про таку реалії життя як МТ4 і, відповідно , MQL4. Тож не дивно, що програм для МТ4 стало з'являтися на порядок менше, а отже знаходити щось, що заслуговує увагу, стало важче. Проте, предмет випробувань знайти вдалося. Виділився він відразу за двома параметрами: назвою (Umnick) і типу (адаптивний радник). Адаптація робота під поведінку ринку завжди представляла великий інтерес, так як в ідеалі дозволяє створити такий собі вічний двигун, який буде працювати завжди і скрізь (утопія, звичайно). Ну а назва відразу ж налаштовує на поблажливе ставлення до результатів. Мовляв, чого ж ви хотіли від цього «розумника»? До речі, автором «Розумаку» виступає Віктор (VictorArt).

Авторське опис суті процесу заінтриговує з перших же рядків: «Загальна Теорія Торгівлі (ОТТ): для отримання прибутку слід торгувати власну функцію, синхронізуючи її з ринком». Після прочитання цього виразу з'являється бажання з калькулятором напереваги гризти твердий граніт науки «Вища математика». Але таку пропозицію змушує трохи охолонути: «У доданому радника демонструються найпростіші принципи використання ОТТ і адаптації до ринку».Все ж «найпростіші» ... Тоді це нам тим більш по зубах. Проте, для дотримання більшої строгості, VictorArt призводить скрін патенту, що захищає компоненти Цифрового Мозку, елементи якого продемонстровані в радника. Ну що ж, переконливо.
Але перейдемо до тестування цього дива кібернетичної думки. Автор пропонує період Н4 і пару EURUSD за цей (2009) рік (див. Рис. 1):

Рис. 1. Авторські результати тестування на парі EURUSD.

На жаль, 54 угоди - не той обсяг, за яким можна про щось судити. Ми підемо далі і перевіримо радника на більш глибокої історії - з 2006 року (див. Рис. 2):

Рис. 2. Результати перевірки за 01. 01. 2006 - 30. 10. 2009.

Тут вже не така райдужна картина (1256 доларів прибутку проти 1897 доларів просадки). До того ж, все це за неповних чотири роки (середня прибутковість близько 300 пунктів в рік).

Як завжди, пробуємо розібратися в суті коду радника і, при можливості, намагаємося його поліпшити. Ну а в ідеалі хотілося б поліпшити результати тестування.

Спочатку необхідно знайти ділянку коду, який відповідає за прийняття рішення про вчинення правочину. Як не дивно, він виявляється дуже компактним:

bool NextBar ()
{
bool rt = false;
double price = (Open [1] + High [1] + Low [1] + Close [1]) / 4;
if (MathAbs (price-pricePrev)> = StopBase)
{
pricePrev = price;
rt = true;
}
return (rt);
}

Якщо остання угода була збитковою, то напрямок наступної операції змінюється на протилежне. Якщо ж угода була прибутковою, то напрямок зберігається. Ніяких інших критеріїв відкриття довгої або лагідної угод в радника не передбачено.

Рівні стопа і профіту в результаті розраховуються як середнє арифметичне з відповідних масивів arrayProfit і arrayLoss.Правда, середнє береться за умови, що загальна сума значень кожного масиву перевищує половину значення StopBase.

Після відкриття угоди ніякого додаткового аналізу для отримання сигналів примусового закриття радник не виробляє. Очікується спрацьовування стопа або профіту угоди.

На мій погляд, саме відсутність критерію завдання напряму угоди призводить до не дуже гарних результатів при тестуванні радника. Тому першою зміною коду буде використання одного з індикаторів МТ4. Довго вибирати з доступного безлічі нам не доведеться. Для цього достатньо зазирнути в 53-й номер журналу від 12. 10. 2009 і перегорнути його до 90-ій сторінки, на якій розташована зведена таблиця по всім розробленим в рубриці «У пошуках успішної стратегії» за цілий рік експертам. На першому місці красується стратегія, заснована на індикаторі Parabolic SAR. Її результати підтверджені по парам USDJPY, GBPUSD і EURUSD не тільки тестами на історії, а й форвард-тестами за 2009 рік.

Тому в тіло функції NextBar вставляємо наступний код:

Signal = 0;
double PSAR1 = iSAR (Symbol (), 0, SARStep, SARMaximum, 1);
double PSAR2 = iSAR (Symbol (), 0, SARStep, SARMaximum, 2);
if (PSAR1 Open [2])
{
Signal = 1;
return (True);
}
if (PSAR1> Open [1] && PSAR2 {
Signal = -1;
return (True);
}
return (False);

Тепер у нас завжди буде заданий напрямок бажаної угоди, що трохи зменшить фактор випадковості в торгівлі. Разом з напрямком у нас додасться два вхідних параметри, що визначають вид індикатора Parabolic SAR - SARStep і SARMaximum. Ще рік тому для кожної валютної пари були підібрані свої параметри індикатора , які будемо використовувати і сьогодні при тестуванні нової версії «Розумаку».
Наступним зміною буде приведення значення StopBase до динамічного стану, так як в оригіналі значення StopBase було жорстко зафіксовано на всій протяжності історії, що також не надавало раднику маневреності.
Для досягнення ефекту динамічності досить прив'язати StopBase до середньої волатильності валютної пари, за що відповідає індикатор ATR:

StopBase = iATR (Symbol (), 0, 24, 1);

Решта зміни можна назвати косметичними, мета яких - усунути дрібні недоробки в радника, що не дозволяють використовувати його онлайн. Правда, один недолік все ж залишиться - при перерві в роботі експерта (вимикання термінала або навіть комп'ютера) буде губитися статистика, зібрана за останніми восьми операціях, яку згодом потрібно буде відновити.
В результаті отримуємо другу версію «Розумаку», яку будемо тестувати вже на таймфрейме Н1 і періоді 01. 01. 2006 - 31. 10. 2009 (див. Рис. 3-6). Так, для EURUSD параметри повинні бути такими: SARStep = 0. 01, SARMaximum = 0. 01.

Рис. 3. Результати тестування другої версії «Розумаку» на валютній парі EURUSD.

Проти оригінальних результатів підсумок погіршився. Прибутки немає зовсім, а просадка зашкалює за 2000 доларів. Однозначно в кошик.
Для пари USDCHF бралися такі параметри: SARStep = 0. 009, SARMaximum = 0. 09.

Рис. 4. Результати тестування другої версії «Розумаку» на валютній парі USDCHF.

Тут прибуток вже є: 2904 доларів чистого прибутку проти 1208 доларів просадки (ФВ = 2. 40). Але, виходячи з того, що зростання прибутку мав нерівномірний характер, а вибуховою, говорити про досягнення стратегії не доводиться.

Для GBPUSD параметри річної давнини такі: SARStep = 0. 01 і SARMaximum = 0. 03.

Рис. 5. Результати тестування другої версії «Розумаку» на валютній парі GBPUSD.

Зростання прибутку більш рівномірний, хоча без зигзагів теж не обійшлося. Проте, зростання спостерігається на всіх ділянках тесту. Чистий прибуток вийшла 6149 доларів проти 2129 доларів просадки (ФВ = 2.88). Таким чином, отримали дуже непоганий результат. Погано, звичайно, що просадка така величезна, але очікуваний прибуток теж висока.

І, нарешті, USDJPY: SARStep = 0. 006, SARMaximum = 0. 05.

Рис. 6. Результати тестування другої версії «Розумаку» на валютній парі USDJPY.

Як і у випадку з EURUSD, говорити нема про що - просадка зашкалює, прибутку немає.

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

Файли для скачування:

- Test. zip - розгорнуті результати тестування радників
- UmnickTrader_1. 01. 01. mq4 - оригінальна версія радника «розумник»
- UmnickTrader_1. 01. 01_V2. mq4 - перероблена, виправлена ​​і доповнена версія стратегії