Динамическая стратегия прорыва канала - это стратегия, следующая за трендом. Она использует индикатор Дончианского канала для динамического определения цены покупки и продажи прорыва, объединяет индикатор ATR для установки точек остановки потери и достигает полной автоматизации генерации торговых сигналов и выхода с остановки потери.
Данный индикатор формирует верхние и нижние диапазоны, рассчитывая самые высокие и самые низкие цены за определенный период в прошлом.
Эта стратегия устанавливает период Дончианского канала на 20 дней. Когда цена проходит через верхнюю рельсу, генерируется сигнал покупки, указывающий на то, что рынок вступил в восходящую тенденцию. Когда цена падает ниже нижней рельсы, генерируется сигнал продажи, указывающий на то, что рынок вступил в нисходящую тенденцию.
Показатель 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)