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

Pine Script v5 实现信号首次触发显示逻辑的代码修改方案

Pine Script v5 均值回归策略卖出信号过滤修改

图示说明

原始代码

//@version=5
indicator("Mean reverse strategi", timeframe="1D")
bool first = false

a=0
b=0
c=0
d=0
e=0
f=0
buy=0
sell=0

williammax = ta.highest(10)
williammin = ta.lowest(10)
_pr = 100 * (close - williammax) / (williammax - williammin)


if math.max(open, close, high, low)<ta.sma(close, 10)
    a:=1
if _pr<-85
    b:=1
if ta.rsi(close, 2)<10
    c:=1
if a==1 and b==1 and c==1
    buy:=-1

if _pr > -15
    e:=1
if buy[1]==-1 or buy[2]==-1 or buy[3]==-1 or buy[4]==-1 or buy[5]==-1 or buy[6]==-1 or buy[7]==-1 or buy[8]==-1 or buy[9]==-1 or buy[10]==-1 or buy[11]==-1 or buy[12]==-1
    f:=1
if f!=1 and e==1
    sell:=1

plot(buy, color=#50EF53)
plot(sell, color=#F93822FF)

需求规则

仅显示红色卖出信号的首次触发结果,首次卖出信号出现后,后续卖出信号统一置为0不展示,直到指标触发绿色买入信号后重置状态,才允许再次显示下一轮的首次卖出信号。

修改后可直接运行的完整代码

//@version=5
indicator("Mean reverse strategi", timeframe="1D")
// 状态控制变量:标记当前是否允许显示卖出信号,var修饰保证K线间状态持续留存
var bool canShowSell = true

a=0
b=0
c=0
e=0
f=0
buy=0
sell=0

// 补全原代码缺失的数据源参数,修复函数调用报错
williammax = ta.highest(high, 10)
williammin = ta.lowest(low, 10)
_pr = 100 * (close - williammax) / (williammax - williammin)


if math.max(open, close, high, low)<ta.sma(close, 10)
    a:=1
if _pr<-85
    b:=1
if ta.rsi(close, 2)<10
    c:=1
if a==1 and b==1 and c==1
    buy:=-1
    // 触发买入信号时,重置卖出信号显示权限
    canShowSell := true

if _pr > -15
    e:=1
if buy[1]==-1 or buy[2]==-1 or buy[3]==-1 or buy[4]==-1 or buy[5]==-1 or buy[6]==-1 or buy[7]==-1 or buy[8]==-1 or buy[9]==-1 or buy[10]==-1 or buy[11]==-1 or buy[12]==-1
    f:=1
// 仅在权限开启时触发卖出信号
if f!=1 and e==1 and canShowSell
    sell:=1
    // 首次卖出触发后关闭权限,后续同轮卖出信号全部屏蔽
    canShowSell := false

plot(buy, color=#50EF53, title="买入信号")
plot(sell, color=#F93822FF, title="卖出信号")

核心修改点

  • 新增canShowSell布尔状态变量,初始值为true,用var关键字修饰保证状态不会在每根K线加载时重置
  • 买入信号触发分支新增状态重置逻辑,每次买入后重新开放卖出信号的显示权限
  • 卖出信号触发条件新增权限校验,只有canShowSell为true时才会输出卖出值1;首次卖出触发后立刻把canShowSell设为false,同周期内后续所有满足卖出条件的K线都不会再绘制信号
  • 修复原代码中ta.highest、ta.lowest缺失数据源参数的语法错误,清理了定义后未使用的冗余变量first、d,完全保留原有策略的信号判断逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 17:09:19