Convert from Pine Script to MQ4L

MQL4 Convertir

Tâche terminée

Temps d'exécution 4 jours
Commentaires de l'employé
Good customer. kind and correct!!!

Spécifications

//convert rainbow indicator


//@version=4


study("Shanky HB", overlay=true)

show_Baseline = input(title="Show Baseline", type=input.bool, defval=true)

show_SZ = input(title="Show SZ", type=input.bool, defval=false)

show_atr = input(title="Show ATR bands", type=input.bool, defval=true)

//ATR

atrlen = input(14, "ATR Period")

mult = input(1, "ATR Multi", step=0.1)

smoothing = input(title="ATR Smoothing", defval="WMA", options=["RMA", "SMA", "EMA", "WMA"])


ma_function(source, atrlen) => 

    if smoothing == "RMA"

        rma(source, atrlen)

    else

        if smoothing == "SMA"

            sma(source, atrlen)

        else

            if smoothing == "EMA"

                ema(source, atrlen)

            else

                wma(source, atrlen)

atr_slen = ma_function(tr(true), atrlen)

////ATR Up/Low Bands

upper_band = atr_slen * mult + close

lower_band = close - atr_slen * mult


////BASELINE / SZ / SX / EXIT MOVING AVERAGE VALUES

maType = input(title="SZ / Baseline Type", type=input.string, defval="HMA", options=["SMA","EMA","DEMA","TEMA","LSMA","WMA","MF","VAMA","TMA","HMA", "JMA", "Kijun v2", "EDSMA","McGinley"])

len = input(title="SZ / Baseline Length", defval=60)


SXType = input(title="SX / Continuation Type", type=input.string, defval="JMA", options=["SMA","EMA","DEMA","TEMA","WMA","MF","VAMA","TMA","HMA", "JMA","McGinley"])

len2 = input(title="SX Length", defval=5)

//

SSL3Type = input(title="EXIT Type", type=input.string, defval="HMA", options=["DEMA","TEMA","LSMA","VAMA","TMA","HMA","JMA", "Kijun v2", "McGinley", "MF"])

len3 = input(title="EXIT Length", defval=15)

src = input(title="Source", type=input.source, defval=close)


//

tema(src, len) =>

    ema1 = ema(src, len)

    ema2 = ema(ema1, len)

    ema3 = ema(ema2, len)

    (3 * ema1) - (3 * ema2) + ema3

kidiv = input(defval=1,maxval=4,  title="Kijun MOD Divider")


jurik_phase = input(title="* Jurik (JMA) Only - Phase", type=input.integer, defval=3)

jurik_power = input(title="* Jurik (JMA) Only - Power", type=input.integer, defval=1)

volatility_lookback = input(10, title="* Volatility Adjusted (VAMA) Only - Volatility lookback length")

//MF

beta = input(0.8,minval=0,maxval=1,step=0.1,  title="Modular Filter, General Filter Only - Beta")

feedback = input(false, title="Modular Filter Only - Feedback")

z = input(0.5,title="Modular Filter Only - Feedback Weighting",step=0.1, minval=0, maxval=1)

//EDSMA

ssfLength = input(title="EDSMA - Super Smoother Filter Length", type=input.integer, minval=1, defval=20)

ssfPoles = input(title="EDSMA - Super Smoother Filter Poles", type=input.integer, defval=2, options=[2, 3])


//----


//EDSMA

get2PoleSSF(src, length) =>

    PI = 2 * asin(1)

    arg = sqrt(2) * PI / length

    a1 = exp(-arg)

    b1 = 2 * a1 * cos(arg)

    c2 = b1

    c3 = -pow(a1, 2)

    c1 = 1 - c2 - c3

    

    ssf = 0.0

    ssf := c1 * src + c2 * nz(ssf[1]) + c3 * nz(ssf[2])


