d9e5a92d

Рамзин Ю. - Паттерны индикатора ADX

В этом выпуске мы рассмотрим торговую систему, основанную на паттернах индикатора ADX. К нам на форум она попала от нашего читателя.

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

Принцип работы системы


Паттерн 1:
Паттерн образуется, когда основная линия ADX опускается ниже линий +DI и -DI, и затем одна из линий +DI и - DI пересекает главную линию ADX сверху вниз, при этом главная линия и линия, которая окажется выше, должны двигаться вверх. В зависимости от того, какая из линий пересекла главную линию ADX на High или Low свечи, устанавливается отложенный ордер на продажу или покупку соответственно.

Если этой линией была -DI, то на High свечи устанавливается ордер на покупку , в противном случае на Low устанавливается ордер на продажу.


В системе используются также интересные способы выхода из позиций и удаления отложенных ордеров. Их мы рассмотрим ниже, а пока проверим, какой результат даютправила при стандартных значениях индикатора ADX и фиксированных уровнях TakeProfit и StopLoss.
Для тестирования возьмем пару EURUSD 5-тиминутный таймфрейм:

Рис. 2. Тест 2001.01.09-2001.12.01, M5, EURUSD, StopLoss=20, TakeProfit=60.
Как видим, тенденция положительная. Далее разберем второй паттерн системы.

Паттерн 2:


Одна из линий -DI и +DI пересекает снизу вверх основную линию ADX. При этом обе линии должны двигаться вверх, и точка пересечения должна находиться выше уровня 25.

В зависимости от того какая линия -DI или +DI пересекла основную линию, устанавливается отложенный ордер на High или Low свечи, на которой образовался паттерн.


Рис. 3. Графическое отображение правил паттерна 2. Протестируем этот паттерн с такими же условиями.
ЕС - это Союз

Рис. 4. Тест: 2001.01.09-2001.12.01, M5, EURUSD, StopLoss=20, TakeProfit=60.
Как видим, сигналы паттерна 2 являются неэффективными. Но, тем не менее, проверим его работу далее с системой управления выходами, удалением не сработавших ордеров.

Сможет ли она вытянуть этот паттерн в положительную сторону? Проверим.

Правила выходов по паттернам


Правило 1:
Выход из сделки осуществляется при пересечении уровня 40 линией, которая была выше ADX в момент образования сигнала. Тестируем правило для первого паттерна:


Рис. 5. Результаты работы паттерна 1 с использованием правила 1 выхода из сделки.
Как видим, без данного правила на выход первый паттерн сработал эффективнее. Тестируем правило для второго паттерна:


Рис. 6. Результаты работы паттерна 2 с использованием правила 1 выхода из сделки.
Второму паттерну это правило лишь помогло сгладить нисходящий график баланса. Поэтому считаем правило несостоятельным.

Правило 2:


Для внутридневной торговли открытые позиции закрывать в конце дня. Для теста возьмем время 23:00 по GMT.
Результат по первому паттерну:


Рис. 7. Результаты работы паттерна 1 с использованием правила 2 выхода из сделки. Результат по второму паттерну:

Рис. 8. Результаты работы паттерна 2 с использованием правила 2 выхода из сделки.

Как видим, результат практически не изменился.

Правило 3:


Ограничение по времени работы внутри дня. Попробуем работать только 7:00-19:00 по GMT. Результат по второму паттерну:


Рис. 10.

Результаты работы паттерна 2 с использованием правила 3 выхода из сделки.
Результат работы с ограничением по времени с 7:00 до 19:00 также дает отрицательный эффект, поэтому проверим еще одну возможность увеличить результативность эксперта - использовать правила управления несработавшими ордерами.

Правила управления несработавшими ордерами


Правило 1:
По пришествию определенного количества баров, если ордер не сработал, его следует удалить. При тестировании, если ордер не сработал за 10 баров после его установки, будем удалять его.
Результат по первому паттерну:


Рис. 11. Результаты работы паттерна 1 с использованием правила удаления
несработавшей сделки. Результат по второму паттерну:


Рис. 12.

Результаты работы паттерна 2 с использованием правила удалениянесработавшей сделки.
Данное правило снизило доходность первого паттерна, и вначале немного разрыхлила график баланса второго паттерна, но нужного эффекта не дала.
Динамические уровни StopLoss и TrailingStop
В системе используется несколько видов размещения StopLoss:
1. Фиксированный - мы его уже рассмотрели;
2. StopLoss на противоположной стороне бара отложенного ордера;
3. StopLoss за локальными максимумами и минимумами при условии, что StopLoss не превышает заданный максимальный его размер.


Проверим работу системы с StopLoss 2. Первый паттерн:

Рис. 13. Результаты работы паттерна 1 с использованием правила StopLoss 2. Второй паттерн:

Рис. 14. Результаты работы паттерна 2 с использованием правила StopLoss 2. Проверим работу системы с StopLoss 3 c ограничением максимального уровня стопа в 30 пунктов:
Первый паттерн:

