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

Pine Script如何实现每3天校验一次交易入场条件?

Pine Script 3日周期入场校验逻辑实现方案

核心实现逻辑是通过固定周期计数器+持久化变量存储校验结果,实现「T日校验、结果作用于T+1至T+3交易日、T+4日重校验」的规则,全程避免变量随K线重算被覆盖。


核心逻辑拆解

  • 用var修饰的持久化变量存储入场权限标记、周期计数器,保证3天有效期内数值不会被单根K线的行情波动重置
  • 计数器归零当日触发条件校验,校验完成后将计数器重置为3,对应后续3个生效交易日
  • 每经过1个完整交易日,计数器减1,减到0时自动触发下一轮校验

可直接复用的核心代码(Pine Script v5)

//@version=5
strategy("3日周期校验交易策略", overlay=true, initial_capital=100000, default_qty_type=strategy.cash, default_qty_value=10000, commission_type=strategy.commission.percent, commission_value=0.03)

// ========== 可配置参数 ==========
valid_period = input.int(3, title="单次校验结果生效交易日数", minval=1)
// 请将下方entry_condition替换为你自己开发完成的入场校验逻辑
entry_condition = ta.rsi(close, 14) < 30 and ta.close > ta.sma(close, 60)

// ========== 周期控制核心变量 ==========
var int remain_valid_days = 0
var bool entry_permission = false

// ========== 周期触发与校验逻辑 ==========
// 适配多周期运行:仅在新交易日第一根K线触发计数
is_new_day = ta.change(time("D")) != 0
if remain_valid_days == 0
    // 周期届满,执行当日校验
    entry_permission := entry_condition
    remain_valid_days := valid_period
else
    // 每过一个交易日,剩余有效天数减1
    if is_new_day
        remain_valid_days := remain_valid_days - 1

// ========== 交易执行逻辑 ==========
// 有权限且无持仓时开多,空单逻辑可按需求自行扩展
if entry_permission and strategy.position_size == 0
    strategy.entry("Long", strategy.long)

// 此处替换为你自己的出场逻辑即可,示例为持有5个交易日平仓
if strategy.position_size > 0 and bar_index - strategy.opentrades.entry_bar_index(0) >= 5
    strategy.close("Long")

避坑说明

  • 不要删除变量前的var关键字:没有var修饰的变量会在每根K线重新计算赋值,会导致入场权限标记随行情实时变化,完全破坏3天锁定期的规则
  • 多周期运行必须保留is_new_day判断:如果在1小时、15分钟等小于日线的周期运行,该判断可以避免把小周期K线误算为交易日,保证计数准确
  • 校验逻辑仅在remain_valid_days == 0的交易日执行一次,其余时间不会重复触发校验,完全匹配规则要求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 11:54:21