基于K线最低价加若干跳点的移动止损运行异常问题求助
问题诊断与修复方案
你提供的Pine Script止损逻辑存在4个核心错误,直接修改后即可正常运行:
- 止损基准值
x的更新逻辑完全不触发:原判断条件x < low[0]-0.04永远为假,初始x = low[1] - 0.04和low[0]-0.04在开仓时完全相等,后续也没有跟踪最新价格调整的逻辑 strategy.exit的trail_offset参数单位错误:你前文用的止损幅度是0.04的量级,这里写low[1]-4会导致偏移值直接偏离正常价格区间,完全无法触发止损- 全局执行
strategy.exit逻辑错误:没有仓位时不需要触发退出指令,应该匹配持仓状态执行 - 浮点相等判断精度风险:直接用
low == low[1]在部分品种上会因为报价精度问题漏判,可以加极小阈值做容错
修复后完整代码
strategy("Same lows", overlay=false, pyramiding=9999, calc_on_every_tick=true) // 开仓条件:当前K线最低价和上一根K线最低价相等,且年份大于2020 if math.abs(low - low[1]) < 0.0001 and year > 2020 strategy.entry("buy", strategy.long, 2) // 动态止损值计算:仅持仓时更新止损 var float x = na if strategy.position_size > 0 // 止损为近两根K线最低值下浮0.04 x := math.min(low, low[1]) - 0.04 // 退出策略:仅持仓时触发,固定止损不需要跟踪偏移 if strategy.position_size > 0 strategy.exit("tsl", "buy", stop=x)
修改说明
- 新增
var关键字声明止损变量x,避免每根K线重置数值 - 仅在持有多仓的情况下更新止损值、执行退出指令,避免无效调用
- 修复止损值计算逻辑,取最近两根K线的最低价下浮0.04作为止损基准,符合你原本的策略意图
- 删掉了无效的
trail_points和trail_offset参数,你当前需求是固定止损不需要跟踪止盈,如果后续要加跟踪止盈再调整对应参数即可 - 给低价相等判断加了0.0001的误差容限,避免浮点精度问题漏判开仓
内容的提问来源于stack exchange,提问作者Anant Jain
相关产品推荐
相关产品推荐

