【问题标题】:Tradingview - PineScript - Convert Strategy from v2 to v5 but different outcomeTradingview - PineScript - 将策略从 v2 转换为 v5 但结果不同
【发布时间】:2022-11-22 01:04:09
【问题描述】:

因此,我通过 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 Script V5 Pine Script

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

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 的结果相同

【问题讨论】:

    标签: pine-script pinescript-v5


    【解决方案1】:

    从 v3 开始,安全功能的默认行为为 changed

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

    展望:它可以采用两种不同的值形式:barmerge.lookahead_off(这是 Pine Script™ 的默认设置版本 3) 或者barmerge.lookahead_on(这是 Pine 的默认设置 脚本™版本 2).

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-12-05
      • 2021-09-08
      • 1970-01-01
      • 2022-06-20
      • 1970-01-01
      • 1970-01-01
      • 2023-01-29
      • 1970-01-01
      相关资源
      最近更新 更多