Система динамичного пробоя
В 1996 году Джордж Пруит опубликовал в журнале Futures Magazine свою торговую систему, которая получила название Система динамичного пробоя... Впоследствии в систему были внесены некоторые коррективы, в частности в нее был встроен дополнительный адаптивный фильтр. Получившаяся система и называется Системой динамичного пробоя II.
Главная особенность это системы возможность адаптировать ее параметры к текущим условиям на рынке. Эта система основана на известной системе канала Дончиана. Напомним основные принципы работы по этой стратегии. Мы покупаем, когда дневной максимум достигает максимального ценового уровня для x баров в прошлом, и продаем, когда дневной минимум достигает минимального ценового уровня для этого же количества баров. Если вы оптимизируете систему, с целью определить необходимое вам количество баров для лучшего распознавания уровней входа и выхода, вы обнаружите, для разных рынков оптимальными являются разные параметры.
Вы также увидите, что для всех рынков характерны циклы и что в разных циклах или их фазах также необходимо использовать для лучшей отдачи разные параметры. Например, в 80-х годах для японской иены оптимальным было значение x равное 40 дням, тогда как в настоящее время наиболее подходящее значение 20. Это главный недостаток системы Дончиана. Разработанная нами Система динамичного пробоя II позволяет менять параметры, основываясь на особенностях торгуемого рынка.
Перед тем как вы сможете использовать адаптивный параметр вам необходимо выяснить функцию, которая автоматически будет изменять значение статичного параметра. Вводной для этой функции должна быть какая-то рыночная статистика. Для нашей торговой системы мы использовали такой показатель как рыночная волатильность. В случае, если рыночная волатильность растет, увеличивается количество дней, которые используются в формуле, так как рост волатильности обычно сопровождается ростом колебаний рыночной цены. Увеличивая количество дней для расчета, мы уменьшаем количество возможных сделок при отсутствии четко выраженного тренда.
Низкая рыночная волатильность характерна для трендового рынка. Уменьшая количество дней при расчетах, мы увеличиваем количество возможных сделок. Все это позволяет системе эффективно фиксировать долгосрочную прибыль и отслеживать изменения долгосрочных тенденций рынка. Мы использовали рыночную волатильность для нашего адаптера, однако вы можете использовать другую рыночную характеристику, например показатели перепроданности/перекупленности рынка. Если мы удерживаем длинную позицию на рынке, и он становится перекупленным, мы можем использовать соответствующий индикатор для адаптации параметра, который определяет точку продажи.
Когда адаптивный двигатель разработан, и он генерирует значения, вам необходимо ограничить количество значений приемлемым диапазоном. Для системы динамичного пробоя II, используется только количество дней не превышающих 60 и не меньших, чем 20. Когда мы занимались оптимизацией системы, мы пришли к выводу, что другое количество дней неприемлемо для системы, так как не генерирует достаточно хороших сигналов. Адаптивный двигатель, который генерирует бесполезные сигналы, сам является бесполезным.
Система построена на том, что изначально по умолчанию используется период в 20 дней. Это означает, что, когда вы начинаете работать с системой, ваш первый уровень для покупки находится на самом высоком максимуме за последние 20 дней и первый уровень для продажи находится на самом высоком минимуме за последние 20 дней. В конце каждого дня измеряется рыночная волатильность путем вычисления стандартного отклонения цены закрытия за последние 30 дней.
Рыночная волатильность может быть измерена при помощи различных инструментов: средней скользящей, среднего истинного диапазона, стандартного отклонения изменения цен закрытия и других. Когда мы определяем сегодняшнюю волатильность, мы сравниваем ее с вчерашней. Если волатильность растет, то количество дней также соответственно увеличивается. Например, когда волатильность выросла на 10 %, также увеличивается и количество дней, и наоборот.
В первой версии системы динамичного пробоя решения принимались исключительно на основании значений максимального максимума и минимального минимума, которые генерировались системой. При открытии позиции выставлялся простой и эффективный сто управления капиталом в размере 00. В новой версии та же самая техника входа была дополнена адаптированными Полосами Боллинджера. Для расчета Полос используется то же самое количество дней, которое генерируется адаптивным генератором. Для открытия длинной позиции необходимо цена должна быть выше верхней границы диапазона и сегодняшний максимум выше самого высокого максимума за х дней или равен ему Для открытия короткой позиции, соответственно, вчерашнее закрытие должно быть ниже нижней границы диапазона, сегодняшний минимум ниже или равен самому низкому минимуму за х дней. Вместо простого стопа используется динамичный трейлинг стоп. Точка ликвидации существующей позиции определяется вычислением простой средней скользящей цен закрытия за х дней.
Алгоритм системы динамичного пробоя II
Если номер бара = 1, тогда количество дней = 20
Выполнить
Сегодняшняя волатильность рынка = стандартное отклонение(закрытие,30)
Вчерашняя волатильность рынка = стандартное отклонение(закрытие[1],30)
Дельта волатильности = (сегодняшняя волатильность - вчерашняя волатильность)/сегодняшнюю волатильность
Количество дней = (1 + дельта волатильность) * количество дней
Количество дней = мин(количество дней,60)
Количество дней = макс(количество дней,20)
Верхняя граница диапазона = Среднее(Закрытие, количество дней) + Стандартное отклонение(Среднее, количество дней) *2.00
Нижняя граница = Среднее(Закрытие, количество дней) - Стандартное отклонение(Закрытие, количество дней) *2.00
Точка покупки = Максимальное значение(Максимум, количество дней)
Точка продажи = Минимальное значение (Минимум, количество дней)
Точка Закрытия длинной позиции = Среднее (закрытие, количество дней)
Точка Закрытия короткой позиции = Среднее (закрытие, количество дней).
Если (вчерашнее закрытие > верхней границы диапазона), то открыть длинную позицию, если сегодняшняя цена >= точки покупки.
Если (вчерашнее закрытие< нижней границы диапазона), то открыть короткую позицию, если сегодняшняя цена <= точки продажи.
Ликвидировать длинную позицию, если сегодняшняя цена <= точки закрытия длинной позиции
Ликвидировать короткую позицию, если сегодняшняя цена >= точки закрытия короткой позиции
Программа для системы динамичного пробоя II
Разработана Джорджем Пруитом. Система представляет собой обновленную версию системы, опубликованной автором в 1996 году в Futures Magazine. В дополнение к методологии пробоя в нее инкорпорированы полосы Боллинджера для определения уровня входа.
Inputs: ceilingAmt(60),floorAmt(20),bolBandTrig(2.00);
Vars: lookBackDays(20),todayVolatility(0),yesterDayVolatility(0),
deltaVolatility(0);
Vars: buyPoint(0),sellPoint(0),longLiqPoint(0),shortLiqPoint(0),upBand(0),
dnBand(0);
todayVolatility = StandardDev(Close,30,1);
yesterDayVolatility = StandardDev(Close[1],30,1);
{See how I offset the
function call to get
yesterday's value}
deltaVolatility = (todayVolatility - yesterDayVolatility)/todayVolatility;
lookBackDays = lookBackDays * (1 + deltaVolatility);
lookBackDays = Round(lookBackDays,0);
lookBackDays = MinList(lookBackDays,ceilingAmt);
{Keep adaptive engine within
bounds}
lookBackDays = MaxList(lookBackDays,floorAmt);
upBand = BollingerBand(Close,lookBackDays,+bolBandTrig);
dnBand = BollingerBand(Close,lookBackDays,-bolBandTrig);
buyPoint = Highest(High,lookBackDays);
sellPoint = Lowest(Low,lookBackDays);
longLiqPoint = Average(Close,lookBackDays);
shortLiqPoint = Average(Close,lookBackDays);
if(Close > upBand) then Buy("DBS-2 Buy") tomorrow at buyPoint stop;
if(Close < dnBand) then SellShort("DBS-2 Sell") tomorrow at sellPoint stop;
if(MarketPosition = 1) then Sell("LongLiq") tomorrow at longLiqPoint stop;
if(MarketPosition = -1) then BuyToCover("ShortLiq") tomorrow at shortLiqPoint
stop;
Программа динамичного пробоя II демонстрирует как:
* измерять волатильность рынка при помощи стандартного отклонения цен закрытия.
* создавать динамичные параметры с использованием адаптивного генератора.