get3PoleSSF(src, length) =>

    PI = 2 * asin(1)


    arg = PI / length

    a1 = exp(-arg)

    b1 = 2 * a1 * cos(1.738 * arg)

    c1 = pow(a1, 2)


    coef2 = b1 + c1

    coef3 = -(c1 + b1 * c1)

    coef4 = pow(c1, 2)

    coef1 = 1 - coef2 - coef3 - coef4


    ssf = 0.0

    ssf := coef1 * src + coef2 * nz(ssf[1]) + coef3 * nz(ssf[2]) + coef4 * nz(ssf[3])


ma(type, src, len) =>

    float result = 0

    if type=="TMA"

        result := sma(sma(src, ceil(len / 2)), floor(len / 2) + 1)

    if type=="MF"

        ts=0.,b=0.,c=0.,os=0.

        //----

        alpha = 2/(len+1)

        a = feedback ? z*src + (1-z)*nz(ts[1],src) : src

        //----

        b := a > alpha*a+(1-alpha)*nz(b[1],a) ? a : alpha*a+(1-alpha)*nz(b[1],a)

        c := a < alpha*a+(1-alpha)*nz(c[1],a) ? a : alpha*a+(1-alpha)*nz(c[1],a)

        os := a == b ? 1 : a == c ? 0 : os[1]

        //----

        upper = beta*b+(1-beta)*c

        lower = beta*c+(1-beta)*b 

        ts := os*upper+(1-os)*lower

        result := ts

    if type=="LSMA"

        result := linreg(src, len, 0)

    if type=="SMA" // Simple

        result := sma(src, len)

    if type=="EMA" // Exponential

        result := ema(src, len)

    if type=="DEMA" // Double Exponential

        e = ema(src, len)

        result := 2 * e - ema(e, len)

    if type=="TEMA" // Triple Exponential

        e = ema(src, len)

        result := 3 * (e - ema(e, len)) + ema(ema(e, len), len)

    if type=="WMA" // Weighted

        result := wma(src, len)

    if type=="VAMA" // Volatility Adjusted

        /// Copyright © 2019 to present, Joris Duyck (JD)

        mid=ema(src,len)

        dev=src-mid

        vol_up=highest(dev,volatility_lookback)

        vol_down=lowest(dev,volatility_lookback)

        result := mid+avg(vol_up,vol_down)

    if type=="HMA" // Hull

        result := wma(2 * wma(src, len / 2) - wma(src, len), round(sqrt(len)))

    if type=="JMA" // Jurik

        /// Copyright © 2018 Alex Orekhov (everget)

        /// Copyright © 2017 Jurik Research and Consulting.

        phaseRatio = jurik_phase < -100 ? 0.5 : jurik_phase > 100 ? 2.5 : jurik_phase / 100 + 1.5

        beta = 0.45 * (len - 1) / (0.45 * (len - 1) + 2)

        alpha = pow(beta, jurik_power)

        jma = 0.0

        e0 = 0.0

        e0 := (1 - alpha) * src + alpha * nz(e0[1])

        e1 = 0.0

        e1 := (src - e0) * (1 - beta) + beta * nz(e1[1])

        e2 = 0.0

        e2 := (e0 + phaseRatio * e1 - nz(jma[1])) * pow(1 - alpha, 2) + pow(alpha, 2) * nz(e2[1])

        jma := e2 + nz(jma[1])

        result := jma

    if type=="Kijun v2"

        kijun = avg(lowest(len), highest(len))//, (open + close)/2)

        conversionLine = avg(lowest(len/kidiv), highest(len/kidiv))

        delta = (kijun + conversionLine)/2

        result :=delta

    if type=="McGinley"

        mg = 0.0

        mg := na(mg[1]) ? ema(src, len) : mg[1] + (src - mg[1]) / (len * pow(src/mg[1], 4))

        result :=mg

    if type=="EDSMA"

    

        zeros = src - nz(src[2])

        avgZeros = (zeros + zeros[1]) / 2

        

        // Ehlers Super Smoother Filter 

        ssf = ssfPoles == 2

             ? get2PoleSSF(avgZeros, ssfLength)

             : get3PoleSSF(avgZeros, ssfLength)

        

        // Rescale filter in terms of Standard Deviations

        stdev = stdev(ssf, len)

        scaledFilter = stdev != 0

             ? ssf / stdev

             : 0

        

        alpha = 5 * abs(scaledFilter) / len

        

        edsma = 0.0

        edsma := alpha * src + (1 - alpha) * nz(edsma[1])

        result :=  edsma

    result

    

