В этом выпуске мы рассмотрим торговую систему, основанную на паттернах индикатора ADX. К нам на форум она попала от нашего читателя.
Система интересна, так как она использует много правил управления сделками, в том числе правила удаления несработавших ордеров, несколько адаптивных методов установки стоп-приказа, ограничение работы по времени, трейлингстоп и другие.
Паттерн 1:
Паттерн образуется, когда основная линия ADX опускается ниже линий +DI и -DI, и затем одна из линий +DI и - DI пересекает главную линию ADX сверху вниз, при этом главная линия и линия, которая окажется выше, должны двигаться вверх. В зависимости от того, какая из линий пересекла главную линию ADX на High или Low свечи, устанавливается отложенный ордер на продажу или покупку соответственно.
Если этой линией была -DI, то на High свечи устанавливается ордер на покупку , в противном случае на Low устанавливается ордер на продажу.
Одна из линий -DI и +DI пересекает снизу вверх основную линию ADX. При этом обе линии должны двигаться вверх, и точка пересечения должна находиться выше уровня 25.
В зависимости от того какая линия -DI или +DI пересекла основную линию, устанавливается отложенный ордер на High или Low свечи, на которой образовался паттерн.
Сможет ли она вытянуть этот паттерн в положительную сторону? Проверим.
Правило 1:
Выход из сделки осуществляется при пересечении уровня 40 линией, которая была выше ADX в момент образования сигнала. Тестируем правило для первого паттерна:
Для внутридневной торговли открытые позиции закрывать в конце дня. Для теста возьмем время 23:00 по GMT.
Результат по первому паттерну:
Как видим, результат практически не изменился.
Ограничение по времени работы внутри дня. Попробуем работать только 7:00-19:00 по GMT.
Результат по второму паттерну:
Результаты работы паттерна 2 с использованием правила 3 выхода из сделки.
Результат работы с ограничением по времени с 7:00 до 19:00 также дает отрицательный эффект, поэтому проверим еще одну возможность увеличить результативность эксперта - использовать правила управления несработавшими ордерами.
Правило 1:
По пришествию определенного количества баров, если ордер не сработал, его следует удалить. При тестировании, если ордер не сработал за 10 баров после его установки, будем удалять его.
Результат по первому паттерну:
Результаты работы паттерна 2 с использованием правила удалениянесработавшей сделки.
Данное правило снизило доходность первого паттерна, и вначале немного разрыхлила график баланса второго паттерна, но нужного эффекта не дала.
Динамические уровни StopLoss и TrailingStop
В системе используется несколько видов размещения StopLoss:
1. Фиксированный - мы его уже рассмотрели;
2. StopLoss на противоположной стороне бара отложенного ордера;
3. StopLoss за локальными максимумами и минимумами при условии, что StopLoss не превышает заданный максимальный его размер.
Проверим работу системы с StopLoss 2. Первый паттерн:
Результаты работы паттерна 2 с использованием правила Трейлингстоп 2. Значительной роли этот способ также не сыграл.
С параметрами по умолчанию результаты этой системы не впечатляют, но, тем не менее, попробуем прооптимизировать их, и посмотреть, как ведет себя система с такими параметрами на будущем.
Оптимизацию будем проводить за период с 2008.01.01 по 2008.05.01 и проверять работу на будущем на участке с 2008.05.01 по настоящее время.
В процессе оптимизации мы нашли прибыльные параметры, вот результаты их работы:
Паттерн 1:
Результат работы паттерна 1 вне участка оптимизации (на будущем). Паттерн 2:
Результат работы паттерна 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.