从零构建Heikin Ashi蜡烛遇问题:自定义代码与TV官方结果不符
问题排查与修正方案
核心错误点
- HA High/Low计算逻辑错误:你当前直接取原始K线的open、high、low、close极值,但标准Heikin Ashi规则里,HA High是原K线High、当前HA Open、当前HA Close三者的最大值;HA Low是原K线Low、当前HA Open、当前HA Close三者的最小值。你的代码里
ha_high = math.max(open , high, low , close)和ha_low = math.min(open , high, low , close)不符合定义,这是图表不匹配的主要原因。 - HA Open的处理逻辑没问题,初始值和后续迭代计算都符合规则。
修正后的完整代码
//@version=5 indicator("Custom Heikin Ashi", overlay=true) // 计算Heikin Ashi各值 ha_close = (open + high + low + close) / 4 var float ha_open = na ha_open := na(ha_open[1]) ? (open + close) / 2 : (ha_open[1] + ha_close[1]) / 2 // 修正HA High和HA Low的计算逻辑 ha_high = math.max(high, ha_open, ha_close) ha_low = math.min(low, ha_open, ha_close) // 绘制蜡烛图 plotcandle(ha_open, ha_high, ha_low, ha_close, title='Custom HA', color = ha_open < ha_close ? color.rgb(161, 143, 239) : color.rgb(120, 134, 122, 40), wickcolor=ha_open < ha_close ? color.navy : color.rgb(120, 123, 134, 40), bordercolor = ha_open < ha_close ? color.navy : color.rgb(120, 123, 134, 40))
验证说明
修正后,自定义HA蜡烛的计算逻辑完全贴合标准Heikin Ashi定义,重启图表后应该能和TradingView通过ticker.heikinashi获取的结果完全匹配。
内容的提问来源于stack exchange,提问作者sey eeet
相关产品推荐
相关产品推荐

