关于Heikin Ashi Strategy V2脚本是否重绘的技术问询
Heikin Ashi Strategy V2脚本是否存在重绘问题?
我刚发现这款Heikin Ashi Strategy V2脚本,它在图表上的表现极佳,甚至好得令人难以置信,因此我怀疑它存在重绘问题。恳请各位帮忙判断该脚本是否会出现重绘现象。
//@version=2 //Heikin Ashi Strategy V2 by breizh29 strategy("Heikin Ashi Strategy V2",shorttitle="HAS V2",overlay=true,default_qty_value=1000,initial_capital=100000,currency=currency.EUR) res = input(title="Heikin Ashi Candle Time Frame", type=resolution, defval="60") hshift = input(1,title="Heikin Ashi Candle Time Frame Shift") res1 = input(title="Heikin Ashi EMA Time Frame", type=resolution, defval="180") mhshift = input(0,title="Heikin Ashi EMA Time Frame Shift") fama = input(1,"Heikin Ashi EMA Period") test = input(1,"Heikin Ashi EMA Shift") sloma = input(30,"Slow EMA Period") slomas = input(1,"Slow EMA Shift") macdf = input(false,title="With MACD filter") res2 = input(title="MACD Time Frame", type=resolution, defval="15") macds = input(1,title="MACD Shift") //Heikin Ashi Open/Close Price ha_t = heikinashi(tickerid) ha_open = security(ha_t, res, open[hshift]) ha_close = security(ha_t, res, close[hshift]) mha_close = security(ha_t, res1, close[mhshift]) //macd [macdLine, signalLine, histLine] = macd(close, 12, 26, 9) macdl = security(ha_t,res2,macdLine[macds]) macdsl= security(ha_t,res2,signalLine[macds]) //Moving Average fma = ema(mha_close[test],fama) sma = ema(ha_close[slomas],sloma) plot(fma,title="MA",color=lime,linewidth=2,style=line) plot(sma,title="SMA",color=red,linewidth=2,style=line) //Strategy golong = crossover(fma,sma) and (macdl > macdsl or macdf == false ) goshort = crossunder(fma,sma) and (macdl < macdsl or macdf == false ) strategy.entry("Buy",strategy.long,when = golong) strategy.entry("Sell",strategy.short,when = goshort)
结论与分析
这个脚本确实存在严重的重绘风险,核心原因如下:
- 未限制
security()的未来数据调用:Pine Script中security()函数默认启用前瞻模式,会使用当前未闭合的更高时间周期K线数据计算指标。脚本中所有security()调用都没有添加barmerge.lookahead_on=false参数,导致指标值会随着实时行情不断变动,信号反复生成或消失。 - Heikin Ashi K线的固有特性:Heikin Ashi K线的开盘、收盘价基于前一根K线和当前K线的平均计算得出,未闭合的Heikin Ashi K线数值会持续更新,进一步放大重绘问题。
- 指标依赖未确认数据:脚本中的EMA、MACD等核心交易信号指标,均基于未完全闭合的更高时间周期Heikin Ashi数据计算,这些指标值在K线运行过程中会不断变化,导致交易信号不稳定。
修复建议
要彻底解决重绘问题,需修改所有security()调用,添加barmerge.lookahead_on=false参数,强制仅使用已闭合的K线数据:
// 修改后的security调用示例 ha_open = security(ha_t, res, open[hshift], barmerge.lookahead_on=false) ha_close = security(ha_t, res, close[hshift], barmerge.lookahead_on=false) mha_close = security(ha_t, res1, close[mhshift], barmerge.lookahead_on=false) macdl = security(ha_t,res2,macdLine[macds], barmerge.lookahead_on=false) macdsl= security(ha_t,res2,signalLine[macds], barmerge.lookahead_on=false)
此外,建议验证所有基于Heikin Ashi数据的指标计算,确保仅使用已确认的历史数据,避免未来数据干扰信号稳定性。
内容的提问来源于stack exchange,提问作者Sabourifar
相关产品推荐
相关产品推荐

