相同的代码,v2 和 v3 中的结果不同

The same code, different results in v2 and v3

我尝试将脚本从 v2 迁移到 v3 PineScript。然而,事实证明,在 v3 中,相同的代码 returns 不同的值。这怎么可能,我做错了什么?您可以在下面找到此脚本的代码。

图表上是这样的 https://www.tradingview.com/x/itg3HS0T/?

测试 1 - v2,绿色,灰色线条 Test2 - v3,粉色,蓝色线条

提前感谢您的帮助!:)

//@version=2

study("Test2",overlay=true)

long_timeframe = input(title="Long timeframe", type=resolution, defval="180")
short_timeframe = input(title="Long timeframe", type=resolution, defval="60")

step_shift = input(0,"Step Shift")


ha_symbol = heikinashi(tickerid)
long_ha_close = security(ha_symbol, long_timeframe, hlc3)
short_ha_close = security(ha_symbol, short_timeframe, hlc3)


long_step = ema(long_ha_close[step_shift],1)
short_step = ema(short_ha_close[step_shift],1)

plot(long_step,title="LongStep",color=white,linewidth=2,style=line)
plot(short_step,title="ShortStep",color=silver,linewidth=2,style=line)

区别是因为security()函数的lookahead参数在v2中默认值为on,在v3中默认值为off,所以需要设置它在 v3.

中显式 on
//@version=3

study("Test3",overlay=true)

long_timeframe = input(title="Long timeframe", type=resolution, defval="180")
short_timeframe = input(title="Long timeframe", type=resolution, defval="60")

step_shift = input(0,"Step Shift")


ha_symbol = heikinashi(tickerid)
// These 2 lines yield same result as v2 version of the script.
long_ha_close = security(ha_symbol, long_timeframe, hlc3, lookahead=barmerge.lookahead_on)
short_ha_close = security(ha_symbol, short_timeframe, hlc3, lookahead=barmerge.lookahead_on)
// To avoid repainting, these 2 lines are preferable.
// long_ha_close = security(ha_symbol, long_timeframe, hlc3[1], lookahead=barmerge.lookahead_on)
// short_ha_close = security(ha_symbol, short_timeframe, hlc3[1], lookahead=barmerge.lookahead_on)


long_step = ema(long_ha_close[step_shift],1)
short_step = ema(short_ha_close[step_shift],1)

plot(long_step,title="LongStep",color=aqua,linewidth=2,style=line)
plot(short_step,title="ShortStep",color=fuchsia,linewidth=2,style=line)