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

如何实现无重绘信号且实时图表效果与原脚本一致(无需延迟K线)

解决Pine Script无重绘且保留原实时表现的买卖信号方案

问题分析

原脚本的重绘根源在于:实时K线的high和low是动态变化的,当价格波动导致这些值改变时,之前触发的信号会消失,造成重绘。而延迟K线写法会让信号滞后一根K线,不符合原脚本的实时表现需求。

解决方案:持久化实时信号

通过持久化信号状态的方式,让信号一旦触发就保持显示,直到下一根K线开始,既保留原脚本的实时触发逻辑,又彻底消除重绘。

完整代码

//@version=5
indicator(title='无重绘版Simple Buy/Sell', overlay=true)

// 保留原脚本的信号触发逻辑
original_buy = (high > open[1]) and not (low < open[1])
original_sell = (low < open[1]) and not (high > open[1])

// 用var变量持久化信号状态,避免每根K线重置
var bool buy_signal = false
var bool sell_signal = false

// 新K线启动时重置信号状态
if barstate.isnew
    buy_signal := false
    sell_signal := false

// 更新信号:一旦触发过就保持为True,不再因后续价格变动撤销
buy_signal := buy_signal or original_buy
sell_signal := sell_signal or original_sell

// 绘制信号,参数与原脚本一致
plotshape(buy_signal, style=shape.labelup, location=location.belowbar, size=size.tiny)
plotshape(sell_signal, style=shape.labeldown, location=location.abovebar, size=size.tiny)

方案原理

  • 保留原逻辑:original_buy和original_sell完全复用原脚本的触发条件,确保实时触发时机和原脚本一致。
  • 持久化状态:var定义的信号变量不会自动重置,配合barstate.isnew仅在新K线开始时重置,保证每根K线的信号独立。
  • 无重绘保障:信号一旦触发(original_buy为True),buy_signal就会保持为True,即使后续实时K线的价格波动破坏了原条件,信号也不会消失,彻底解决重绘问题。

效果对比

  • 与原脚本:实时触发时机完全一致,不会出现信号消失的重绘现象。
  • 与延迟K线写法:无需等待K线收盘即可显示信号,没有滞后性,符合原脚本的实时表现要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 05:40:11