如何将多单止损设置为入场前低点?Pine Script技术咨询
如何将多单止损设置为入场前的低点?
我希望将多单的止损设置为入场前的低点,请问需要使用什么指令?

我当前使用的代码如下:
if ta.change(strategy.position_size) == 0 strategy.exit(id="Close Long", stop=low) if ta.change(strategy.position_size) == 0 strategy.exit(id="Close Short", stop=high)
你当前的代码逻辑有误:ta.change(strategy.position_size) == 0 是持仓量未变化时执行止损设置,这会导致止损价被每根K线的实时low/high不断覆盖,根本无法锁定入场前的低点。
要实现锁定入场前低点作为多单止损的需求,核心是在开仓时记录下目标低点,之后用这个固定值作为止损价,具体实现代码如下:
// 定义变量存储入场前的关键价位,var确保只初始化一次 var float longEntryLow = na var float shortEntryHigh = na // 示例多单开仓条件(请替换成你实际的开仓逻辑) longCondition = ta.crossover(ta.sma(close, 5), ta.sma(close, 20)) if (longCondition) strategy.entry("Long", strategy.long) // 记录入场前一根K线的低点,若需阶段性低点可改用ta.lowest(low, N)[1] longEntryLow := low[1] // 示例空单开仓条件(请替换成你实际的开仓逻辑) shortCondition = ta.crossunder(ta.sma(close, 5), ta.sma(close, 20)) if (shortCondition) strategy.entry("Short", strategy.short) // 记录入场前一根K线的高点 shortEntryHigh := high[1] // 多单持仓时,用记录的入场前低点设置止损 if (strategy.position_size > 0) strategy.exit(id="Close Long", stop=longEntryLow) // 空单持仓时,用记录的入场前高点设置止损 if (strategy.position_size < 0) strategy.exit(id="Close Short", stop=shortEntryHigh)
关键说明:
- 用
var声明变量,避免每次K线更新都重置存储的价位 - 开仓时同步记录目标价位,确保止损价固定为入场前的数值
- 若你需要的是入场前N根K线内的阶段性低点,可把
low[1]替换为ta.lowest(low, 5)[1](数字5代表最近5根K线,可按需调整)
内容的提问来源于stack exchange,提问作者Sirapop Varamisra
相关产品推荐
相关产品推荐

