!!NIKA!! Опубликовано 12 февраля Слушать Поделиться Паттерн «Day Drop» Опубликовано 12 февраля Фильтрация сделок с помощью паттерна нисходящего тренда Паттерн «Day Drop» Цитата В этой статье мы поговорим о ценовом паттерне, о котором вы, возможно, не слышали и который можно использовать в качестве торгового фильтра для повышения производительности торговой системы. Мы рассмотрим процесс написания кода для разработки торговой стратегии, протестируем добавление некоторых правил и условий, включая фильтрацию сделок с использованием этого ценового паттерна, а также рассмотрим результирующие показатели производительности торговой системы. Андреа Ангер Стоит ли использовать ценовые паттерны в торговой системе? Да, но никогда не используйте их в качестве отправной точки. В Unger Academy мы учим, когда и как применять ценовые паттерны при различных подходах к торговле. В этой статье мы обсудим “day drop” – фильтр нисходящего тренда, который мы применим к хорошо диверсифицированной корзине инструментов, а затем протестируем его с помощью реальной стратегии торговли на самом ликвидном рынке в мире – фьючерсе на S&P 500. Что такое “day drop”? Дневной бар называется “day drop” (DDr), когда его цена закрытия находится в нижней части торгового диапазона. Чем ближе цена закрытия к минимумам торговой сессии, тем более устойчивой является конфигурация нисходящего тренда. Рисунок 1 помогает объяснить эту концепцию. Эта диаграмма показывает, что цена закрытия дня находится очень близко к минимуму дня, и вчерашняя торговая сессия закрылась очень низким значением по сравнению с дневным диапазоном. Другими словами, DDr говорит нам о том, что сила продавцов подтолкнула рынок вниз, чтобы закрыть торговую сессию вблизи достигнутых минимумов. Чтобы проверить, была ли цена закрытия вчерашнего дня вблизи минимума торговой сессии, воспользуемся следующим кодом: (closeS(1)-lowS(1)) < DayDropValue*(highS(1)-lowS(1)) где параметр DayDropValue может принимать значение от 0 до 1 и говорит нам о степени силы нашего DDr: чем меньше DayDropValue, тем сильнее нисходящий тренд в рамках последней торговой сессии. Если эта строка кода связана с булевой переменной, она может принимать значение «истина» или «ложь» в зависимости от того, имело место неравенство в строке кода выше или нет. Другими словами, переменная будет истинной или ложной в зависимости от того, был ли DDr вчера или нет. Чтобы лучше проиллюстрировать данную концепцию, давайте рассмотрим два примера (рисунки 2 и 3). В первом примере (рисунок 2) мы устанавливаем значение DayDropValue = 0,35, которое при подстановке в нашу формулу даёт контрольное значение 35% диапазона, поэтому оно не слишком строгое. Как видно на рисунке 2, DDr будет иметь место только в том случае, если цена закрытия вчерашнего дня была ниже этого значения. Во втором примере (рисунок 3) мы установили значение DayDropValue = 0,15, которое даёт контрольный уровень 15% от диапазона и, следовательно, является гораздо более строгим. Как и прежде, DDr будет иметь место только в том случае, если вчерашняя цена закрытия окажется ниже этого уровня. Цена закрытия дня Максимум дня Минимум дня Дневной диапазон Рисунок 1. Ценовой паттерн «day drop». Дневной бар называется «day drop» (DDr), когда его цена закрытия находится в нижней части торгового диапазона. В данном случае цена закрытия дня очень близко к дневному минимуму, а вчерашняя сессия закрылась очень низким значением по сравнению с дневным диапазоном. Дневной диапазон DayDropValue = 0,35 Рисунок 2. Значение «day drop» установлено на 35% от дневного диапазона. В этом примере значение DayDropValue установлено на 0,35, что обеспечивает контрольное значение 35% диапазона. Как видно на рисунке 2, DDr будет иметь место только в том случае, если цена закрытия вчерашнего дня была ниже этого значения. Дневной диапазон DayDropValue = 0,15 Рисунок 3. Значение «day drop» установлено на 15% от дневного диапазона. В этом примере значение DayDropValue установлено на 0,15, что обеспечивает контрольный уровень 15% диапазона. Таким образом, этот параметр является гораздо более строгим, чем на рисунке 2. Опять же, DDr будет иметь место только в том случае, если вчерашняя цена закрытия окажется ниже этого уровня. Дневной бар называется “day drop” (DDr), когда его цена закрытия находится в нижней части торгового диапазона. Насколько хорошим фильтром он является? Мы установили, что чем ниже значение DayDropValue, тем более избирательной будет наша фильтрация. Давайте теперь посмотрим, насколько хорошим фильтром может являться DDr, используя простой код (написанный на языке PowerLanguage, разработанном компанией MultiCharts), который вычисляет на дневных барах процент вхождений на разных рынках, начиная с 2008 года: input: DayDropValue(0); var: countDDr(0), countsession(0), dateInDateTimeFormat(0), datereadable(""); dateInDateTimeFormat = ELDateToDateTime(date); datereadable = FormatDate("dd-MM-yyyy", dateInDate-TimeFormat); if (closeS(1)-lowS(1)) < DayDropValue*(highS(1)-lowS(1)) then begin countDDr = countDDr+1; end; countsession=countsession+1; print(File("C:\test.txt"),datereadable," ",countDDr," ",countsession); По сути, мы подсчитываем все DDr, созданные рынком, и соотносим их с общим количеством сессий, при этом оценивая различные значения DayDropValues. Как мы знаем, по мере снижения значения DayDropValue у нас будет генерироваться меньше DDr; если мы будем использовать этот паттерн для фильтрации наших входов в рынок, количество сделок будет пропорционально значению DayDropValue. Рисунок 4. Фильтрация сделок по паттерну day drop. В этой таблице мы видим, что использование DayDropValue от 15% до 25% приводит к значительной фильтрации сделок. Средняя прибыль в сделке Количество сделок Чистая прибыль Максим. просадка Рисунок 5. Тестирование фильтра на корзине инструментов. Для корзины инструментов хорошие результаты показало значение DayDropValue 20%. Первое тестирование на нескольких инструментах В таблице на рисунке 4 мы видим, что значение DayDropValue от 15% до 25% уже приводит к значительной фильтрации; поэтому для тестирования DDr на корзине инструментов мы решили использовать значение DayDropValue 20%. Для первого теста мы рассмотрим корзину, состоящую из фьючерсов на @ES, @CL, @EC, @GC и @US, и к каждому инструменту применим представленную ниже простую стратегию торговли на 15-минутном таймфрейме, используя данные с 2008 года по сегодняшний день. Данная система открывает только длинные позиции каждый раз, когда в предыдущей торговой сессии был DDr, и закрывает их в конце торговой сессии или при достижении стоп-лосса $ 1750, который я выбрал в качестве промежуточного значения между $ 1500 и $ 2000. input: DayDropValue(0.2), stoploss(1750); var: daydrop(false), slb(false), MP(0), oktrade(false); slb=sessionlastbar; MP=marketposition; if slb[1] then begin daydrop = (closeS(1)-lowS(1))<DayDropValue*(highS(1)-lowS(1)); oktrade = true; end; if oktrade and daydrop then buy next bar market; if MP<>MP[1] and MP=1 then oktrade=false; setexitonclose; if stoploss>0 then setstoploss(stoploss); Глядя на рисунок 5, мы можем с уверенностью сказать, что лучшие результаты продемонстрировал фьючерс @ES. Поэтому мы решили создать специальную стратегию для этого базового актива. Паттерн «day drop» говорит нам о том, что сила продавцов подтолкнула рынок вниз, чтобы закрыть торговую сессию вблизи минимумов. Давайте разработаем простую стратегию для фьючерсов e-mini S&P 500 Возьмём код, приведённый в предыдущем разделе, и проверим, улучшит ли производительность системы добавление временно́го фильтра для входов. Для этого мы добавим два параметра входа myday1 и myday2 для выбора только двух торговых сессий в неделю. Программный код для этой стратегии был первоначально написан в 2017 году, и на основе данных, доступных на тот момент, я решил установить myday1 = 2 и myday2 = 4, позволяя входить в рынок только во вторую и в четвёртую сессию в течение недели. Мы добавляем в наш код это новое временно́е условие, внеся в него представленные ниже изменения: input: DayDropValue(0.2), stoploss(1750), myday1(2), myday2(4); var: daydrop(false), slb(false), MP(0), oktrade(false), mydow(0); slb=sessionlastbar; MP=marketposition; if slb[1] then begin mydow = dayofweek(d)+1; daydrop = (closeS(1)-lowS(1))<DayDropValue*(highS(1)-lowS(1)); oktrade = true; end; if oktrade and daydrop and (mydow = myday1 or mydow = myday2) then buy next bar market; if MP<>MP[1] and MP=1 then oktrade=false; setexitonclose; if stoploss>0 then setstoploss(stoploss); И получаем новые результаты, показанные в таблице на рисунке 6. Чистая прибыль системы значительно снизилась, но это связано с тем, что мы торгуем только в течение 2-х из 5-ти дней в неделю; тем не менее, максимальная просадка сократилась вдвое, а средняя прибыль в сделке увеличилась со $ 146 до $ 197. Поэтому мы решили сохранить выбранный фильтр времени. Торговая сессия по фьючерсам на S&P 500 начинается в 17:00 (биржевое время) и заканчивается в 16:00 на следующий день, и учитывая сетап кода, мы будем входить в рынок в начале торговых сессий во вторник и четверг. Однако во время тестирования в 2017 году мне пришло в голову, что начало торговли в полночь (биржевое время) будет выгодно для системы, поэтому давайте заменим выделенную жёлтым строку в приведённом выше коде следующей инструкцией: if daydrop and Time<1500 and (mydow = myday1 or mydow = myday2) and oktrade then buy next bar market; Мы добавили дополнительное условие (Time<1500), которое позволит нам торговать во вторник и четверг, начиная с 0:00 (биржевое время) – другими словами, мы войдём на первом баре после полуночи. С введением этого нового временно́го интервала мы получим следующие показатели (рисунок 7). Количество сделок не изменилось, так как мы сместились вперёд только на несколько часов. Чистая прибыль осталась практически такой же (как и средняя прибыль в сделке), но мы значительно снизили максимальную просадку нашей стратегии. Средняя прибыль в сделке Количество сделок Чистая прибыль Максим. просадка Рисунок 6. Использование дня недели в качестве временно́го фильтра. Улучшает ли добавление временно́го фильтра для входа производительность системы? Этот тест позволил системе входить в рынок только во вторую и четвёртую торговую сессию в течение недели. Здесь представлены результаты. Чистая прибыль снизилась, просадка уменьшилась, а средняя прибыль в сделке увеличилась. Средняя прибыль в сделке Количество сделок Чистая прибыль Максим. просадка Рисунок 7. Использование времени входа в качестве временно́го фильтра. В качестве времени входа было протестировано дополнительное условие для входа в рынок: сразу же после полуночи. Здесь представлены результаты. Хотя большинство показателей не изменилось по сравнению с предыдущим улучшением системы, представленным на рисунке 6, следует отметить, что уменьшилась просадка. Средняя прибыль в сделке Количество сделок Чистая прибыль Максим. просадка Рисунок 8. Увеличение продолжительности сделки. Можно ли улучшить производительность системы, предоставив сделкам больше времени для отработки? В этом тесте открытые сделки удерживались в течение 4 торговых сессий. Мы видим, что переход от внутридневной к многодневной торговле привёл к увеличению просадки, но чистая прибыль увеличилась более чем на 60%, а средняя прибыль в сделке выросла примерно на 80%. Средняя прибыль в сделке Количество сделок Чистая прибыль Максим. просадка Рисунок 9. Добавление ордера тейк-профит. Уменьшит ли просадку добавление ордера тейк-профит? Здесь представлены результаты тестирования. Максимальная просадка действительно снизилась. При этом увеличилась средняя прибыль в сделке, что делает ордер тейк-профит хорошим дополнением к торговой стратегии. Рисунок 10. Кривая капитала для итогового примера торговой системы. Здесь показана гипотетическая кривая капитала для торговой стратегии, полученной в результате добавления правил, обсуждаемых в этой статье, при условии совершения только длинных позиций по фьючерсу E-mini S&P 500 (ES). Кривая капитала построена на данных с 2008 года по настоящее время, которые включают в себя более чем пятилетние данные вне выборки. Давайте теперь посмотрим, насколько хорошим фильтром может быть DDr, используя простой код, который вычисляет на дневных барах процент вхождений на разных рынках, начиная с 2008 года. Можем ли мы ещё улучшить нашу систему? Мы торгуем внутри дня, поэтому закрываем каждую сделку в конце торговой сессии. Что произойдёт, если мы дадим сделкам больше времени для отработки? Чтобы ответить на этот вопрос, введите новый входной параметр MaxDays, новую переменную DaysInTrade и замените команду для выхода setexitonclose последними 4 строками следующего кода: input: MaxDays(0); var: DaysInTrade(0), if MP<>MP[1] and MP<>0 then DaysInTrade=1; if marketposition<>0 and DaysInTrade>=MaxDays and MaxDays>0 then begin if Time>=1530 and Time<1600 then sell next bar market; end; Оптимизируя параметр MaxDays данными, доступными во время первоначальной разработки, я обнаружил, что выгодно оставлять сделки открытыми в течение максимум 4 торговых сессий. Итак, давайте установим MaxDays=4 и проанализируем новые результаты, показанные на рисунке 8. Изменение стратегии с внутридневной на многодневную оказало существенное влияние на систему: мы действительно наблюдаем рост максимальной просадки, но чистая прибыль увеличилась более чем на 60%, а средняя прибыль в сделке выросла примерно на 80%, достигнув отличного уровня для актива, которым мы торгуем. Можем ли мы пойти ещё дальше в плане совершенствования этой торговой системы? Данная стратегия является очень простой и уже даёт нам отличные результаты; тем не менее, добавление специальных условий может улучшить её ещё больше, но увеличит риск чрезмерной подгонки результатов. Поэтому мы решили не вводить никаких дополнительных правил для входа, а только понаблюдать, поможет ли нам использование ордера тейк-профит сдержать максимальную просадку системы. На рисунке 9 представлены результаты после введения ордера тейк-профит в размере $ 4000. Как видно, мы снизили максимальную просадку, увеличив чистую прибыль и среднюю прибыль в сделке, поэтому мы были удовлетворены этим выбором. Мы использовали DDr в качестве торгового фильтра для совершения только длинных позиций по фьючерсу @ES, и этот паттерн оказался очень эффективным. Заключительные ремарки и выводы Мы использовали DDr в качестве торгового фильтра для совершения только длинных позиций по фьючерсу @ES, и этот паттерн оказался очень эффективным. Первоначальная система уже показала хорошие результаты, что привело нас к разработке комплексной стратегии для нашего портфеля. Финальная система содержит несколько условий, что убеждает нас в надёжности стратегии. Представленная на рисунке 10 кривая капитала за период с 2008 года по сегодняшний день, которая содержит более пяти лет данных вне выборки, показывает, что когда важнейший фондовый индекс в мире подвергался серьёзным потрясениям, наша стратегия продолжала работать очень гладко. Андреа Ангер – профессиональный трейдер, президент Академии Ангера и автор книги «Метод Ангера». Он является четырёхкратным чемпионом мира по трейдингу (2008, 2009, 2010 и 2012 годов), почётным членом Итальянского общества по техническому анализу (филиала Международной федерации технических аналитиков) и выступает в Европе, Америке, Австралии и Азии. Академия Ангера предоставляет услуги трейдерам, в том числе физическим лицам, помогая им улучшать подходы к торговле. Переведено специально для Tlap.com, Андреа Ангер Изменено 20 февраля пользователем ju.vskv 5 1 Ссылка на сообщение Поделиться на другие сайты More sharing options...
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти