如何在Heikin Ashi图表上获取普通蜡烛图的真实高低点数值
解决代码
你需要通过security函数拉取独立于当前Heikin Ashi图表的原生K线数据,就能得到普通蜡烛的真实高低点。同时你提供的原始代码存在变量命名冲突、未定义变量的语法问题,以下是修复后可直接运行的完整代码:
//@version=4 study(title="ORB15 带5分钟普通K线高低点", shorttitle="ORB15_5mHL", overlay=true) // 输入项设置 show_15m_orb_high = input(true, title="显示15分钟开盘区间高点") show_15m_orb_low = input(true, title="显示15分钟开盘区间低点") show_5m_regular_high = input(true, title="显示5分钟普通K线真实高点") show_5m_regular_low = input(true, title="显示5分钟普通K线真实低点") // 自定义函数:判断是否为指定周期的新K线 is_newbar(res) => change(time(res)) != 0 // 获取指定周期的独立数据(不受当前Heikin Ashi图表影响) fetch_data(res, src) => security(syminfo.tickerid, res, src, gaps=barmerge.gaps_on, lookahead=barmerge.lookahead_off) // 15分钟ORB区间计算 daily_newbar = is_newbar('D') orb_15_high = valuewhen(daily_newbar, fetch_data('15', high), 0) orb_15_low = valuewhen(daily_newbar, fetch_data('15', low), 0) // 5分钟普通K线真实高低点获取 [regular_5m_high, regular_5m_low] = fetch_data('5', [high, low]) // 绘制15分钟ORB区间 p_orb_high = plot(show_15m_orb_high ? orb_15_high : na, color = #009900, linewidth=2, title="15分钟ORB高点") p_orb_low = plot(show_15m_orb_low ? orb_15_low : na, color = #ff0000, linewidth=2, title="15分钟ORB低点") fill(p_orb_high, p_orb_low, color = color.new(color.white, 97), title="ORB区间填充") // 绘制5分钟普通K线真实高低点 plot(show_5m_regular_high ? regular_5m_high : na, color = color.new(color.blue, 0), linewidth=1, title="5分钟普通K高点", style=plot.style_circles) plot(show_5m_regular_low ? regular_5m_low : na, color = color.new(color.orange, 0), linewidth=1, title="5分钟普通K低点", style=plot.style_circles)
关键调整说明
- 核心功能通过
security函数的lookahead和gaps参数实现,直接拉取对应周期的原生蜡烛数据,完全不受当前Heikin Ashi图表的数值影响 - 修复了原代码中变量重名、未定义变量的语法错误,可直接复制使用
- 5分钟普通K线高低点默认用圆点标注,你可以修改
style、linewidth参数调整显示样式 - 完全保留了你原有15分钟ORB区间的绘制和填充逻辑,兼容原有需求
内容的提问来源于stack exchange,提问作者Prashant Dada
相关产品推荐
相关产品推荐

