Tradingview - 从Pine v2转换到v4时得到不同的图表。

问题描述 投票:0回答:1

几天来我一直在试图了解这个事件的奥秘。我有一个v2的脚本,我把它转换为v4,以便正确地测试策略,但转换给我不同的行和不同的结果。知道为什么吗?

V2脚本。

//// Calculate EMA values

symbolHigh1 = security(tickerid, tfMA1, high)
symbolLow1  = security(tickerid, tfMA1, low)

symbolHigh2 = security(tickerid, tfMA2, high)
symbolLow2  = security(tickerid, tfMA2, low)

maFibs = exponential1 ? ema(security(tickerid, tfMA1,FValue), maLength1) : sma(security(tickerid, tfMA1,FValue), maLength1)
ma2 = exponential2 ? ema(security(tickerid, tfMA2,ma2src), maLength2) : sma(security(tickerid, tfMA2,ma2src), maLength2)

V4

//// Calculate EMA values

symbolHigh1 = security(syminfo.tickerid, tfMA1, high)
symbolLow1 = security(syminfo.tickerid, tfMA1, low)

symbolHigh2 = security(syminfo.tickerid, tfMA2, high)
symbolLow2 = security(syminfo.tickerid, tfMA2, low)
symbolClose2 = security(syminfo.tickerid, tfMA2, close)

security_1 = security(syminfo.tickerid, tfMA1, FValue)
ema_1 = ema(security_1, maLength1)
security_2 = security(syminfo.tickerid, tfMA1, FValue)
sma_1 = sma(security_2, maLength1)
maFibs = exponential1 ? ema_1 : sma_1
security_3 = security(syminfo.tickerid, tfMA2, ma2src)
ema_2 = ema(security_3, maLength2)
security_4 = security(syminfo.tickerid, tfMA2, ma2src)
sma_2 = sma(security_4, maLength2)
ma2 = exponential2 ? ema_2 : sma_2
pine-editor
1个回答
0
投票

这是因为有变化的方式 security() 在v2和v3之间工作。过去在v1和v2中默认使用未来数据,现在不再如此,因为会产生不现实的结果。详情请看这里的usrman.

虽然v4的代码不会重现v2的行为,但这是件好事。

为了更有效率,你的代码应该是这样的。它将使用更少的 security() 调用。

//@version=4
study("")

[symbolHigh1, symbolLow1] = security(syminfo.tickerid, tfMA1, [high, low])
[symbolHigh2, symbolLow2, symbolClose2] = security(syminfo.tickerid, tfMA2, [high, low, close])

ema_1S = ema(close, maLength1)
sma_1S = sma(close, maLength1)
[ema_1, sma_1] = security(syminfo.tickerid, tfMA1, [ema_1S, sma_1S])
maFibs = exponential1 ? ema_1 : sma_1

-1
投票

同时,我设法得到与v2相同的结果(我最初的目标),通过添加 lookahead=barmerge.lookahead_on 为安全()。

© www.soinside.com 2019 - 2024. All rights reserved.