该策略是一个结合了唐奇安通道(Donchian Channel)和200周期简单移动平均线(SMA)的趋势跟踪交易系统。策略通过观察价格突破唐奇安通道的上下轨并结合SMA走势来识别潜在的做多和做空机会。同时,策略还设计了基于通道中线的动态止损机制,用于控制风险。
策略的核心逻辑基于以下几个关键要素: 1. 使用20周期计算唐奇安通道的上轨、下轨和中轨 2. 结合200周期SMA走势判断整体趋势方向 3. 入场信号: - 当价格突破唐奇安通道上轨且位于SMA200之上时,触发做多信号 - 当价格跌破唐奇安通道下轨且位于SMA200之下时,触发做空信号 4. 止损设置: - 多头止损设置在通道中线下方45%处 - 空头止损设置在通道中线上方45%处
风险控制建议: - 建议结合其他技术指标进行交叉验证 - 可以添加趋势强度过滤器 - 考虑使用动态仓位管理方案 - 定期检查和优化策略参数
信号优化:
止损优化:
仓位管理优化:
时机优化:
该策略通过结合经典的唐奇安通道和移动平均线指标,构建了一个逻辑清晰、风险可控的趋势跟踪系统。策略的主要优势在于信号明确、风险控制合理,但在震荡市场中表现可能欠佳。通过添加成交量确认、优化止损机制和引入动态仓位管理等方式,策略还有较大的优化空间。建议交易者在实盘应用时做好风险控制,并根据具体交易品种和市场环境进行针对性优化。
/*backtest
start: 2024-02-21 00:00:00
end: 2024-03-18 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Binance","currency":"SOL_USDT"}]
*/
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © ardhankurniawan
//@version=5
strategy("Donchian Channel Strategy with SMA 200 and Custom SL", overlay=true)
// Parameters
length = 20
smaLength = 200 // Changed SMA to 200
// Calculate Donchian Channel
upper = ta.highest(high, length)
lower = ta.lowest(low, length)
mid = (upper + lower) / 2 // Mid Line
// Calculate SMA 200
sma200 = ta.sma(close, smaLength)
// Plot Donchian Channel, SMA 200, and Mid Line
plot(upper, color=color.green, linewidth=2, title="Upper Line")
plot(lower, color=color.red, linewidth=2, title="Lower Line")
plot(mid, color=color.orange, linewidth=1, title="Mid Line")
plot(sma200, color=color.blue, linewidth=2, title="SMA 200")
// Long and Short logic based on SMA 200
longCondition = upper > ta.highest(upper[1], length) and close > sma200
shortCondition = lower < ta.lowest(lower[1], length) and close < sma200
// Calculate Stop Loss for Long and Short based on new conditions
longSL = mid - 0.45 * (mid - lower) // SL for Long when price crosses down mid line
shortSL = mid + 0.45 * (upper - mid) // SL for Short when price crosses up mid line
// Enter Long or Short position
if (longCondition)
strategy.entry("Long", strategy.long)
if (shortCondition)
strategy.entry("Short", strategy.short)
// Place Stop Loss
strategy.exit("Exit Long", from_entry="Long", stop=longSL)
strategy.exit("Exit Short", from_entry="Short", stop=shortSL)