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

Pine Script指标问题:修正前日平均高点绘制与样式配置

修正印度股市双标的前日高点平均值Pine Script指标

问题诊断

现有代码存在两个核心问题:

  • 水平线数值异常:request.security调用中直接使用high[1],在非日线周期下,该值会随当前K线的时间滚动更新,导致盘中平均值不断变化,仅最后一根K线显示正确值。
  • 缺少样式配置项:未提供显示开关、自定义颜色/线宽、价格标签等样式控制选项,不符合需求。

修正后的完整代码

//@version=5
indicator("Average: Previous Day Levels", overlay=true, shorttitle="Avg PDH")

// 1. 标的选择输入
ce_symbol = input.symbol("NSE:NIFTY21SEP25500CE", title="选择CE合约标的")
pe_symbol = input.symbol("NSE:NIFTY21SEP25500PE", title="选择PE合约标的")

// 2. 样式配置输入
show_avg_pdh = input.bool(true, title="显示前日高点平均值线")
line_color = input.color(color.new(color.blue, 0), title="线条颜色")
line_width = input.int(2, title="线条宽度", minval=1, maxval=5)
show_price_label = input.bool(true, title="显示价格标签")
label_location = input.string("右上角", title="标签位置", options=["左上角", "右上角", "左下角", "右下角"])

// 定义印度股市交易时段(9:15-15:30)
session_start = timestamp("Asia/Kolkata", year, month, dayofmonth, 9, 15)
session_end = timestamp("Asia/Kolkata", year, month, dayofmonth, 15, 30)
in_session = time >= session_start and time <= session_end

// 锁定当日的前日高点平均值:每日开盘后仅计算一次,避免盘中波动
var float daily_avg_pdh = na
if ta.change(time("D"))  // 当日第一根K线时计算
    // 获取前日高点(使用barmerge参数确保取数稳定)
    ce_pdh = request.security(ce_symbol, "D", high[1], barmerge.gaps_on, barmerge.lookahead_on)
    pe_pdh = request.security(pe_symbol, "D", high[1], barmerge.gaps_on, barmerge.lookahead_on)
    daily_avg_pdh = (ce_pdh + pe_pdh) / 2

// 绘制水平线
plot(show_avg_pdh and in_session ? daily_avg_pdh : na, 
     color=line_color, 
     linewidth=line_width, 
     title="前日高点平均值",
     display=display.data_window)

// 添加价格标签
if show_price_label and show_avg_pdh and in_session and barstate.islast
    var label avg_label = na
    label.delete(avg_label)
    
    // 根据选择的位置设置标签坐标与对齐方式
    align_x = label_location == "右上角" or label_location == "右下角" ? textalign.right : textalign.left
    align_y = label_location == "右上角" or label_location == "左上角" ? textalign.top : textalign.bottom
    
    avg_label := label.new(x=bar_index, y=daily_avg_pdh, 
                          text=str.tostring(daily_avg_pdh, "%.2f"),
                          color=line_color,
                          textcolor=color.white,
                          style=label.style_label_left,
                          textalign=align_x,
                          yloc=yloc.price)

关键修改说明

  1. 锁定每日平均值:

    • 使用var关键字定义变量,确保交易日内平均值保持固定
    • 通过ta.change(time("D"))触发每日一次的计算逻辑,避免盘中重复更新
    • 给request.security添加barmerge.gaps_on和barmerge.lookahead_on参数,保证跨周期取数的稳定性
  2. 新增样式配置项:

    • 添加开关类输入控制线条和价格标签的显示状态
    • 提供颜色、线宽的自定义选项
    • 支持选择价格标签的显示位置
  3. 优化时段判断:

    • 保留印度时区的交易时段判断逻辑,确保仅在9:15-15:30内显示水平线

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 01:37:29