///SSL 1 and SX

emaHigh = ma(maType, high, len)

emaLow = ma(maType, low, len)


maHigh = ma(SXType, high, len2)

maLow = ma(SXType, low, len2)


///EXIT

ExitHigh = ma(SSL3Type, high, len3)

ExitLow = ma(SSL3Type, low, len3)


///Keltner Baseline Channel

BBMC = ma(maType, close, len)

useTrueRange = input(true)

multy = input(0.2, step=0.05, title="Base Channel Multiplier")

Keltma = ma(maType, src, len)

range = useTrueRange ? tr : high - low

rangema = ema(range, len)

upperk =Keltma + rangema * multy

lowerk = Keltma - rangema * multy


//Baseline Violation Candle

open_pos =  open*1

close_pos = close*1

difference = abs(close_pos-open_pos)

atr_violation = difference > atr_slen

InRange = upper_band > BBMC and lower_band < BBMC

candlesize_violation = atr_violation and InRange

plotshape(candlesize_violation, color=color.white, size=size.tiny,style=shape.diamond, location=location.top, transp=0,title="Candle Size > 1xATR")



//SZ VALUES

Hlv = int(na)

Hlv := close > emaHigh ? 1 : close < emaLow ? -1 : Hlv[1]

sslDown = Hlv < 0 ? emaHigh : emaLow


//SX VALUES

Hlv2 = int(na)

Hlv2 := close > maHigh ? 1 : close < maLow ? -1 : Hlv2[1]

sslDown2 = Hlv2 < 0 ? maHigh : maLow


//EXIT VALUES

Hlv3 = int(na)

Hlv3 := close > ExitHigh ? 1 : close < ExitLow ? -1 : Hlv3[1]

sslExit = Hlv3 < 0 ? ExitHigh : ExitLow

base_cross_Long = crossover(close, sslExit)

base_cross_Short = crossover(sslExit, close)

codiff = base_cross_Long ? 1 : base_cross_Short ? -1 : na 


//COLORS

show_color_bar = input(title="Color Bars", type=input.bool, defval=true)

color_bar = close > upperk ? #00E113 : close < lowerk ? #E16024 : color.gray

color_SZ = close > sslDown ? #00E113 : close < sslDown ? #E16024 : na


//PLOTS

