仅在多头持仓活跃时绘制止损线的Pine Script V5实现求助
解决方案:仅在多头持仓时绘制止损线(Pine Script v5)
要实现仅在多头持仓活跃时绘制止损线,只需做两处关键调整:
- 按要求将止损线计算为长期EMA减去2倍ATR
- 通过持仓状态判断控制止损线的显示时机
修改后的完整代码
//@version=5 strategy("EMA Crossover", overlay=true, margin_long=100, margin_short=100) // 指标计算 SEMA = ta.ema(close, 24) LEMA = ta.ema(close, 48) atr_value = ta.atr(24) long_stop_level = LEMA - 2 * atr_value // 按要求计算多头止损:LEMA减2倍ATR short_stop_level = LEMA + atr_value // 原空头止损逻辑保留 // 绘制均线 plot(SEMA,"SEMA", color.black) plot(LEMA,"LEMA",color.blue) // 仅在对应持仓活跃时绘制止损线 plot(strategy.position_size > 0 ? long_stop_level : na, "Long Stop", color.green, linewidth=2) plot(strategy.position_size < 0 ? short_stop_level : na, "Short Stop", color.red, linewidth=2) // 多头入场 longCondition = ta.crossover(SEMA,LEMA) if (longCondition) strategy.entry("Go Long", strategy.long) // 空头入场 shortCondition = ta.crossunder(SEMA,LEMA) if (shortCondition) strategy.entry("Go Short", strategy.short)
关键修改说明
- 止损线计算修正:把原代码中单独的
STOP变量拆分,明确计算long_stop_level = LEMA - 2 * atr_value,完全匹配你要求的止损公式。 - 持仓状态判断:使用
strategy.position_size > 0判断当前是否持有多头仓位——如果是,就绘制多头止损线;否则返回na让这条线隐藏。同理,空头止损线用strategy.position_size < 0控制显示。 - 视觉优化:给止损线添加
linewidth=2,让它在图表上更醒目,你可以根据需求调整这个参数。
内容的提问来源于stack exchange,提问作者Dave_R_Pierce
相关产品推荐
相关产品推荐

