如何设置止损为入场K线低点?当前策略止损频繁变动求解
如何将止损固定为入场K线的低点(Pine Script)
你当前代码的问题在于,low[1]会随着每根新K线的生成不断更新为最新的前一根K线低点,所以止损价会一直变动,没法固定在开仓那根K线的低点。要解决这个问题,核心是在入场时把当时的K线低点保存下来,之后止损就用这个固定值。
解决方案代码示例
//@version=5 strategy("Fixed Stop Loss at Entry Low", overlay=true) // 用var声明变量,确保只初始化一次,不会随K线重置 var float entryLow = na // 示例做空触发条件:收盘价跌破20日均线 shortSignal = close < ta.sma(close, 20) // 开空单时记录入场K线的低点 if (shortSignal and strategy.position_size == 0) strategy.entry("Short Position", strategy.short) entryLow = low // 记录开仓那根K线的低点 // 使用固定的入场低点作为止损 if (strategy.position_size < 0) strategy.exit(id="Close Short", stop=entryLow)
关键说明
var关键字:这个关键字让entryLow变量在脚本运行全程只初始化一次,不会每根K线都重置为na,这样就能牢牢记住开仓时的低点数值。- 仅在开仓时更新变量:只有当触发开空信号且当前无仓位时,才会给
entryLow赋值,确保它只存储入场那根K线的低点,后续不再变动。 - 多仓位场景适配:如果你的策略是多笔仓位同时持有,需要改用数组来存储每笔入场的低点,不过单仓位策略用上面的代码就完全够用。
内容的提问来源于stack exchange,提问作者Sirapop Varamisra
相关产品推荐
相关产品推荐

