Стратегия канала Дончиана со скользящим стопом


Дата создания: 2023-12-07 16:53:10 Последнее изменение: 2023-12-07 16:53:10
Копировать: 0 Количество просмотров: 854
1
Подписаться
1619
Подписчики

Стратегия канала Дончиана со скользящим стопом

Обзор

Стратегия, основанная на трендовом подходе к индексу Доньчжаньского канала, в сочетании с динамическим стопом ATR для блокировки прибыли, относится к категории трендовых стратегий.

Стратегический принцип

Стратегия использует 20-циклический диапазон тончайского канала, где средняя линия канала - это среднее значение цены, превышающей и превышающей среднюю линию канала. При переходе цены через среднюю линию канала, цены превышают среднюю линию канала, а при переходе цены через среднюю линию, цены превышают среднюю линию канала.

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

Основные преимущества этой стратегии:

  1. Используя канал Донцзяна для определения направления рыночных тенденций, можно эффективно улавливать тенденции.
  2. В сочетании с ATR динамическим отслеживанием стоп-лосс, можно эффективно контролировать риск, гарантируя прибыль
  3. Включение ATR-фактора при расчете стоп-линий, учитывая рыночную волатильность, делает стоп-убытки более обоснованными
  4. Расчет стоп-линий является более стабильным и надежным, чтобы избежать слишком близкого стоп-ущерба и уменьшить вероятность привлечения к ответственности за стоп-ущерб

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

Основные риски этой стратегии:

  1. “Тоньчжоу-ан-тун” имеет определенную отсталость и может упустить возможность короткой линии.
  2. Неправильная настройка параметров ATR может привести к тому, что остановка будет слишком мягкой или слишком близкой
  3. Механизм определения тенденций относительно прост, и в консолидированном рынке может быть больше ошибочных сигналов
  4. Недостаток эффективных механизмов оценки поддержки и сопротивления может привести к неправильному выбору времени выхода на рынок.

Направление оптимизации

Эта стратегия может быть оптимизирована в следующих аспектах:

  1. Добавить другие показатели, чтобы избежать частых сделок на рынках без четкой тенденции
  2. Добавление поддержки резистентности, оптимизация времени входа в игру
  3. Попробуйте другие методы динамического учета убытков для дальнейшей оптимизации стратегии убытков.
  4. Тестирование влияния на эффективность стратегии различных параметров цикла каналов Дончжана
  5. Добавление фильтров, таких как объем или прирост, уменьшает ошибочные сигналы

Подвести итог

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

Исходный код стратегии
/*backtest
start: 2023-11-29 00:00:00
end: 2023-12-06 00:00:00
period: 30m
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(2017, "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(testEndYear,testEndMonth,testEndDay,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
//@version=1
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=black, 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< Buy_stop))
    
strategy.entry("simpleSell", strategy.short,when=(close < dcAverage) and cross(close,dcAverage) )
strategy.close("simpleSell",when=( 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)