Re: Already Converted TradingView Indicators to MT4 Indicators
201SSL Channel
Also check out "SSL fast nrp + atr bands (alerts).mq4" over here:
viewtopic.php?p=1295398334#p1295398334
Attachments
Code: Select all
/@version=4
study("The Echo Forecast [LUX]","ECHO [LuxAlgo]",overlay=true,max_bars_back=1000,max_lines_count=200)
length = input(50,'Evaluation Window',minval=0,maxval=200)
fcast = input(50,'Forecast Window',minval=1,maxval=200)
fmode = input('Similarity','Forecast Mode',options=['Similarity','Dissimilarity'])
cmode = input('Cumulative','Forecast Construction',options=['Cumulative','Mean','Linreg'])
src = input(close)
fcast_col = input(#2157f3,'Forecast Style',inline='fcast_style',group='Style')
fcast_style = input('· · ·','',options=['──','- - -','· · ·'],inline='fcast_style',group='Style')
show_area = input(true,'Show Area',inline='areas',group='Style')
fcast_area = input(color.new(#ff5d00,50),'',inline='areas',group='Style')
corr_area = input(color.new(#0cb51a,50),'',inline='areas',group='Style')
eval_area = input(color.new(color.gray,50),'',inline='areas',group='Style')
//----
var lines = array.new_line(0)
if barstate.isfirst
for i = 0 to fcast-1
array.push(lines,line.new(na,na,na,na))
//----
n = bar_index
d = change(src)
top = highest(src,length+fcast*2)
btm = lowest(src,length+fcast*2)
if barstate.islast
float val = na
k = 0
A = array.new_float(0)
X = array.new_int(0)
for i = 0 to fcast*2+length
array.push(A,src[i])
if cmode == 'Linreg'
array.push(X,n[i])
a = array.slice(A,0,fcast-1)
for i = 0 to length-1
b = array.slice(A,fcast+i,fcast*2+i-1)
r = array.covariance(a,b)/(array.stdev(a)*array.stdev(b))
if fmode == 'Similarity'
val := r >= nz(val,r) ? r : val
else
val := r <= nz(val,r) ? r : val
k := val == r ? i : k
prev = src
current = src
for i = 0 to fcast-1
e = d[fcast+k+(fcast-i-1)]
if cmode == 'Mean'
current := array.avg(a) + e
else if cmode == 'Linreg'
a = array.slice(A,0,fcast)
x = array.slice(X,0,fcast)
alpha = array.covariance(a,x)/array.variance(x)
beta = array.avg(a) - alpha*array.avg(x)
current := alpha*(n+i+1) + beta + e
else
current += e
l = array.get(lines,i)
line.set_xy1(l,n+i,prev)
line.set_xy2(l,n+i+1,current)
line.set_color(l,fcast_col)
if fcast_style == '- - -'
line.set_style(l,line.style_dashed)
else if fcast_style == '· · ·'
line.set_style(l,line.style_dotted)
prev := current
if show_area
box.delete(box.new(n-length-fcast*2+1,top,n-fcast+1,btm,
border_color=na,
bgcolor=eval_area)[1])
box.delete(box.new(n-fcast+1,top,n,btm,
border_color=na,
bgcolor=fcast_area)[1])
box.delete(box.new(n-k-fcast*2+1,btm,n-k-fcast,top,
border_color=na,
bgcolor=corr_area)[1])
This seems a very interesting indicator too. Here you have a video of how to use it:sal wrote: Sun Dec 25, 2022 3:55 pm hi mr.tools/Jimmy & Kvak
Wish you a merry Christmas
i find a good indi and code below .. this box indicator and forcast prediction will helps the trend . possible to convert this or similiar have in mt4!!, please share
/Code: Select all
/@version=4 study("The Echo Forecast [LUX]","ECHO [LuxAlgo]",overlay=true,max_bars_back=1000,max_lines_count=200) length = input(50,'Evaluation Window',minval=0,maxval=200) fcast = input(50,'Forecast Window',minval=1,maxval=200) fmode = input('Similarity','Forecast Mode',options=['Similarity','Dissimilarity']) cmode = input('Cumulative','Forecast Construction',options=['Cumulative','Mean','Linreg']) src = input(close) fcast_col = input(#2157f3,'Forecast Style',inline='fcast_style',group='Style') fcast_style = input('· · ·','',options=['──','- - -','· · ·'],inline='fcast_style',group='Style') show_area = input(true,'Show Area',inline='areas',group='Style') fcast_area = input(color.new(#ff5d00,50),'',inline='areas',group='Style') corr_area = input(color.new(#0cb51a,50),'',inline='areas',group='Style') eval_area = input(color.new(color.gray,50),'',inline='areas',group='Style') //---- var lines = array.new_line(0) if barstate.isfirst for i = 0 to fcast-1 array.push(lines,line.new(na,na,na,na)) //---- n = bar_index d = change(src) top = highest(src,length+fcast*2) btm = lowest(src,length+fcast*2) if barstate.islast float val = na k = 0 A = array.new_float(0) X = array.new_int(0) for i = 0 to fcast*2+length array.push(A,src[i]) if cmode == 'Linreg' array.push(X,n[i]) a = array.slice(A,0,fcast-1) for i = 0 to length-1 b = array.slice(A,fcast+i,fcast*2+i-1) r = array.covariance(a,b)/(array.stdev(a)*array.stdev(b)) if fmode == 'Similarity' val := r >= nz(val,r) ? r : val else val := r <= nz(val,r) ? r : val k := val == r ? i : k prev = src current = src for i = 0 to fcast-1 e = d[fcast+k+(fcast-i-1)] if cmode == 'Mean' current := array.avg(a) + e else if cmode == 'Linreg' a = array.slice(A,0,fcast) x = array.slice(X,0,fcast) alpha = array.covariance(a,x)/array.variance(x) beta = array.avg(a) - alpha*array.avg(x) current := alpha*(n+i+1) + beta + e else current += e l = array.get(lines,i) line.set_xy1(l,n+i,prev) line.set_xy2(l,n+i+1,current) line.set_color(l,fcast_col) if fcast_style == '- - -' line.set_style(l,line.style_dashed) else if fcast_style == '· · ·' line.set_style(l,line.style_dotted) prev := current if show_area box.delete(box.new(n-length-fcast*2+1,top,n-fcast+1,btm, border_color=na, bgcolor=eval_area)[1]) box.delete(box.new(n-fcast+1,top,n,btm, border_color=na, bgcolor=fcast_area)[1]) box.delete(box.new(n-k-fcast*2+1,btm,n-k-fcast,top, border_color=na, bgcolor=corr_area)[1])
Hahaha, it turns out that a friend has already posted it.hache wrote: Tue Dec 27, 2022 7:52 am This seems a very interesting indicator too. Here you have a video of how to use it:
Code: Select all
// © Lai_Thanh_Trung
//@version=5
indicator(shorttitle='Bagang Pivot Zones', title='Bagang Pivot Zones | Supply & Demand, Support & Resistance', overlay=true)
// functions
get(arr, index) =>
index < array.size(arr) ? array.get(arr, index) : na
busted(highs, lows, times, bounces) =>
array.shift(highs)
array.shift(lows)
array.shift(times)
array.shift(bounces) or true
bounced(bounces) =>
status = array.get(bounces, 0)
array.set(bounces, 0, true)
status
// A. CORE
ceiling = math.max(high, close[1], open[1])
floor = math.min(low, close[1], open[1])
buying = close >= open and high != low
selling = close <= open and low != high
green = close > open and close > close[1]
red = close < open and close < close[1]
gapup = open > close[1]
gapdown = open < close[1]
higher = high > high[1]
lower = low < low[1]
bullish = green and higher
bearish = red and lower
// notable price actions
bullishEngulf = selling[1] and (gapdown or lower) and bullish and close > open[1]
bearishEngulf = buying[1] and (gapup or higher) and bearish and close < open[1]
breakHigh = (selling[2] or selling[1]) and buying and close > ceiling[1]
breakLow = (buying[2] or buying[1]) and selling and close < floor[1]
whiteSoldiers = bearish[3] and buying[2] and bullish[1] and bullish and close > high[3]
blackCrows = bullish[3] and selling[2] and bearish[1] and bearish and close < low[3]
// pivot setups
soaring = bullishEngulf or breakHigh or whiteSoldiers
tumbling = bearishEngulf or breakLow or blackCrows
reversal = switch
whiteSoldiers => not soaring[1] and not soaring[2]
blackCrows => not tumbling[1] and not tumbling[2]
breakHigh => not soaring[1] and (bearish[1] or bearish[2])
breakLow => not tumbling[1] and (bullish[1] or bullish[2])
continuation = switch
breakHigh => bullish[2] and close > high[2] and not bearish[1]
breakLow => bearish[2] and close < low[2] and not bullish[1]
engulfing = (bullishEngulf or bearishEngulf) and (higher[1] or lower[1])
// B. PIVOT ZONES
var buyzoneHigh = array.new_float(0)
var buyzoneLow = array.new_float(0)
var buyzoneTime = array.new_int(0)
var bounceUp = array.new_bool(0)
var sellzoneHigh = array.new_float(0)
var sellzoneLow = array.new_float(0)
var sellzoneTime = array.new_int(0)
var bounceDown = array.new_bool(0)
// 1. Broken Pivot Zones
brokenHigh = while get(sellzoneHigh, 0) < high
busted(sellzoneHigh, sellzoneLow, sellzoneTime, bounceDown)
brokenLow = while get(buyzoneLow, 0) > low
busted(buyzoneHigh, buyzoneLow, buyzoneTime, bounceUp)
// 2. Distribution/Accumulation Bar and Pivot Bar
upturn = soaring and (reversal or continuation or engulfing)
downturn = tumbling and (reversal or continuation or engulfing)
dacbar = switch
upturn => whiteSoldiers ? 3 : (breakHigh and selling[2] ? 2 : 1)
downturn => blackCrows ? 3 : (breakLow and buying[2] ? 2 : 1)
pivotbar = switch
upturn => whiteSoldiers ? 2 : (green[1] ? 1 : 0)
downturn => blackCrows ? 2 : (red[1] ? 1 : 0)
// 3. Pivot Zone Values
pzHigh = float(na)
pzLow = float(na)
switch
upturn =>
// low at wick
pzLow := math.min(low[dacbar], low[pivotbar], low[1], low)
// high at wick or open
pzHigh := switch
close[pivotbar] > high[dacbar] => high[dacbar]
open[pivotbar] > open[dacbar] => open[pivotbar]
=> open[dacbar]
downturn =>
// high at wick
pzHigh := math.max(high[dacbar], high[pivotbar], high[1], high)
// low at wick or open
pzLow := switch
close[pivotbar] < low[dacbar] => low[dacbar]
open[pivotbar] < open[dacbar] => open[pivotbar]
=> open[dacbar]
// 4. Overlapping Pivot Zones
overlap = switch
upturn => get(buyzoneHigh, 0) >= pzLow
downturn => get(sellzoneLow, 0) <= pzHigh
replace = switch
overlap and upturn => bounced(bounceUp)
overlap and downturn => bounced(bounceDown)
// remove replaced zone or adjust overlapped zone
switch
replace and upturn => busted(buyzoneHigh, buyzoneLow, buyzoneTime, bounceUp)
replace and downturn => busted(sellzoneHigh, sellzoneLow, sellzoneTime, bounceDown)
overlap and upturn => array.set(buyzoneHigh, 0, pzLow)
overlap and downturn => array.set(sellzoneLow, 0, pzHigh)
// 5. Pivot Zones Queue
switch
upturn =>
array.unshift(buyzoneHigh, pzHigh)
array.unshift(buyzoneLow, pzLow)
array.unshift(buyzoneTime, time[dacbar])
array.unshift(bounceUp, false)
downturn =>
array.unshift(sellzoneHigh, pzHigh)
array.unshift(sellzoneLow, pzLow)
array.unshift(sellzoneTime, time[dacbar])
array.unshift(bounceDown, false)
// 6. Pivot Zones Markup
maxbox(redraw) => redraw ? 22 : na
newbox(bg) =>
box.new(0, 0, 0, 0, xloc=xloc.bar_time, border_color=na, bgcolor=bg, extend=extend.right)
render(boxes, index, highs, lows, times) =>
ibox = get(boxes, index)
top = get(highs, index)
bottom = get(lows, index)
left = get(times, index)
overlapped = if index > 0
lastbox = index - 1
top == get(lows, lastbox) or bottom == get(highs, lastbox)
box.set_lefttop(ibox, left, overlapped ? na : top)
box.set_rightbottom(ibox, time, overlapped ? na : bottom)
var supply = input.color(#F2364512, 'Supply Zones')
var demand = input.color(#08998112, 'Demand Zones')
var buyBox = array.new_box(0)
var sellBox = array.new_box(0)
for i = 0 to maxbox(na(close[1]))
array.push(buyBox, newbox(demand))
array.push(sellBox, newbox(supply))
for i = 0 to maxbox(upturn or brokenLow)
render(buyBox, i, buyzoneHigh, buyzoneLow, buyzoneTime)
for i = 0 to maxbox(downturn or brokenHigh)
render(sellBox, i, sellzoneHigh, sellzoneLow, sellzoneTime)
// C. ALERTS
if brokenHigh
alert('Breakout', alert.freq_once_per_bar)
if brokenLow
alert('Breakdown', alert.freq_once_per_bar)
if upturn or downturn
setup = switch
whiteSoldiers => 'White Soldiers'
blackCrows => 'Black Crows'
breakHigh => bullishEngulf ? 'Engulf & Break High' : 'Break High'
breakLow => bearishEngulf ? 'Engulf & Break Low' : 'Break Low'
bullishEngulf => 'Bullish Engulf'
bearishEngulf => 'Bearish Engulf'
occurence = replace ? 'Replace' : (overlap ? 'Bounce' : 'Fresh')
message = setup + ' (' + occurence + ')'
alert(message, alert.freq_once_per_bar_close)
Users browsing this forum: NotInPortland and 64 guests