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

Pine Script基于barssince的4根K线冷却期买入信号逻辑优化

Pine Script 4根K线冷却期买入信号正确实现

原代码的问题是ta.barssince(buySignal[1])基于未过滤的原始买入信号计算间隔,没有以上一次生效的买入信号为计数起点,因此无法满足1、6、11根K线依次触发的需求。

以下是两种正确实现方式:

方案1:用全局变量记录上一次有效信号位置

这是逻辑最清晰、兼容性最好的写法:

// 此处替换为你自己的原始买入信号逻辑
buySignal = ta.crossover(ta.sma(close, 5), ta.sma(close, 20))

var int lastValidBuyBar = na
validBuy = na

if buySignal
    // 首次触发或者距离上一次有效信号满4根K线则生效
    if na(lastValidBuyBar) or bar_index - lastValidBuyBar >= 4
        validBuy := buySignal
        lastValidBuyBar := bar_index

// 绘制买入信号
plotshape(validBuy, location=location.belowbar, color=color.lime, style=shape.triangleup, text="YEY")

方案2:用ta.barssince简化实现

直接基于过滤后的有效信号计算间隔,写法更简洁:

// 此处替换为你自己的原始买入信号逻辑
buySignal = ta.crossover(ta.sma(close, 5), ta.sma(close, 20))

validBuy = buySignal and ta.barssince(validBuy[1]) >= 4

// 绘制买入信号
plotshape(validBuy, location=location.belowbar, color=color.lime, style=shape.triangleup, text="YEY")

两种写法都会以上一次生效的买入信号为起点,间隔4根K线后才允许触发下一次信号,完全符合1、6、11根K线依次触发的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 01:24:08