唐奇安通道突破策略是一种趋势跟踪型量化交易策略。该策略利用唐奇安通道来捕捉市场趋势,同时使用 ATRSL 移动止损来控制风险。当价格突破唐奇安通道上轨时,策略开仓做多;当价格跌破 ATRSL 移动止损线时,策略平仓。
donLength
参数计算过去 donLength
个周期的最高价和最低价,分别作为唐奇安通道的上轨 donUpper
和下轨 donLower
,通道中线 donBasis
为上下轨的平均值。AP2
和 AF2
参数计算 ATR 值 SL2
,然后根据当前收盘价 SC
和前一个移动止损价 Trail2[1]
的关系,动态调整移动止损价 Trail2
。donLength
、AP2
和 AF2
等参数,优化策略表现。唐奇安通道突破策略是一种经典的趋势跟踪策略,通过唐奇安通道捕捉趋势,并使用 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")