Рис. 15. Результаты работы паттерна 1 с использованием правила StopLoss 3. Второй паттерн:

Рис. 16. Результаты работы паттерна 2 с использованием правила StopLoss 3.
При таком варианте постановки StopLoss графики баланса паттернов значительно изменились. Но положительной роли в результатах паттернов это правило не сыграло.
Рассмотрим работу системы с использование трейлингстопа
1. Обычный трейлинг стоп - подтягивается за ценой на заданное количество пунктов;
2. Трейлинг подтягивается на противоположную сторону каждого бара в зависимости от направления сделки.
Протестируем трейлингстоп 1:
Первый паттерн:

Рис. 17. Результаты работы паттерна 1 с использованием правила Трейлингстоп 1. Второй паттерн:

Рис. 17. Результаты работы паттерна 2 с использованием правила Трейлингстоп 1.
Протестируем трейлингстоп 2: Первый паттерн:

Рис. 19. Результаты работы паттерна 1 с использованием правила Трейлинг стоп 2. Второй паттерн:

Рис. 20.

Результаты работы паттерна 2 с использованием правила Трейлингстоп 2. Значительной роли этот способ также не сыграл.

Тестирование системы


С параметрами по умолчанию результаты этой системы не впечатляют, но, тем не менее, попробуем прооптимизировать их, и посмотреть, как ведет себя система с такими параметрами на будущем.
Оптимизацию будем проводить за период с 2008.01.01 по 2008.05.01 и проверять работу на будущем на участке с 2008.05.01 по настоящее время.
В процессе оптимизации мы нашли прибыльные параметры, вот результаты их работы:
Паттерн 1:



Рис. 22.

Результат работы паттерна 1 вне участка оптимизации (на будущем). Паттерн 2:




Рис. 24.

Результат работы паттерна 1 вне участка оптимизации (на будущем).

Итог:


К сожалению, система со стандартными настройками убыточна для торговли на EURUSD 5-тиминутном таймфрейме, возможно на других инструментах и других временных периодах система окажется более стабильной.
Хотим отметить, что найденные нами параметры также хорошо работаю на часовом периоде с 2005 года, это говорит в пользу стратегии - очень хорошо, когда одни и те же параметры показывают положительные результаты на всех временных периодах. Мы можем рекомендовать эту стратегию для работы при тщательном подборе параметров с их проверкой на будущем, также стоит выбрать более высокий период графика для торговли.

Описание параметров системы


- string tx02 = Настройка периода ADX:";
- int PeriodADX=14 - период индикатора ADX;
- string tx=Первый паттерн ADX:;
- int ADXPatter1 = 1 - включение/выключение первого паттерна: 0 - выключено, 1 -включено.
- string tx01 = Второй паттерн ADX:;
- int ADXPatter2=1 - включение/выключение первого паттерна: 0 - выключено, 1 -включено;
- int ADXUr=25 - уровень ADX для отслеживания образования второго паттерна.
- string tx0 = Отступ от HL при установке ордера:;
- int Otstup=0 - отступ в пунктах от High и Low при установке ордера;
- string tx2 = Настройка размера сл и тп:;
- int TakeProfit=60 - размер тейкпрофита;
- int StopLoss=20 - размер стоплосса для stopvariant=3;
- string tx4 = Настройка варианта установки сл:;
- int stopvariant - 1 - динамический стоп по экстремумам, 2 - стоп на противоположной стороне пара, 3 - фиксированный уровень по значению StopLoss.
- string tx41 = Настройка сл для первого варианта:";
- int stoplossbars = 22 - количество баров для поиска экстремума;
- int maxstoppipd=30 - максимальный размер стоплосса в пунктах.
- string tx6 = Настройка выхода по ADX:;
- int ADXUrExit=0 - 0 - выключено, 1 - включено;
- int ADXUrClose=40 - уровень закрытия по ADX.
- string tx5 = Настройка выхода по времени:;
- int TimeExit = 0 - 0 - выключено, 1 - включено;
- int HourClose=23 - время закрытия позиций.
- string tx7 = Настройка удаления несработавшего ордера:;
- int DeleteOrder=0 - 0 - выключено, 1 - включено;
- int BarsDel=10 - количество баров, по пришествию которых ордер считается не действительным и удаляется.
- String tx8 = Управление временем 1-вкл, 0-выкл, время серверное:;
- int timecontrol=0 - 0 - выключено, 1 - включено;
- int starttime = 7 - время начала работы;
- int stoptime = 17 - время завершения работы.
- string tx9 = Трейлинг стоп:;
- int TypeTrailinig - 0 - выключено, 1 - обычный трейлинг стоп, 2 - трейлинг стоп по свечам;
- int TrailingStop=30 - размер трейлинг стопа в пунктах.
- string tx10 = Удалять ордер если ADX ниже диминис и диплюс:;
- int DeleteDw=0 - 0 - выключено, 1 - обычный трейлинг стоп, 2 - трейлинг стоп по свечам.
- string tx3 = Настройка объема сделок:;
- double Lots=0.1.



Содержание раздела