如何在Donchian Channel交易系统中设置入场时固定的20日低点止损?
解决Donchian Channel交易系统固定初始止损的问题
核心问题在于你当前的DonchianLow会随K线不断更新,无法保留入场时刻的20日低点。要实现固定止损,需要在入场时记录当时的20日低点,并将其存储为变量,后续止损时调用这个固定值。
实现步骤:
- 定义专用变量存储入场时的止损基准值,避免实时更新覆盖
- 仅在触发入场信号且无持仓时,更新该变量的值
- 止损指令直接调用存储的固定值,而非实时计算的通道低点
完整示例代码:
//@version=5 strategy("Donchian Channel Fixed Stop", overlay=true, default_qty_type=strategy.cash, default_qty_value=10000) // 计算唐奇安通道高低点 donchianHigh = ta.highest(close[1], 20) donchianLow = ta.lowest(close[1], 20) // 初始化固定止损变量(var关键字确保不随K线重置) var float longStopLevel = na var float shortStopLevel = na // 做多信号与入场逻辑 longCondition = ta.crossover(close, donchianHigh) if (longCondition and strategy.position_size == 0) strategy.entry("Long", strategy.long) // 入场时记录当前的20日低点作为固定止损 longStopLevel := donchianLow // 做空信号与入场逻辑 shortCondition = ta.crossunder(close, donchianLow) if (shortCondition and strategy.position_size == 0) strategy.entry("Short", strategy.short) // 入场时记录当前的20日高点作为固定止损 shortStopLevel := donchianHigh // 固定止损离场 strategy.exit("Exit Long", from_entry="Long", stop=longStopLevel) strategy.exit("Exit Short", from_entry="Short", stop=shortStopLevel) // 绘制唐奇安通道 plot(donchianHigh, color=color.blue, title="Donchian High") plot(donchianLow, color=color.red, title="Donchian Low")
关键说明:
var关键字让变量仅初始化一次,后续仅在入场时更新,保证止损位全程固定- 做多止损绑定入场瞬间的20日低点,做空止损绑定入场瞬间的20日高点,完全符合需求
内容的提问来源于stack exchange,提问作者Dave_R_Pierce
相关产品推荐
相关产品推荐

