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

如何在K线突破后将实线延续为虚线?(Pine Script)

Pine Script 实现突破后高低线转虚线延伸

核心实现思路

要实现突破后线条从实线转虚线延伸,需要分三步处理:

  1. 持久化存储标记的高低价、线条对象,以及是否突破的状态
  2. 实时检测后续K线是否突破标记的高低水平
  3. 突破前保持实线并延长,突破后切换为虚线继续延伸

修改后的完整代码

//@version=5
indicator("高低线突破转虚线", overlay=true)

// 输入参数
showLine = input.bool(true, "显示线条")
max = input.int(5, "回溯K线数")
lineColor = input.color(color.blue, "线条颜色")

// 持久化变量:保存线条对象、标记价、突破状态
var line highLine = na
var line lowLine = na
var float markedHigh = na
var float markedLow = na
var bool highBroken = false
var bool lowBroken = false

if showLine
    // 清理旧线条(避免重复创建)
    if not na(highLine)
        line.delete(highLine)
    if not na(lowLine)
        line.delete(lowLine)
    
    // 计算时间间隔,确定线条起点
    dt = time - time[1]
    // 记录标记的高低价
    markedHigh := high[max]
    markedLow := low[max]
    
    // 创建初始实线
    highLine := line.new(
        x1=time - dt * max, y1=markedHigh, 
        x2=time, y2=markedHigh, 
        color=lineColor, style=line.style_solid, 
        width=2, xloc=xloc.bar_time
    )
    lowLine := line.new(
        x1=time - dt * max, y1=markedLow, 
        x2=time, y2=markedLow, 
        color=lineColor, style=line.style_solid, 
        width=2, xloc=xloc.bar_time
    )
    
    // 重置突破状态
    highBroken := false
    lowBroken := false

// 实时更新高线状态
if not na(highLine)
    // 检测向上突破
    if high > markedHigh and not highBroken
        highBroken := true
        line.set_style(highLine, line.style_dashed)
        line.set_x2(highLine, time)
    // 突破后持续延长虚线
    elif highBroken
        line.set_x2(highLine, time)
    // 未突破时延长实线
    else
        line.set_x2(highLine, time)

// 实时更新低线状态
if not na(lowLine)
    // 检测向下突破
    if low < markedLow and not lowBroken
        lowBroken := true
        line.set_style(lowLine, line.style_dashed)
        line.set_x2(lowLine, time)
    // 突破后持续延长虚线
    elif lowBroken
        line.set_x2(lowLine, time)
    // 未突破时延长实线
    else
        line.set_x2(lowLine, time)

关键代码说明

  • var关键字:确保变量在脚本运行期间持久化,不会每根K线都重置
  • 线条更新逻辑:每根K线都会检查突破状态,未突破时延长实线,突破后切换为虚线并继续延长
  • 旧线条清理:避免多次触发showLine后画面堆积大量线条

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 16:01:26