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

Pinescript脚本修改需求:消除开盘跳空,使首日K线衔接前一日收盘价

解决TradingView开盘K线跳空显示异常问题

你需要实现的是:在TradingView任意图表开盘时,让当日第一根K线的实体、颜色及影线基于前一日最后一根K线收盘价绘制,消除跳空带来的图表断层。当前使用的脚本存在显示异常——本该是影线的部分被显示为K线实体,以下针对你提出的三种方案给出具体实现:

问题根源

原脚本中plotcandle函数的wickcolor参数被设置为与实体颜色一致,导致影线和实体无法区分,这是显示异常的核心原因。所有方案都会先修正这个问题,区分实体与影线颜色。


方案1:完全隐藏第一根原生K线,仅显示指标生成的K线

由于无法直接隐藏单根原生K线,我们通过仅在当日第一根K线位置绘制修正后的指标K线,其余K线不绘制,让修正后的K线完全覆盖原生第一根K线,实现视觉上的隐藏效果。

//@version=5
indicator("无跳空K线 - 方案1", overlay=true)

applyToDayOpenOnly = input(true, title="仅应用于开盘")
dayChangeHourThreshold = input(6, title="判定开盘的小时阈值")
showPriceLine = input(true, title="显示价格线")

// 判断是否为当日第一根K线
isDayFirstBar = not applyToDayOpenOnly or (time - time[1]) / 1000 / 60 / 60 > dayChangeHourThreshold

// 修正第一根K线的开盘价为前一日收盘价,其余K线不生成指标数据
myOpen = isDayFirstBar ? close[1] : na
myClose = close
myHigh = high
myLow = low

// 区分实体与影线颜色
candleColor = myOpen <= myClose ? color.teal : color.red
wickColor = color.gray

// 仅绘制修正后的当日第一根K线
plotcandle(myOpen, myHigh, myLow, myClose, color=candleColor, bordercolor=candleColor, wickcolor=wickColor)

// 绘制价格线
if barstate.islast and showPriceLine
    line.new(bar_index - 4999, close, bar_index + 500, close, color=candleColor, style=line.style_dotted, width=1)

方案2:指标完全覆盖第一根K线的OHLC数据

让指标绘制所有K线,其中当日第一根K线使用修正后的开盘价(前一日收盘价),其余K线沿用原生OHLC数据,指标K线会完全覆盖原生图表的K线,实现无缝衔接。

//@version=5
indicator("无跳空K线 - 方案2", overlay=true)

applyToDayOpenOnly = input(true, title="仅应用于开盘")
dayChangeHourThreshold = input(6, title="判定开盘的小时阈值")
showPriceLine = input(true, title="显示价格线")

// 判断是否为当日第一根K线
isDayFirstBar = not applyToDayOpenOnly or (time - time[1]) / 1000 / 60 / 60 > dayChangeHourThreshold

// 修正第一根K线的开盘价,其余沿用原生数据
myOpen = isDayFirstBar ? close[1] : open
myClose = close
myHigh = high
myLow = low

// 区分实体与影线颜色
candleColor = myOpen <= myClose ? color.teal : color.red
wickColor = color.gray

// 绘制所有K线,覆盖原生图表
plotcandle(myOpen, myHigh, myLow, myClose, color=candleColor, bordercolor=candleColor, wickcolor=wickColor)

// 绘制价格线
if barstate.islast and showPriceLine
    line.new(bar_index - 4999, close, bar_index + 500, close, color=candleColor, style=line.style_dotted, width=1)

方案3:激活指标时隐藏原生图表

将指标设为独立图表,添加后手动隐藏原生K线系列,完全用指标生成的K线替代原生图表,彻底消除跳空显示。

//@version=5
indicator("无跳空K线 - 方案3", overlay=false)

applyToDayOpenOnly = input(true, title="仅应用于开盘")
dayChangeHourThreshold = input(6, title="判定开盘的小时阈值")
showPriceLine = input(true, title="显示价格线")

// 判断是否为当日第一根K线
isDayFirstBar = not applyToDayOpenOnly or (time - time[1]) / 1000 / 60 / 60 > dayChangeHourThreshold

// 修正第一根K线的开盘价,其余沿用原生数据
myOpen = isDayFirstBar ? close[1] : open
myClose = close
myHigh = high
myLow = low

// 区分实体与影线颜色
candleColor = myOpen <= myClose ? color.teal : color.red
wickColor = color.gray

// 绘制所有K线
plotcandle(myOpen, myHigh, myLow, myClose, color=candleColor, bordercolor=candleColor, wickcolor=wickColor)

// 绘制价格线
if barstate.islast and showPriceLine
    line.new(bar_index - 4999, close, bar_index + 500, close, color=candleColor, style=line.style_dotted, width=1)

使用说明:添加指标后,打开图表设置,找到原生K线系列(通常标注为“主图表”),将其隐藏,仅保留该指标的K线显示即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 07:55:09