plotarrow(codiff, colorup=#00E113, colordown=#E16024,title="Exit Arrows", transp=20, maxheight=20, offset=0)

p1 = plot(show_Baseline ? BBMC : na, color=color_bar, linewidth=4,transp=0, title='MA Baseline')

DownPlot = plot( show_SZ ? sslDown : na, title="SZ", linewidth=3, color=color_SZ, transp=10)

barcolor(show_color_bar ? color_bar : na)

up_channel = plot(show_Baseline ? upperk : na, color=color_bar, title="Baseline Upper Channel")

low_channel = plot(show_Baseline ? lowerk : na, color=color_bar, title="Basiline Lower Channel")

fill(up_channel, low_channel, color=color_bar, transp=90)


////SX Continiuation from ATR

atr_crit = input(0.9, step=0.1, title="Continuation ATR Criteria")

upper_half = atr_slen * atr_crit + close

lower_half = close - atr_slen * atr_crit

buy_inatr =  lower_half < sslDown2

sell_inatr = upper_half > sslDown2

sell_cont = close < BBMC and close < sslDown2

buy_cont = close > BBMC and close > sslDown2

sell_atr = sell_inatr and sell_cont

buy_atr = buy_inatr and buy_cont

atr_fill = buy_atr ? color.green : sell_atr ? color.purple : color.white

LongPlot = plot(sslDown2, title="SX", linewidth=2, color=atr_fill, style=plot.style_circles, transp=0)

u = plot(show_atr ? upper_band : na, "+ATR", color=color.white, transp=80)

l = plot(show_atr ? lower_band : na, "-ATR", color=color.white, transp=80)


//ALERTS

alertcondition(crossover(close, sslDown), title='SSL Cross Alert', message='SZ has crossed.')

alertcondition(crossover(close, sslDown2), title='SX Cross Alert', message='SX has crossed.')

alertcondition(sell_atr, title='Sell Continuation', message='Sell Continuation.')

alertcondition(buy_atr, title='Buy Continuation', message='Buy Continuation.')

alertcondition(crossover(close, sslExit), title='Exit Sell', message='Exit Sell Alert.')

alertcondition(crossover(sslExit, close), title='Exit Buy', message='Exit Buy Alert.')

alertcondition(crossover(close, upperk ), title='Baseline Buy Entry', message='Base Buy Alert.')

alertcondition(crossover(lowerk, close ), title='Baseline Sell Entry', message='Base Sell Alert.')

Dossiers :

Répondu

1
Développeur 1
Évaluation
Projets
0
0%
Arbitrage
0
En retard
0
Gratuit
2
Développeur 2
Évaluation
(126)
Projets
160
36%
Arbitrage
4
25% / 50%
En retard
13
8%
Gratuit
Commandes similaires
Hello, I am looking for someone to convert my well defined MQL4 code project to MQL5 (EAs) A brief description of my current strategy: MT4 'Spreadsheet' EA collects data from 28 FX currency pairs -> sends it to Excel, then Excel calculates and makes a decision -> Excel sends a signal to MT4 'Trading' EA and manages trades I want the MT4 EA to be converted into MT5. For Back testing purposes, I want to withdraw from
hi. I hv a strategy on tradingview need to convert to MT4/MT5 expert advisor for algo trading. would like to add some tradingview strategy setting to the EA(not included in my tradingview code): recalculate after order is filled, order size: xx% of equity
Hi, I would like the HARSI RSI indicator from TradingView (link below) converted to MT4: Heikin-Ashi RSI Oscillator on TradingView It appears that Mr. Tools from Forex Station has already created an MT4 version of this indicator. I've included the reference indicator here: !!rsi - heiken ashi averages smoothed (mtf + sw + alerts + arrows). I don't need the divergence settings in the indicator. I only need the
I need an expert to convert a TradeStation script over to pine please let me know if this is something you can do perfectly. I will be expecting your message. thanks
I need an expert to convert a TradeStation script over to pine please let me know if this is something you can do perfectly. I will be expecting your message. thanks
Hello, I have indicators for tradestation written in easylanguage and I need them in tradingview pinescript. So I need someone to convert these tradestation indicators to tradingview. Do you think you can help me with that
Dear Freelancers, I'm seeking a skilled MT4/MT5 developer to collaborate on a valuable trading indicator. Project Description: I'm looking to develop a powerful Elliott Wave indicator compatible with the MT4 and MT5 trading platforms. This indicator will be based on the highly successful [LuxAlgo] indicator currently available on TradingView. Key Features: In-indicator Alerts: The ability to receive pop-up
I am currently seeking a highly skilled developer for an important project. I need a professional developer to convert an Indicator to tradingview on MT4. If you are highly skilled and capable of handling this project, kindly reach out now
I HAVE A EX4 FILE,I NEED TO CONVERT THE EX5 FILE AS A EXPERT ADVISOR, I WANT SAME INPUT OF EX4. I ATTACHED MY EX4 FILE WITHHERE. PLS CONVERT THE SAME INPUT TO EX5. Thanks
Hello there, I'm looking for an experienced developer to convert a TradingView indicator script into an MT4 (MetaTrader 4) compatible format. The script, written in Pine Script version 5, includes custom indicators and graphical elements such as lines, boxes, and labels that we need to be accurately replicated in MT4. Check the attached file below

Informations sur le projet

Budget
60+ USD
Pour le développeur
54 USD
Délais
de 2 à 4 jour(s)