Стратегия прорыва из Дончианского канала с ATRSL Trailing Stop

Автор:Чао Чжан, Дата: 2024-03-22 16:13:58
Тэги:

img

Обзор стратегии

Стратегия прорыва Дончианского канала (англ. Donchian Channel Breakout Strategy) - это количественная торговая стратегия, следующая за трендом. Она использует Дончианские каналы для улавливания рыночных тенденций, используя ATRSL-трейлинг-стоп для управления риском.

Принцип стратегии

  1. Вычислить канал Донкиана: на основе пользовательскогоdonLengthпараметр, рассчитать самый высокий и самый низкий минимум прошлогоdonLengthпериоды как верхняя полосаdonUpperи нижней полосыdonLowerСредняя линияdonBasisэто среднее значение верхней и нижней полос.
  2. Вычислить ATRSL Trailing Stop: на основе определённого пользователемAP2иAF2параметры, вычислить значение ATRSL2. Затем динамически корректировать ценовую остановкуTrail2в зависимости от отношения между текущей ценой закрытияSCи предыдущая цена остановкиTrail2[1].
  3. Условия входа: когда текущая цена закрытия пересекает верхнюю полосу Донкского пролива, вводят длинную позицию.
  4. Условия выхода: когда текущая цена закрытия пересекает ниже линии остановки ATRSL, закрыть позицию.

Преимущества стратегии

  1. Следование тенденции: используя каналы Дончиана для определения направления тренда, стратегия может эффективно отслеживать тенденции рынка.
  2. Динамическая остановка потерь: остановка ATRSL позволяет динамически корректировать уровень остановки потерь на основе волатильности рынка, что помогает управлять риском.
  3. Гибкость параметров: пользователи могут регулировать такие параметры, какdonLength, AP2, иAF2в соответствии с их потребностями для оптимизации эффективности стратегии.

Стратегические риски

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

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

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

Резюме

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


/*backtest
start: 2023-03-16 00:00:00
end: 2024-03-21 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Stock Trend USE THIS", overlay = true)
donLength = input(100, minval=1)

//Donchian Long
donLower = lowest(donLength)
donUpper = highest(donLength)
donBasis = avg(donUpper,donLower)

// ATRSL
SC = close

// Slow Trail //
AP2 = input(10, title="Slow ATR period")  // ATR Period
AF2 = input(3, title="Slow ATR multiplier")  // ATR Factor
SL2 = AF2 * atr(AP2)  // Stop Loss
Trail2 = 0.0
iff_3 = SC > nz(Trail2[1], 0) ? SC - SL2 : SC + SL2
iff_4 = SC < nz(Trail2[1], 0) and SC[1] < nz(Trail2[1], 0) ? min(nz(Trail2[1], 0), SC + SL2) : iff_3
Trail2 := SC > nz(Trail2[1], 0) and SC[1] > nz(Trail2[1], 0) ? max(nz(Trail2[1], 0), SC - SL2) : iff_4



// Long and Short Conditions
longCondition = (crossover(close,donUpper[1])) 

// Close Conditions
closeLongCondition = crossunder(close,Trail2)

// Strategy logic
if (longCondition) 
    strategy.entry("Long", strategy.long)
    alert("Open Long position")

if (closeLongCondition)
    strategy.close("Long")
    alert("Close Long position")

// Plot Donchian
l = plot(donLower, color=color.blue)
u = plot(donUpper, color=color.blue)
plot(donBasis, color=color.orange)
fill(u, l, color=color.blue)
plot(Trail2, color=color.blue, title="ATRSL Trail")

Больше