Контрарианская стратегия доступа к каналу Дончиана (англ. Contrarian Donchian Channel Touch Entry Strategy) - это количественная стратегия торговли, основанная на индикаторе Дончиана.
Стратегия вступает в длинные/короткие позиции, когда цена касается верхней/нижней полосы Дончианского канала. Для каждой сделки устанавливаются уровни остановки потери и получения прибыли.
Стратегия использует 20-периодный Дончианский канал, состоящий из верхней полосы, нижней полосы и средней линии.
Идите длинный, когда цена касается нижней полосы; идти короткий, когда цена касается верхней полосы.
После предыдущей остановки потерь в том же направлении требуется пауза (например, 3 бары), чтобы избежать преследования тенденций.
Для каждой сделки устанавливается фиксированный процент стоп-лосса (например, 22%) и динамическая прибыль, рассчитанная на основе соотношения риск-прибыль (например, 2)
Используйте стоп-лосс во время торгов:
Для длинных сделок, если цена пересекает среднюю линию, скорректировать стоп-лосс до середины цены входа и средней линии.
И наоборот, для коротких позиций, пересекающих среднюю линию.
Поймать трендовые ходы с помощью прорывов Дончианского канала.
Контрарианный контактный вход соответствует торговле против идеи тренда.
Эффективное управление рисками с приостановкой стоп-лосса и последующей остановкой.
Ясные и легко применяемые правила.
Удары на боковых рынках для следующей за трендом системы.
Фиксированный стоп-лосс может быть предрасположен к преждевременному остановке.
Чрезмерно агрессивная корректировка остановки может вывести из строя прибыльные сделки слишком рано.
Оптимизация параметров очень важна.
Оптимизируйте период просмотра Дончианского канала для лучших параметров.
Включать правила размещения позиций, например, периодически пересчитывать паузы.
Добавьте фильтры с использованием других индикаторов, чтобы избежать ложных прорывов.
Эксперимент с динамической остановкой потери.
Стратегия Contrarian Donchian Channel Touch Entry интегрирует идентификацию трендов, управление рисками и многое другое.
/*backtest start: 2023-01-17 00:00:00 end: 2024-01-23 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("Contrarian Donchian Channel Strategy - Touch Entry with Post-SL Pause and Trailing Stop", overlay=true, default_qty_value=0.01, default_qty_type=strategy.percent_of_equity) // Inputs length = input(20, minval=1, title="Donchian Channel Length") riskRewardRatio = input(2, title="Risk/Reward Ratio") stopLossPercent = input(0.22, title="Stop Loss (%)") / 100 pauseCandles = input(3, minval=1, title="Pause After SL (Candles)") // Donchian Channel Calculation upper = highest(high, length) lower = lowest(low, length) centerline = (upper + lower) / 2 // Calculating the Centerline // Plotting Donchian Channel and Centerline plot(upper, color=color.red, title="Upper Band") plot(lower, color=color.green, title="Lower Band") plot(centerline, color=color.blue, title="Centerline") // Tracking Stop Loss Hits and Pause var longSLHitBar = 0 var shortSLHitBar = 0 var int lastTradeDirection = 0 // 1 for long, -1 for short, 0 for none // Update SL Hit Bars if (strategy.position_size[1] > 0 and strategy.position_size == 0) if (close[1] < strategy.position_avg_price[1]) longSLHitBar := bar_index lastTradeDirection := 1 if (strategy.position_size[1] < 0 and strategy.position_size == 0) if (close[1] > strategy.position_avg_price[1]) shortSLHitBar := bar_index lastTradeDirection := -1 // Entry Conditions - Trigger on touch longCondition = (low <= lower) and (bar_index - longSLHitBar > pauseCandles or lastTradeDirection != 1) shortCondition = (high >= upper) and (bar_index - shortSLHitBar > pauseCandles or lastTradeDirection != -1) // Trade Execution if (longCondition) strategy.entry("Long", strategy.long) if (shortCondition) strategy.entry("Short", strategy.short) // Initial Stop Loss and Take Profit Calculation stopLoss = strategy.position_avg_price * (1 - stopLossPercent) takeProfit = strategy.position_avg_price * (1 + stopLossPercent * riskRewardRatio) // Trailing Stop Loss Logic var float trailingStopLong = na var float trailingStopShort = na // Update Trailing Stop for Long Position if (strategy.position_size > 0) if (close > centerline) trailingStopLong := (strategy.position_avg_price + centerline) / 2 stopLoss := na(trailingStopLong) ? stopLoss : max(trailingStopLong, stopLoss) // Update Trailing Stop for Short Position if (strategy.position_size < 0) if (close < centerline) trailingStopShort := (strategy.position_avg_price + centerline) / 2 stopLoss := na(trailingStopShort) ? stopLoss : min(trailingStopShort, stopLoss) // Setting Stop Loss and Take Profit for each trade strategy.exit("SL_TP_Long", "Long", stop=stopLoss, limit=takeProfit) strategy.exit("SL_TP_Short", "Short", stop=stopLoss, limit=takeProfit)