Can somebody convert this Pine script into Power Language?

Questions about MultiCharts and user contributed studies.
TonyNg1689
Posts: 1
Joined: 26 Oct 2020
Has thanked: 3 times

Can somebody convert this Pine script into Power Language?

Postby TonyNg1689 » 26 Oct 2020

I am new user of Multicharts and using the Interactive Brokers for trading, TradingView also being used for technical indicator with "OBV MACD" , This code is written by RafaelZioni with Pine scripting language. Would somebody convert this Pine script into Power Language? Thanks you for all.


Code: Select all

//@version=4 study("OBV MACD Indicator",overlay=false) // MACD src1 = close window_len = 28 v_len = 14 price_spread = stdev(high-low, window_len) v = cum(sign(change(src1)) * volume) smooth = sma(v, v_len) v_spread = stdev(v - smooth, window_len) shadow = (v - smooth) / v_spread * price_spread out = shadow > 0 ? high + shadow : low + shadow //plot(out, style=line,linewidth=3, color=color) len10=input(1,title="OBV Length ") obvema=ema(out,len10) // src = obvema type = input(defval="DEMA", title="MA Type", options=["TDEMA", "TTEMA", "TEMA", "DEMA", "EMA", "AVG", "THMA", "ZLEMA", "ZLDEMA", "ZLTEMA", "DZLEMA", "TZLEMA", "LLEMA", "NMA"]) showma = true len = input(9, title="MA Length ") showma1 = false len1 = 26 showma2 =false len2 = 52 nma(src, length1, length2) => lambda = length1 / length2 alpha = lambda * (length1 - 1) / (length1 - lambda) ma1 = ema(src, length1) ma2 = ema(ma1, length2) nma = (1 + alpha) * ma1 - alpha * ma2 dema(src, len) => ma1 = ema(src, len) ma2 = ema(ma1, len) 2 * ma1 - ma2 tema(src, len) => ma1 = ema(src, len) ma2 = ema(ma1, len) ma3 = ema(ma2, len) 3 * (ma1 - ma2) + ma3 tdema(src, len) => ma1 = dema(src, len) ma2 = dema(ma1, len) ma3 = dema(ma2, len) 3 * (ma1 - ma2) + ma3 ttema(src, len) => ma1 = tema(src, len) ma2 = tema(ma1, len) ma3 = tema(ma2, len) 3 * (ma1 - ma2) + ma3 tnma(src, len) => ma1 = nma(src, len, 3) ma2 = nma(ma1, len, 3) ma3 = nma(ma2, len, 3) 3 * (ma1 - ma2) + ma3 hma(src, len) => wma(2*wma(src, len/2)-wma(src, len), round(sqrt(len))) thma(src, len) => ma1 = hma(src, len) ma2 = hma(ma1, len) ma3 = hma(ma2, len) 3 * (ma1 - ma2) + ma3 zlema(src, len) => lag = round((len - 1) / 2) zlsrc = src + (src - src[lag]) ema(zlsrc, len) zldema(src, len) => lag = round((len - 1) / 2) zlsrc = src + (src - src[lag]) dema(zlsrc, len) zltema(src, len) => lag = round((len - 1) / 2) zlsrc = src + (src - src[lag]) tema(zlsrc, len) dzlema(src, len) => ma1 = zlema(src, len) ma2 = zlema(ma1, len) 2 * ma1 - ma2 tzlema(src, len) => ma1 = zlema(src, len) ma2 = zlema(ma1, len) ma3 = zlema(ma2, len) 3 * (ma1 - ma2) + ma3 llema(src, len) => srcnew = 0.25*src + 0.5*src[1] + 0.25*src[2] ema(srcnew, len) lltema(src, len) => srcnew = 0.25*src + 0.5*src[1] + 0.25*src[2] tema(srcnew, len) myma(src, len) => if type == "EMA" ema(src, len) else if type == "DEMA" dema(src, len) else if type == "TEMA" tema(src, len) else if type == "TDEMA" tdema(src, len) else if type == "TTEMA" ttema(src, len) else if type == "THMA" thma(src, len) else if type == "ZLEMA" zlema(src, len) else if type == "ZLDEMA" zldema(src, len) else if type == "ZLTEMA" zltema(src, len) else if type == "DZLEMA" dzlema(src, len) else if type == "TZLEMA" tzlema(src, len) else if type == "LLEMA" llema(src, len) else if type == "NMA" nma(src, len, len1) else avg(ttema(src, len), tdema(src, len)) ma = showma ? myma(src, len) : na slow_length = input(title="MACD Slow Length", type=input.integer, defval=26) //signal_length = input(title="MACD Signal Smoothing", type=input.integer, minval = 1, maxval = 50, defval = 9) src12=close plot(0,linewidth=3,color=color.black) // Calculating MACD slow_ma = ema(src12, slow_length) macd =ma-slow_ma //signal_length=input(9) //signal = ema(macd, signal_length) //plot(signal,linewidth=2) src5 = macd len5 = input(2) offset = 0 calcSlope(src5, len5) => sumX = 0.0 sumY = 0.0 sumXSqr = 0.0 sumXY = 0.0 for i = 1 to len5 val = src5[len5-i] per = i + 1.0 sumX := sumX + per sumY := sumY + val sumXSqr := sumXSqr + per * per sumXY := sumXY + val * per slope = (len5 * sumXY - sumX * sumY) / (len5 * sumXSqr - sumX * sumX) average = sumY / len5 intercept = average - slope * sumX / len5 + slope [slope, average, intercept] var float tmp = na [s, a5, i] = calcSlope(src5, len5) tt1=(i + s * (len5 - offset)) ////script based on alex grover from https://www.tradingview.com/script/KzTi6CZP-T-Channels/ p = 1,src15=tt1 b5 = 0.,dev5 = 0.,oc = 0 n5 = cum(1) - 1 a15 = cum(abs(src15 - nz(b5[1],src15)))/n5*p b5 := src15 > nz(b5[1],src15) + a15 ? src15 : src15 < nz(b5[1],src15) - a15 ? src15 : nz(b5[1],src15) //---- dev5 := change(b5) ? a15 : nz(dev5[1],a15) //---- oc := change(b5) > 0 ? 1 : change(b5) < 0 ? -1 : nz(oc[1]) //---- cs = oc == 1 ? color.blue : color.red //change(oc)>0 plot(b5,color=cs,linewidth=4,transp=50) // down = change(oc)<0 up = change(oc)>0 showsignal=input(false) plot(showsignal and up ?tt1 :na, style=plot.style_cross, color=color.blue, linewidth=4, transp=0,offset=-1) plot(showsignal and down ?tt1 :na, style=plot.style_cross, color=color.red, linewidth=4, transp=0,offset=-1) //hist = macd - signal //barColor =hist >= 0 and hist> signal ? color.teal : hist > 0 and hist < signal ? color.lime : hist < 0 and hist < signal ? color.red : color.orange //plot(hist, color=barColor, style=plot.style_histogram, linewidth=3) upper = tt1 lower = tt1 // DIVS code piv = input(true, "Hide pivots?") shrt = false xbars = input(50, "period", input.integer, minval=1) hb = abs(highestbars(upper, xbars)) lb = abs(lowestbars(lower, xbars)) max = float(na) max_upper = float(na) min = float(na) min_lower = float(na) pivoth = bool(na) pivotl = bool(na) max := hb == 0 ? close : na(max[1]) ? close : max[1] max_upper := hb == 0 ? upper : na(max_upper[1]) ? upper : max_upper[1] min := lb == 0 ? close : na(min[1]) ? close : min[1] min_lower := lb == 0 ? lower : na(min_lower[1]) ? lower : min_lower[1] if close > max max := close max if upper > max_upper max_upper := upper max_upper if close < min_lower min_lower := lower min_lower if lower < min_lower min_lower := lower min_lower pivoth := max_upper == max_upper[2] and max_upper[2] != max_upper[3] ? true : na pivotl := min_lower == min_lower[2] and min_lower[2] != min_lower[3] ? true : na plotshape(piv ? na : shrt ? na : pivoth ? max_upper + 2 : na, location=location.absolute, style=shape.labeldown, color=color.red, size=size.tiny, text="Pivot", textcolor=color.white, transp=0, offset=0) plotshape(piv ? na : shrt ? na : pivotl ? min_lower - 2 : na, location=location.absolute, style=shape.labelup, color=color.blue, size=size.tiny, text="Pivot", textcolor=color.white, transp=0, offset=0)
Attachments
bandicam 2020-10-27 16-48-55-218.jpg
Indicator sample
(155.98 KiB) Not downloaded yet
Last edited by TonyNg1689 on 27 Oct 2020, edited 1 time in total.

User avatar
TJ
Posts: 7740
Joined: 29 Aug 2006
Location: Global Citizen
Has thanked: 1033 times
Been thanked: 2221 times

Re: Can somebody convert this Pine script into Power Language?

Postby TJ » 26 Oct 2020

See posts #1 & #2
1. [FAQ] How to Post Codes . . . so that people can read.
viewtopic.php?t=11713

User avatar
TJ
Posts: 7740
Joined: 29 Aug 2006
Location: Global Citizen
Has thanked: 1033 times
Been thanked: 2221 times

Re: Can somebody convert this Pine script into Power Language?

Postby TJ » 26 Oct 2020

Please see post #8
viewtopic.php?t=11713

User avatar
JoshM
Posts: 2195
Joined: 20 May 2011
Location: The Netherlands
Has thanked: 1544 times
Been thanked: 1565 times
Contact:

Re: Can somebody convert this Pine script into Power Language?

Postby JoshM » 27 Oct 2020

I know a lot about Pine Script so I'd be happy to help if you have specific questions about turning Pine code into the MultiCharts equivalent.

Unfortunately converting all of that code by myself is a too big of ask on my free time.


Return to “MultiCharts”