如何在Pine Script中实现MA穿越或50K线后平仓的出场策略?
Pine Script 出场策略补充:添加50K线平仓条件
你需要用barsince()函数追踪开仓后的K线数量,把它和原有的价格穿越条件用逻辑或(or)组合,同时补上原代码缺失的闭合括号,再加上barstate.isconfirmed避免信号闪烁。
修改后的完整平仓逻辑代码
// 先确保MA已定义(示例用20周期SMA,可替换为你的参数) basis = ta.sma(close, 20) // 示例开仓信号(保留你自己的开仓逻辑即可) strategy.entry("buy", strategy.long, when = close < basis) // 平仓逻辑:价格上穿MA 或 开仓后满50根确认K线,先触发的条件生效 strategy.close("buy", when = barstate.isconfirmed and (close > basis or barsince(strategy.position_size > 0) >= 50))
关键代码解释
barsince(strategy.position_size > 0):计算从当前多头仓位建立以来的K线数,每次开仓后会从0重新计数barsince(...) >= 50:当开仓后满50根已确认的K线时,触发平仓barstate.isconfirmed:确保只在K线完全闭合后执行平仓,避免盘中信号反复变动- 逻辑或
or:两个条件满足任意一个就触发平仓,实现“先到先执行”的出场规则
注意事项
如果你的策略涉及空头仓位,需要把strategy.position_size > 0改成strategy.position_size < 0来对应空头的平仓计数;另外无持仓时barsince会返回na,但na >=50会判定为false,不会误触发平仓,无需额外处理。
内容的提问来源于stack exchange,提问作者hello11
相关产品推荐
相关产品推荐

