В режиме работы следования тренду используется механизм, сходный с механизмом торговой стратегии форекс "Бандит Боллинджер" Режим поиска краткосрочных свингов основан на пробое диапазона открытия с встроенным распознаванием паттернов. Функция, при помощи которой выбирается один из режимов работы, основана на "индексе зыбчатости рынка" (ChoppyMarketIndex). Она позволяет сравнить рыночные отклонения и реальные изменения цены.
(Abs(Close - Close[29])/(Highest(High,30) -Lowest(Low,30))*100)
Функция генерирует значения от 0 до 100. Чем больше значение, тем менее "сжат" рынок.
Если значение индекса "зыбчатости рынка" меньше 20, то система переключается в режим работы поиска краткосрочных разворотов, поскольку рынок находиться в консолидационной фазе, в которой можно поймать только небольшие свинги с маленькой прибылью. В этом режиме торговая система "Термостат" генерирует торговые сигналы к покупке/продаже на слабых рыночных импульсах. Если импульс достаточно силен, то система генерирует открытие позиции, которая удерживается в течение нескольких дней. Анализируя краткосрочные свинги, мы пришли к выводу, что существует дни, которые наиболее благоприятствуют продаже и дни, в которые лучше покупать. Эти дни можно определить, использовав простой визуальный паттерн. Если сегодня цена закрытия больше, чем среднего значения вчерашнего максимума, минимума и уровня закрытия (это значение также известно как "ключ дня"), мы можем прогнозировать, что завтрашний день будет с большой долей вероятности медвежьим. Однако, если сегодня цена закрытия меньше среднего вчерашнего максимума, минимума и з
акрытия, то завтрашний день может быть бычьим. Мы назвали эти дни "день благоприятный для продаж" и "день благоприятный для покупок".Конечно же, этот простой паттерн не может определить движение цены на рынке завтра. Мы просто констатируем тот факт, что следующий день будет благоприятен для продаж или покупок. На самом деле, мы можем покупать в благоприятный для продаж день и наоборот. Позиция открывается, когда рынок проходит определенное расстояние от цены открытия.
Если сегодня день, благоприятный для продаж:
Длинная позиция открывается при достижении отметки: цена открытия + 50 % от 10-дневного среднего истинного диапазона.
Короткая позиция открывается при достижении отметки: цена открытия - 100 % от 10-дневного среднего истинного диапазона.
Если сегодня день, благоприятный для продаж:
Короткая позиция открывается при достижении отметки: цена открытия - 50 % 10-дневного среднего истинного диапазона.
Длинная позиция открывается при достижении отметки: цена открытия + 100 % от 10-дневного среднего истинного диапазона.
Иногда рынок форекс генерирует ложные импульсы в противоположном краткосрочному развороту направлению. Эти импульсы могут быть причиной убытков для вас и прибыли для вашего брокера. Мы попытались снизить вероятность такого развития событий путем сравнения высчитанного нами бай-стопа с трехдневной скользящей средней минимумов. Если наш бай-стоп ниже трехдневного среднего, то тогда мы сдвигаем его на верх, на уровень этого среднего. Если наш селл-стоп выше трехдневного среднего максимумов, то тогда мы передвигаем его на этот уровень. Торговая система работает на рынке в течение 100 % времени, в том числе, когда он находится в состоянии зыби. Стратегия Термостата основана на следующем принципе: каким бы ни было движение, мы будем готовы к нему. На первый взгляд это кажется сложным, но программа позволяет нам забыть об этой сложности.
Если значение индекса "зыбчатости рынка" больше или равно 20, тогда система переключается в режим следования тренду. Наша функция позволяет нам определить общее направления движения рынка с исключением шума. Один из лучших подходов следования тренду, который нам приходилось наблюдать, используется в системе "Бандит Боллинджер". Длинная позиция открывается, когда цена пробивает верхнюю границу Диапазона Боллинджера, тогда как короткая позиция открывается при пробитии нижней границы диапазона. В режиме следования тренда мы использовали два стандартных отклонения, вместо 1.25, использованного в системе "Бандит Боллинджер". Длинная позиция ликвидируется, кода цена возвращается к средней скользящей. В системе используется 50-дневная средняя скользящая.
Очень часто происходит так, что в момент, когда мы удерживаем позицию, рынок переходит из одного состояния в другой. Если происходит переход из фазы тренда в фазу сжатия, то мы просто используем метод краткосрочных выходов, чтобы выйти из нашей позиции по направлению тренда. Однако, если рынок переходит из фазы сжатия в фазу тренда, необходимо использовать тройной ATR защитный стоп. Этот вид стопа используется, поскольку выход на основании приближения к 50-дневной средней скользящей не подходит к нашей технике краткосрочного входа. Когда вы разрабатываете торговые стратегии, необходимо, чтобы ваши техники входа и выхода основывались на один и тех же временных рамках. Нельзя использовать трейлинг стоп на основе двухдневного минимума, чтобы закрыть длинную позицию, которая была инициирована пересечением 75-дневной скользящей средней. Если мы удерживаем длинную позицию, то мы высчитываем средний истинный диапазон для последних 10 дней и умножаем это значение на 3. Получившееся произведение вычитается из цены входа. Если мы удерживаем короткую позицию, то вновь высчитывается средний истинный десятидневный диапазон, который умножается на 3. Результат прибываем к цене входа. Когда мы закрываем позицию, которая была открыта в фазе "зыби", мы переходим к использованию режима следования тренду для поиска новых сигналов входа на рынок форекс.
Код системы Термостат
Текущее состояния рынка определяется функцией индекса "зыбчатости" рынка. Если значение индекса меньше 20 используется режим краткосрочных разворотов.
atr10 = AverageTrueRange(10)
keyOfDay = (High + Low + Close)/3
buyEasierDay = 0
sellEasierDay = 0
if(Close > keyOfDay) then sellEasierDay = 1
if(Close<=keyOfDay) then buyEasierDay = 1
avg3Hi = Average(High,3)
avg3Lo = Average(Low,3)
if(buyEasierDay = 1) then
longEntryPoint = Open + atr10 * 0.5
shortEntryPoint = Open - atr10 * 0.75
if(sellEasierDay = 1) then
longEntryPoint = Open + atr10 * 0.75
shortEntryPoint = Open - atr10 * 0.5
longEntryPoint = MaxList(longEntryPoint,avg3Lo)
shortEntryPoint = MinList(shortEntryPoint,avg3Hi)
Initiate a long position of today's market action >= longEntryPoint
Initiate a short position of today's market action <= shortEntryPoint
Если значение индекса больше или равно 20, то мы переходим в режим следования тренду.
Если мы удерживаем короткую позицию, открытую в режиме краткосрочных свингов, то:
shortLiqPoint = entryPrice + 3 * atr10
Liquidate short position if today's market action
>= shortLiqPoint
Если мы удерживаем длинную позицию, открытую в режиме краткосрочных свингов, то:
longLiqPoint = entryPrice - 3 * atr10
Liquidate long position if today's market action
<= longLiqPoint
upBand = Average(Close,50) + StdDev(Close,50) * 2.00
dnBand = Average(Close,50) - StdDev(Close,50) * 2.00
avg50 = Average(Close,50)
Initiate a long position if today's market action >= upBand
Initiate a short position if today's market action <= dnBand
Liquidate long position if today's market action <= avg50
Liquidate short position if today's market action >= avg50
Программа для системы "Термостат".
{Автор: Джордж Пруит. Две системы в одной. Если ChoppyMarketIndex меньше 20, то система работает в режиме поиска краткосрочных разворотов, если индекс больше или равен 20, то система работает в режиме следования тренду. В свинговый режим инкорпорирован паттерн поиска дней благоприятствующих покупке или продаже. Режим следования тренду основан на использовании полос Боллинджера}
Inputs: bollingerLengths(50),trendLiqLength(50),numStdDevs(2),
swingPrcnt1(0.50),swingPrcnt2(0.75),atrLength(10),
swingTrendSwitch(20);
Vars:cmiVal(0),buyEasierDay(0),sellEasierDay(0),trendLokBuy(0),
trendLokSell(0),keyOfDay(0),swingBuyPt(0),swingSellPt(0),
trendBuyPt(0),trendSellPt(0),swingProtStop(0);
cmiVal = ChoppyMarketIndex(30);
buyEasierDay = 0;
sellEasierDay = 0;
trendLokBuy = Average(Low,3);
trendLokSell= Average(High,3);
keyOfDay = (High + Low + Close)/3;
if(Close > keyOfDay) then sellEasierDay = 1;
if(Close <= keyOfDay) then buyEasierDay = 1;
if(buyEasierDay = 1) then
begin
swingBuyPt = Open of tomorrow + swingPrcnt1*AvgTrueRange(atrLength);
swingSellPt = Open of tomorrow - swingPrcnt2*AvgTrueRange(atrLength);
end;
if(sellEasierDay = 1) then
begin
swingBuyPt = Open of tomorrow + swingPrcnt2*AvgTrueRange(atrLength);
swingSellPt = Open of tomorrow - swingPrcnt1*AvgTrueRange(atrLength);
end;
swingBuyPt = MaxList(swingBuyPt,trendLokBuy);
swingSellPt = MinList(swingSellPt,trendLokSell);
trendBuyPt = BollingerBand(Close,bollingerLengths,numStdDevs);
trendSellPt = BollingerBand(Close,bollingerLengths,- numStdDevs);
if(cmiVal < swingTrendSwitch)then
begin
if (MarketPosition <> 1) then Buy("SwingBuy") next bar at swingBuyPt
stop;
if(MarketPosition <> -1) then SellShort("SwingSell") next bar at
swingSellPt stop;
end
else
begin
swingProtStop = 3*AvgTrueRange(atrLength);
Buy("TrendBuy") next bar at trendBuyPt stop;
SellShort("TrendSell") next bar at trendSellPt stop;
Sell from Entry("TrendBuy") next bar at Average(Close,trendLiqLength)
stop;
BuyToCover from Entry("TrendSell") next bar at
Average(Close,trendLiqLength) stop;
Sell from Entry("SwingBuy") next bar at EntryPrice - swingProtStop
stop;
BuyToCover from Entry("SwingSell") next bar at EntryPrice +
swingProtStop stop;
end;
Программа демонстрирует возможности:
- Использования индекса "зыбчатости" рынка. Для вычисления этой функции нужно только количество баров.
- Правильного использования структуры импликации - условного перехода.
- Связки стратегии выхода со стратегией входа путем использования ключевых слов from entry.
- Вычисления "ключа дня", также известного как "точка разворота".
- Использования цены открытия следующего дня для вычисления точек входа.
Данные по работе программы приведены в Таблице 6.3.
Тестирование системы для периода с 1982 по 19 марта 2002. Комиссия, слипедж = $75
Наглядный пример работы на рисунке 6.3.
Заключение
Эта программа замечательно работает на большинстве рынков. Стратегию можно классифицировать как среднесрочную торговую стратегию следования тренду. Она генерирует 15-20 сделок в год. "Термостат" хорошая стратегия для использования ее в комплексе с другим долгосрочным подходом. Если вы посмотрите на анализ сделок, то увидите, что только несколько обозначены как TrendBuy и TrendSell.
Вы можете подумать, что система работает главным образом в фазе зыби. Но это не так. На самом деле значительная часть работы системы приходиться на фазу следования тренду. Очень часто, когда сделка инициирована в одной фазе, переходит переключение на другой режим. Если рынок форекс вошел в новую фазу и не движется в направлении сделки, обычно срабатывает стоп. Если же рынок двигается в направлении позиции, то она, как правило, удерживается, пока не изменится направление тренда, или рынок не войдет в зыбчатую фазу. Т.е. свинговая позиция превращается в трендовую позицию. Таким образом,торговая система работает в двух фазах, а не в одной, как это кажется на первый взгляд.