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

Pine Script v5 条件2触发时校验条件1有效后开多空实现方法

Pine Script v5 带前置状态校验的开仓逻辑实现

核心逻辑拆解

要实现的是前置条件预触发+触发信号二次校验的开仓规则,核心约束有三点:

  • 多单条件1:short指标上穿Long指标,触发后进入待开仓的生效状态,直到出现明确的失效信号才会清除状态
  • 多单条件2:mid指标上穿Long指标,属于最终开仓触发信号,不能独立触发开仓
  • 条件2触发的当根K线,必须校验条件1仍处于生效状态,校验通过才执行开多操作

可直接运行的实现代码

//@version=5
strategy("带状态校验的开多策略", overlay=true, initial_capital=100000, default_qty_type=strategy.cash, default_qty_value=10000, commission_type=strategy.commission.percent, commission_value=0.03)

// 指标参数配置(可根据自己的Short/Mid/Long指标逻辑替换)
short_len = input.int(5, title="Short指标周期")
mid_len = input.int(20, title="Mid指标周期")
long_len = input.int(60, title="Long指标周期")
short_val = ta.sma(close, short_len)
mid_val = ta.sma(close, mid_len)
long_val = ta.sma(close, long_len)

// 多单条件1定义与状态记录
cond_long1 = ta.crossover(short_val, long_val) // 条件1:short上穿Long
cond_long1_invalid = ta.crossunder(short_val, long_val) // 条件1失效规则:short下穿Long
var long1_active = false // 持久化记录条件1的生效状态,跨K线保存
if cond_long1
    long1_active := true
if cond_long1_invalid
    long1_active := false

// 多单条件2定义
cond_long2 = ta.crossover(mid_val, long_val) // 条件2:mid上穿Long

// 最终开多信号:条件2触发 + 条件1仍生效
long_entry = cond_long2 and long1_active

// 交易执行
if long_entry
    strategy.entry("多仓", strategy.long)
if cond_long1_invalid
    strategy.close("多仓", comment="平多")

// 绘图辅助校验
plot(short_val, color=color.blue, title="Short线", linewidth=2)
plot(mid_val, color=color.orange, title="Mid线", linewidth=2)
plot(long_val, color=color.red, title="Long线", linewidth=2)
plotshape(cond_long1, location=location.belowbar, color=color.purple, style=shape.triangleup, size=size.small, title="条件1触发点")
plotshape(long_entry, location=location.belowbar, color=color.green, style=shape.labelup, text="开多", title="开仓点")

自定义调整说明

代码里默认用短/中/长简单移动均线作为Short/Mid/Long的示例值,如果有自定义的三个指标计算逻辑,直接替换short_val/mid_val/long_val的赋值即可。
如果策略里条件1有专属失效规则,比如触发后固定N根K线失效、价格跌破某阈值失效,只需要修改cond_long1_invalid的判定逻辑,状态记录的核心框架不用改动。

逻辑避坑说明

  • 必须用var关键字修饰条件1的状态变量,普通变量会在每根K线重置,无法记录跨K线的触发状态
  • 不需要额外判断条件2触发时short是否在Long上方,因为只要short没下穿Long,long1_active就会一直保持为true,天然完成状态校验
  • 如果条件2先于条件1触发,哪怕后续三个指标都呈多头排列,因为条件1没有提前触发、状态标记为false,也不会误开仓,完全匹配顺序约束要求

内容的提问来源于stack exchange,提问作者Iuliana

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.31 21:30:42