Известно, что индикатор Parabolic SAR даёт не только сигналы на вход в позицию, но и чёткие точки для установки скользящего ордера Stop Loss. То есть по сути своей этот индикатор представляет собой практически готовую торговую стратегию. Я решил протестировать, насколько эффективна будет торговая стратегия на основе Parabolic SAR. Для этого я воспользуюсь стандартным тестером стратегий из торгового терминала МТ4.
Первым делом необходимо переложить алгоритм стратегии на язык MQL4. Алгоритм работы очень простой. Он предполагает покупку, когда индикатор находится ниже цены, и продажу – когда индикатор перескакивает выше цены. Одновременно в момент этих перескоков закрывается предыдущая позиция.
Кроме этого в алгоритм работы системы добавлен простой фильтр в виде индикатора ADX. Как известно, индикатор Parabolic SAR даёт наилучшие результаты в условиях тренда, а ADX как раз отображает силу тренда (его значение выше 20 свидетельствует о наличии последнего).
Итак, исходные данные для тестирования следующие:
- Финансовый инструмент: EUR/USD (евро vs американский доллар);
- Таймфрейм графика: D1 (дневной);
- Период тестирования 2017 год.
Вот так выглядит программа на MQL4:
//+------------------------------------------------------------------+ //| PSAR.mq4 | //| Copyright 2018, Азбука трейдера | //| https://www.azbukatreydera.ru | //+------------------------------------------------------------------+ #property copyright "Copyright 2018, Азбука трейдера" #property link "https://www.azbukatreydera.ru" #property version "1.00" #property strict int b,s,w,p,ticket,i; extern double pos=10; double psard1,adxd1; int start() { psard1=iSAR(NULL,1440,0.02,0.2,0); adxd1=iADX(NULL,1440,14,PRICE_CLOSE,MODE_MAIN,0); if(Bid>psard1) {w=1; } if(Bid<psard1) {w=-1; } if(OrdersTotal()==0)//если открытых ордеров нет { if(Bid>psard1) {if(adxd1>20) {b=OrderSend(Symbol(),OP_BUY,pos,Ask,3,psard1,0); p=-1; } } if(Bid<psard1) {if(adxd1>20) {s=OrderSend(Symbol(),OP_SELL,pos,Bid,3,psard1,0); p=1; } } } if(p==w) { OrderSelect(i,SELECT_BY_POS); ticket=OrderTicket(); if(p==-1) {OrderClose(ticket,pos,Bid,3); } if(p==1) {OrderClose(ticket,pos,Ask,3); } } return(0); }
А вот так выглядит график результатов тестирования:
Давайте разберём результаты тестирования полученные в отчёте тестера стратегий.
Как видите, в общем и целом, рассматриваемая стратегия принесла довольно приличный результат. Кривая роста прибыли уверенно направлена вверх, чистая прибыль составила 120% годовых (по результатам работы за год). Показатель прибыльности системы 2.55, что весьма неплохо. Максимальная серия из трёх убыточных сделок (при общем количестве сделок в 21) тоже вполне приемлема. Единственное, что слегка портит всю малину, так это значение максимальной просадки в 33,73%.
Такие относительно хорошие результаты отчасти объясняются уверенным восходящим трендом на дневном графике в течение всего 2017 года. Взгляните на рисунок ниже.
Если бы не было этого тренда, результаты были бы значительно хуже, что подтверждается тестированием на дневном графике другой валютной пары CADJPY. Посмотрите на график ниже.
Как видите, никаким выраженным трендом в течение всего года здесь и не пахнет. Запускаем тестер стратегий с теми же исходными параметрами, за исключением валютной пары (вместо EURUSD ставим CADJPY). В результате получаем такую картину:
Смотрим отчёт тестера:
Как видите, система совершила всего десять сделок за год, в результате которых был получен убыток в размере около 55%. Остальные показатели отчёта рассматривать, в данном случае, не имеет никакого смысла.
Вывод:
Индикатор Parabolic SAR показывает хорошие результаты только при наличии хорошего устойчивого тренда. Когда на ценовом графике флэт или отсутствие ярко выраженного трендового движения, сигналам этого индикатора доверять не стоит.