0

So I was converting an old pine script v2 via on tradingview to v5 which all worked fine but when I came to use it, it gave me a different result to the v2 script once converted, . Same setting on input, properties but different result.


version=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))`


version=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

In my opinion, big different i changed condition

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])

How to keep condition in v2 convert to v5 And v5 to same result to v2 Pine Script

1 Answers1

0

The default behavior of the security function has changed starting from v3.

If you want to achieve the same results, you should add lookahead=barmerge.lookahead_on to your security() call.

lookahead: It can take on the form of two different values: barmerge.lookahead_off (and this is the default for Pine Scriptâ„¢ version 3) or barmerge.lookahead_on (which is the default for Pine Scriptâ„¢ version 2).

vitruvius
  • 15,740
  • 3
  • 16
  • 26