Динамическая стратегия выхода из канала

Автор:Чао Чжан, Дата: 2024-01-17 15:29:55
Тэги:

img

Обзор

Динамическая стратегия прорыва канала - это стратегия, следующая за трендом. Она использует индикатор Дончианского канала для динамического определения цены покупки и продажи прорыва, объединяет индикатор ATR для установки точек остановки потери и достигает полной автоматизации генерации торговых сигналов и выхода с остановки потери.

Принципы

Дончианский канал

Данный индикатор формирует верхние и нижние диапазоны, рассчитывая самые высокие и самые низкие цены за определенный период в прошлом.

Эта стратегия устанавливает период Дончианского канала на 20 дней. Когда цена проходит через верхнюю рельсу, генерируется сигнал покупки, указывающий на то, что рынок вступил в восходящую тенденцию. Когда цена падает ниже нижней рельсы, генерируется сигнал продажи, указывающий на то, что рынок вступил в нисходящую тенденцию.

Показатель ATR

Показатель ATR - это сокращение от Average True Range, которое отражает среднюю амплитуду колебаний определенного актива за последний период времени.

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

Производство сигнала

Когда цена проходит через среднюю линию Дончянского канала вверх, генерируется сигнал покупки. Когда цена проходит через среднюю линию вниз, генерируется сигнал продажи. Это указывает на то, что цена начала прорываться через этот канал и вступает в новый раунд тренда.

В то же время, в сочетании с точкой остановки потери, рассчитанной индикатором ATR, когда потеря достигает точки остановки потери, позиция будет активно остановлена для контроля рисков.

Анализ преимуществ

Автоматическое отслеживание тенденций

Данная стратегия позволяет автоматически отслеживать изменения рыночных тенденций и генерировать соответствующие сигналы купли-продажи. Это позволяет избежать субъективности ручного суждения и делает торговые сигналы более объективными и надежными.

Двусторонняя торговля

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

Управление рисками

Механизм остановки потерь индикатора ATR может эффективно контролировать потерю одной сделки. Это особенно важно для количественной торговли, чтобы гарантировать, что стратегии получают стабильную положительную доходность в случаях высокой вероятности.

Анализ рисков

Риск ловушки

Стратегия Donchian Channel имеет определенный риск быть пойманной в ловушку. Если цена переворачивается и вновь входит в канал без остановки потери, могут возникнуть значительные потери. Механизм остановки потери ATR в этой стратегии помогает смягчить такой риск.

Риск изменения тенденции

При изменении тренда индикатор Donchian Channel будет генерировать ошибочные сигналы. Пользователь должен обращать внимание на рыночные условия, чтобы избежать слепых сделок при значительных изменениях тренда.

Риск оптимизации параметров

Параметры периода как Дончианского канала, так и стоп-лосса ATR должны быть оптимизированы, в противном случае могут быть генерированы чрезмерно неверные сигналы.

Руководство по оптимизации

Добавить суждение о тренде

Показатели оценки тренда, такие как скользящие средние, могут быть добавлены, чтобы избежать ошибочных сигналов в значительных поворотных точках тренда.

Оптимизация параметров

Оптимизируйте параметры Donchian Channel и ATR, чтобы найти наилучшую комбинацию.

Добавить ценовые модели

Комбинировать другие вспомогательные показатели оценки, такие как модели свечей и изменения объема торговли, чтобы улучшить точность сигнала и уменьшить ненужные операции с обратным движением.

Заключение

Динамическая стратегия прорыва канала определяет направление тренда через верхние и нижние полосы Дончианского канала и генерирует торговые сигналы. Механизм остановки потери ATR контролирует риск. Эта стратегия имеет высокую степень автоматизации и подходит для количественной торговли.


/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title = "dc",  overlay = true)
atrLength = input(title="ATR Length:", defval=20, minval=1)

testStartYear = input(2018, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)

testEndYear = input(2018, "Backtest Start Year")
testEndMonth = input(12)
testEndDay = input(31, "Backtest Start Day")
testPeriodEnd = timestamp(testStartYear,testStartMonth,testStartDay,0,0)


testPeriod() =>
    true
    //time >= testPeriodStart  ? true : false

dcPeriod = input(20, "Period")

dcUpper = highest(close, dcPeriod)[1]
dcLower = lowest(close, dcPeriod)[1]
dcAverage = (dcUpper + dcLower) / 2
atrValue=atr(atrLength)


useTakeProfit   = na
useStopLoss     = na
useTrailStop    = na
useTrailOffset  = na

Buy_stop = lowest(low[1],3) - atr(20)[1] / 3
plot(Buy_stop, color=red, title="buy_stoploss")
Sell_stop = highest(high[1],3) + atr(20)[1] / 3
plot(Sell_stop, color=green, title="sell_stoploss")

plot(dcLower, style=line, linewidth=3, color=red, offset=1)
plot(dcUpper, style=line, linewidth=3, color=aqua, offset=1)

plot(dcAverage, color=yellow, style=line, linewidth=3, title="Mid-Line Average")

strategy.entry("simpleBuy", strategy.long, when=(close > dcAverage) and cross(close,dcAverage))
strategy.close("simpleBuy",when=((close < dcAverage) and  cross(close,dcAverage)) or ( close< Buy_stop))
    
strategy.entry("simpleSell", strategy.short,when=(close < dcAverage) and cross(close,dcAverage) )
strategy.close("simpleSell",when=((close > dcAverage) and cross(close,dcAverage)) or ( close > Sell_stop))
    
//strategy.exit("Exit simpleBuy", from_entry = "simpleBuy", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset)
//strategy.exit("Exit simpleSell", from_entry = "simpleSell", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset)



Больше