繁体   English   中英

Tradingview - PineScript - 将策略从 v2 转换为 v5 但结果不同

[英]Tradingview - PineScript - Convert Strategy from v2 to v5 but different outcome

因此,我通过 tradingview 将一个旧的 pine 脚本 v2 转换为 v5,一切正常,但是当我开始使用它时,它给了我一个与转换后的 v2 脚本不同的结果,. 输入、属性的设置相同,但结果不同。


版本=2

Based on Heikin Ashi Strategy v2 by breizh29
strategy("Heikin Ashi Strategy [Krypt]", shorttitle="HA Strategy [Krypt]", overlay=true)

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")
logtransform = input(false, "Log Transform")
stoploss = input(true, "Stop Loss")
showplots = input(true, "Show Plots")

ha_t = heikinashi(tickerid)
ha_close = security(ha_t, res, logtransform ? log(close[hshift]) : close[hshift])
mha_close = security(ha_t, res1, logtransform ? log(close[mhshift]) : close[mhshift])

fma = ema(mha_close[test], fama)
sma = ema(ha_close[slomas], sloma)

plot(showplots ? (logtransform ? exp(fma) : fma) : na, title="MA", color=#0094ff, linewidth=2, style=line)
plot(showplots ? (logtransform ? exp(sma) : sma) : na, title="SMA", color=#ff6a00, linewidth=2, style=line)

golong = crossover(fma, sma)
goshort = crossunder(fma, sma)

strategy.entry("Buy", strategy.long, when=golong, stop=(stoploss ? high+syminfo.mintick : na))
strategy.entry("Sell", strategy.short, when=goshort, stop=(stoploss ? low-syminfo.mintick : na))`


版本=5

Based on Heikin Ashi Strategy v2 by breizh29
strategy("Heikin Ashi Strategy [Krypt] Alert", shorttitle="HA Strategy [Krypt] Alert v5 script", overlay=true)

res = input(title="Heikin Ashi Candle Time Frame",defval="60")
hshift = input(1,title="Heikin Ashi Candle Time Frame Shift")
res1 = input(title="Heikin Ashi EMA Time Frame", 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")
logtransform = input(false, "Log Transform")
stoploss = input(true, "Stop Loss")
showplots = input(true, "Show Plots")

ha_t = ticker.heikinashi(syminfo.tickerid)
ha_close = request.security(ha_t, res, logtransform ? (close[hshift]) : close[hshift])
mha_close = request.security(ha_t, res1, logtransform ? (close[mhshift]) : close[mhshift])

fma = ta.ema(mha_close[test], fama)
sma = ta.ema(ha_close[slomas], sloma)

plot(showplots ? (logtransform ? fma : fma) : na, title="MA", color=#0094ff, linewidth=2)
plot(showplots ? (logtransform ? sma : sma) : na, title="SMA", color=#ff6a00, linewidth=2)

golong = ta.crossover(fma, sma)
goshort = ta.crossunder(fma, sma)

strategy.entry("Buy", strategy.long, when=golong, stop=(stoploss ? high+syminfo.mintick : na))
strategy.entry("Sell", strategy.short, when=goshort, stop=(stoploss ? low-syminfo.mintick : na))

V2 Pine 脚本V5 Pine 脚本

在我看来,大不同我改变了条件

V2

ha_close = security(ha_t, res, logtransform ? log(close[hshift]) : close[hshift])
mha_close = security(ha_t, res1, logtransform ? log(close[mhshift]) : close[mhshift])

V5

ha_close = request.security(ha_t, res, logtransform ? (close[hshift]) : close[hshift])
mha_close = request.security(ha_t, res1, logtransform ? (close[mhshift]) : close[mhshift])

如何将 v2 中的条件转换为 v5 并将 v5 转换为与 v2 Pine Script 相同的结果

安全 function 的默认行为从 v3 开始发生了变化

如果您想获得相同的结果,您应该将lookahead=barmerge.lookahead_on添加到您的security()调用中。

lookahead:它可以采用两个不同值的形式: barmerge.lookahead_off (这是 Pine Script™ version 3的默认值)或barmerge.lookahead_on (这是 Pine Script™ version 2的默认值)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM