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

Pine Script如何在两个延伸的line.new对象之间实现填充效果

Pine Script两个line.new延伸线段间填充的实现方案

实现核心思路

Pine Script原生未提供直接对line.new对象的填充接口,我们可以通过提取两条线段的坐标映射关系+多边形/plot填充的方式实现需求,纯原生语法即可完成,无需依赖额外工具。

具体实现步骤

  • 第一步:存储line.new实例,方便后续读取坐标、延伸属性等参数
    你给出的线段创建代码可调整为带实例存储的写法:
    // 全局存储两条线段的实例
    var line line_short = na
    var line line_short7 = na
    // 确认历史K线走完后创建线段,避免重复生成
    if barstate.islastconfirmedhistory
        line_short := line.new(bar_index[3], LAG_SHORT_CNT, bar_index + 100, LAG_SHORT_CNT, extend=extend.right)
        line_short7 := line.new(bar_index[3], LAG_SHORT_CNT7, bar_index + 100, LAG_SHORT_CNT7, extend=extend.right)
    
  • 第二步:适配线段类型计算对应Y值
    • 若为水平延伸线:直接读取line.get_y1()即可获得全区间固定Y值
    • 若为倾斜延伸线:通过线段两点坐标计算斜率,公式为y = y0 + (y1 - y0)/(x1 - x0) * (当前K线bar_index - 起点x0),推导每个K线对应的Y值
  • 第三步:执行填充,两种常用方案可选
    方案1:plot+fill组合(适配全K线范围填充,代码最简)
    // 读取两条线的Y值并绘制为plot对象
    p_short = plot(line.get_y1(line_short), display = display.data_window)
    p_short7 = plot(line.get_y1(line_short7), display = display.data_window)
    // 填充两个plot之间的区域,可自定义颜色和透明度
    fill(p_short, p_short7, color = color.new(color.blue, 90))
    
    方案2:polygon.new绘制(适配指定区间填充,灵活度更高)
    if barstate.islast
        var poly fill_area = na
        // 删除上一次生成的多边形,避免重复绘制
        poly.delete(fill_area)
        // 定义填充区域的左右边界
        x_left = bar_index[3]
        x_right = bar_index + 50 // 可按需调整延伸填充长度
        // 按左下、左上、右上、右下的顺序传入顶点坐标
        fill_area := polygon.new([x_left, x_left, x_right, x_right], [line.get_y1(line_short7), line.get_y1(line_short), line.get_y1(line_short), line.get_y1(line_short7)], color.new(color.green, 85), border_width=0)
    

注意事项

  • 动态创建的绘图对象建议每次生成新实例前删除旧实例,避免K线刷新时产生冗余对象
  • 填充颜色建议设置80%以上的透明度,避免遮挡K线和指标信号
  • 倾斜线段填充前需先校验斜率计算逻辑,避免填充区域和线段出现错位

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 05:45:02