You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 15:27:09