ProRealCode - Trading & Coding with ProRealTime™
hi Ivan
Can you please convert this indicator to pro real time please i think this will benefit lot of people too
// This work is licensed under a Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0) https://creativecommons.org/licenses/by-nc-sa/4.0/
// © LuxAlgo
//@version=5
indicator(“Elliott Wave [LuxAlgo]”, max_lines_count=500, max_labels_count=500, overlay=true, max_bars_back=5000)
//——————————————————————————
//Settings
//—————————————————————————–{
i_hi = input.string(‘high’ , title= ” , group=’source [high – low]’, inline=’hl’, options=[‘high’, ‘close’, ‘max open/close’])
i_lo = input.string(‘low’ , title= ” , group=’source [high – low]’, inline=’hl’, options=[‘low’ , ‘close’, ‘min open/close’])
s1 = input.bool (true , title= ” , group=’ZigZag’ , inline= ‘1’ )
len1 = input.int ( 4 , title= ‘ 1 Length’, group=’ZigZag’ , inline= ‘1’, minval =1 )
col1 = input.color (color.red , title= ” , group=’ZigZag’ , inline= ‘1’ )
s2 = input.bool (true , title= ” , group=’ZigZag’ , inline= ‘2’ )
len2 = input.int ( 8 , title= ‘ 2 Length’, group=’ZigZag’ , inline= ‘2’, minval =1 )
col2 = input.color (color.blue , title= ” , group=’ZigZag’ , inline= ‘2’ )
s3 = input.bool (true , title= ” , group=’ZigZag’ , inline= ‘3’ )
len3 = input.int (16 , title= ‘ 3 Length’, group=’ZigZag’ , inline= ‘3’, minval =1 )
col3 = input.color (color.white , title= ” , group=’ZigZag’ , inline= ‘3’ )
i_500 = input.float (0.500 , title=’ level 1′, group=’Fibonacci values’ , minval =0, maxval =1, step =0.01 )
i_618 = input.float (0.618 , title=’ level 2′, group=’Fibonacci values’ , minval =0, maxval =1, step =0.01 )
i_764 = input.float (0.764 , title=’ level 3′, group=’Fibonacci values’ , minval =0, maxval =1, step =0.01 )
i_854 = input.float (0.854 , title=’ level 4′, group=’Fibonacci values’ , minval =0, maxval =1, step =0.01 )
shZZ = input.bool (false , title= ” , group=’show ZZ’ , inline=’zz’ )
//—————————————————————————–}
//User Defined Types
//—————————————————————————–{
type ZZ
int [] d
int [] x
float[] y
line [] l
type Ewave
line l1
line l2
line l3
line l4
line l5
label b1
label b2
label b3
label b4
label b5
//
bool on
bool br //= na
//
int dir
//
line lA
line lB
line lC
label bA
label bB
label bC
//
bool next = false
//
label lb
box bx
type fibL
line wave1_0_500
line wave1_0_618
line wave1_0_764
line wave1_0_854
line wave1_pole_
linefill l_fill_
bool _break_ //= na
//—————————————————————————–}
//Functions
//—————————————————————————–{
hi = i_hi == ‘high’ ? high : i_hi == ‘close’ ? close : math.max(open, close)
lo = i_lo == ‘low’ ? low : i_hi == ‘close’ ? close : math.min(open, close)
in_out(aZZ, d, x1, y1, x2, y2, col) =>
aZZ.d.unshift(d), aZZ.x.unshift(x2), aZZ.y.unshift(y2), aZZ.d.pop(), aZZ.x.pop(), aZZ.y.pop()
if shZZ
aZZ.l.unshift(line.new(x1, y1, x2, y2, color= col)), aZZ.l.pop().delete()
method isSame(Ewave gEW, _1x, _2x, _3x, _4x) =>
t1 = _1x == gEW.l1.get_x1()
t2 = _2x == gEW.l2.get_x1()
t3 = _3x == gEW.l3.get_x1()
t4 = _4x == gEW.l4.get_x1()
t1 and t2 and t3 and t4
method isSame2(Ewave gEW, _1x, _2x, _3x) =>
t1 = _1x == gEW.l3.get_x2()
t2 = _2x == gEW.l4.get_x2()
t3 = _3x == gEW.l5.get_x2()
t1 and t2 and t3
method dot(Ewave gEW) =>
gEW.l1.set_style(line.style_dotted)
gEW.l2.set_style(line.style_dotted)
gEW.l3.set_style(line.style_dotted)
gEW.l4.set_style(line.style_dotted)
gEW.l5.set_style(line.style_dotted)
gEW.b1.set_textcolor (color(na))
gEW.b2.set_textcolor (color(na))
gEW.b3.set_textcolor (color(na))
gEW.b4.set_textcolor (color(na))
gEW.b5.set_textcolor (color(na))
gEW.on := false
method dash(Ewave gEW) =>
gEW.lA.set_style(line.style_dashed)
gEW.lB.set_style(line.style_dashed)
gEW.lC.set_style(line.style_dashed)
gEW.bA.set_textcolor (color(na))
gEW.bB.set_textcolor (color(na))
gEW.bC.set_textcolor (color(na))
gEW.bx.set_bgcolor (color(na))
gEW.bx.set_border_color (color(na))
method sol_dot(fibL nFibL, sol_dot, col) =>
style =
sol_dot == ‘dot’ ?
line.style_dotted :
sol_dot == ‘sol’ ?
line.style_solid :
line.style_dashed
nFibL.wave1_0_500.set_style(style)
nFibL.wave1_0_618.set_style(style)
nFibL.wave1_0_764.set_style(style)
nFibL.wave1_0_854.set_style(style)
nFibL.l_fill_.set_color(col)
method set(fibL nFibL, int x1, int x2, float max_500, float max_618, float max_764, float max_854, float y2) =>
nFibL.wave1_0_500.set_xy1(x1, max_500)
nFibL.wave1_0_500.set_xy2(x2, max_500)
nFibL.wave1_0_618.set_xy1(x1, max_618)
nFibL.wave1_0_618.set_xy2(x2, max_618)
nFibL.wave1_0_764.set_xy1(x1, max_764)
nFibL.wave1_0_764.set_xy2(x2, max_764)
nFibL.wave1_0_854.set_xy1(x1, max_854)
nFibL.wave1_0_854.set_xy2(x2, max_854)
nFibL.wave1_pole_.set_xy1(x1, y2 )
nFibL.wave1_pole_.set_xy2(x1, max_854)
nFibL.l_fill_.get_line1().set_xy1(x1, max_764)
nFibL.l_fill_.get_line1().set_xy2(x2, max_764)
nFibL.l_fill_.get_line2().set_xy1(x1, max_854)
nFibL.l_fill_.get_line2().set_xy2(x2, max_854)
method setNa(fibL nFibL) =>
nFibL.wave1_0_500.set_xy1(na, na)
nFibL.wave1_0_500.set_xy2(na, na)
nFibL.wave1_0_618.set_xy1(na, na)
nFibL.wave1_0_618.set_xy2(na, na)
nFibL.wave1_0_764.set_xy1(na, na)
nFibL.wave1_0_764.set_xy2(na, na)
nFibL.wave1_0_854.set_xy1(na, na)
nFibL.wave1_0_854.set_xy2(na, na)
nFibL.wave1_pole_.set_xy1(na, na)
nFibL.wave1_pole_.set_xy2(na, na)
nFibL.l_fill_.set_color(color(na))
draw(enabled, left, col, n) =>
//
max_bars_back(time, 2000)
var int dir = na, var int x1= na, var float y1 = na, var int x2 = na, var float y2 = na, var Ewave gEW = na
var int last_0x = na , var float last_0y = na , var int last_6x = na , var float last_6y = na
//
if enabled
var fibL nFibL = fibL.new(
wave1_0_500 = line.new(na, na, na, na, color= color.new(col, 50), style= line.style_solid ),
wave1_0_618 = line.new(na, na, na, na, color= color.new(col, 38), style= line.style_solid ),
wave1_0_764 = line.new(na, na, na, na, color= color.new(col, 24), style= line.style_solid ),
wave1_0_854 = line.new(na, na, na, na, color= color.new(col, 15), style= line.style_solid ),
wave1_pole_ = line.new(na, na, na, na, color= color.new(col, 50), style= line.style_dashed),
l_fill_ = linefill.new(
line.new(na, na, na, na, color= color(na))
, line.new(na, na, na, na, color= color(na))
, color= color(na))
, _break_ = na
)
//
var ZZ aZZ = ZZ.new(array.new < int > ()
, array.new < int > ()
, array.new < float > ()
, array.new < line > () )
var Ewave[] aEW = array.new < Ewave > ()
//
if barstate.isfirst
aEW.unshift(Ewave.new())
for i = 0 to 10
aZZ.d.unshift(0)
aZZ.x.unshift(0)
aZZ.y.unshift(0)
aZZ.l.unshift(shZZ ? line.new(na, na, na, na) : na)
//
sz = aZZ.d.size( )
x2 := bar_index -1
ph = ta.pivothigh(hi, left, 1)
pl = ta.pivotlow (lo, left, 1)
t = n == 2 ? ‘\n\n’ : n == 1 ? ‘\n’ : ”
//
// when a new Pivot High is found
if not na(ph)
gEW := aEW.get (0)
dir := aZZ.d.get (0)
x1 := aZZ.x.get (0)
y1 := aZZ.y.get (0)
y2 := nz(hi[1])
//
if dir < 1 // if previous point was a pl, add, and change direction ( 1)
in_out(aZZ, 1, x1, y1, x2, y2, col)
else
if dir == 1 and ph > y1
aZZ.x.set(0, x2), aZZ.y.set(0, y2)
if shZZ
aZZ.l.get(0).set_xy2(x2, y2)
//
_6x = x2, _6y = y2
_5x = aZZ.x.get(1), _5y = aZZ.y.get(1)
_4x = aZZ.x.get(2), _4y = aZZ.y.get(2)
_3x = aZZ.x.get(3), _3y = aZZ.y.get(3)
_2x = aZZ.x.get(4), _2y = aZZ.y.get(4)
_1x = aZZ.x.get(5), _1y = aZZ.y.get(5)
//
// –––––––––––––––––––––[ 12345 ]–––––––––––––––––––––
_W5 = _6y – _5y
_W3 = _4y – _3y
_W1 = _2y – _1y
min = math.min(_W1, _W3, _W5)
isWave =
_W3 != min and
_6y > _4y and
_3y > _1y and
_5y > _2y
//
same = gEW.isSame(_1x, _2x, _3x, _4x)
if isWave
if same
gEW.l5.set_xy2(_6x, _6y)
gEW.b5.set_xy (_6x, _6y)
else
tx = ”
if _2x == aEW.get(0).b5.get_x()
tx := ‘(5) (1)’
aEW.get(0).b5.set_text(”)
else
tx := ‘(1)’
//
wave = Ewave.new(
l1 = line.new (_1x, _1y, _2x, _2y , color=col , style= line.style_solid ),
l2 = line.new (_2x, _2y, _3x, _3y , color=col , style= line.style_solid ),
l3 = line.new (_3x, _3y, _4x, _4y , color=col , style= line.style_solid ),
l4 = line.new (_4x, _4y, _5x, _5y , color=col , style= line.style_solid ),
l5 = line.new (_5x, _5y, _6x, _6y , color=col , style= line.style_solid ),
b1 = label.new(_2x, _2y, text= tx + t, textcolor=col, color= color(na), style=label.style_label_down),
b2 = label.new(_3x, _3y, text= t + ‘(2)’, textcolor=col, color= color(na), style=label.style_label_up ),
b3 = label.new(_4x, _4y, text= ‘(3)’ + t, textcolor=col, color= color(na), style=label.style_label_down),
b4 = label.new(_5x, _5y, text= t + ‘(4)’, textcolor=col, color= color(na), style=label.style_label_up ),
b5 = label.new(_6x, _6y, text= ‘(5)’ + t, textcolor=col, color= color(na), style=label.style_label_down),
on = true ,
br = false ,
dir = 1
)
aEW.unshift(wave)
nFibL._break_ := false
alert(‘New EW Motive Bullish Pattern found’ , alert.freq_once_per_bar_close)
//
if not isWave
if same and gEW.on == true
gEW.dot()
alert(‘Invalidated EW Motive Bullish Pattern’, alert.freq_once_per_bar_close)
//
// –––––––––––––––––––––[ ABC ]–––––––––––––––––––––
getEW = aEW.get(0)
last_0x := getEW.l1.get_x1(), last_0y := getEW.l1.get_y1()
last_6x := getEW.l5.get_x2(), last_6y := getEW.l5.get_y2()
diff = math.abs(last_6y – last_0y)
//
if getEW.dir == -1
getX = getEW.l5.get_x2()
getY = getEW.l5.get_y2()
isSame2 = getEW.isSame2 (_1x, _2x, _3x)
isValid =
_3x == getX and
_6y < getY + (diff * i_854) and
_4y < getY + (diff * i_854) and
_5y > getY
//
if isValid
width = _6x – _2x // –––[ width (4) – (c) ]–––
if isSame2 and getEW.bA.get_x() > _3x
getEW.lC.set_xy1(_5x, _5y), getEW.lC.set_xy2(_6x, _6y), getEW.bC.set_xy(_6x, _6y), getEW.bx.set_lefttop(_6x, _6y), getEW.bx.set_right(_6x + width)
else
getEW.lA := line.new (_3x, _3y, _4x, _4y, color=col), getEW.bA := label.new(_4x, _4y, text= ‘(a)’ + t, textcolor=col, color= color(na), style=label.style_label_down)
getEW.lB := line.new (_4x, _4y, _5x, _5y, color=col), getEW.bB := label.new(_5x, _5y, text= t + ‘(b)’, textcolor=col, color= color(na), style=label.style_label_up )
getEW.lC := line.new (_5x, _5y, _6x, _6y, color=col), getEW.bC := label.new(_6x, _6y, text= ‘(c)’ + t, textcolor=col, color= color(na), style=label.style_label_down)
getEW.bx := box.new (_6x, _6y, _6x + width, _4y, bgcolor=color.new(col, 93), border_color=color.new(col, 65))
alert(‘New EW Corrective Bullish Pattern found’ , alert.freq_once_per_bar_close)
else
if isSame2 and getEW.bA.get_x() > _3x
getEW.dash()
alert(‘Invalidated EW Corrective Bullish Pattern’, alert.freq_once_per_bar_close)
//
// –––––––––––––––––––––[ new (1) ? ]–––––––––––––––––––––
if getEW.dir == 1
if _5x == getEW.bC.get_x() and
_6y > getEW.b5.get_y() and
getEW.next == false
getEW.next := true
getEW.lb := label.new(_6x, _6y, style=label.style_circle, color=color.new(col, 65), yloc=yloc.abovebar, size=size.tiny)
alert(‘Possible new start of EW Motive Bullish Wave’, alert.freq_once_per_bar_close)
//
// when a new Pivot Low is found
if not na(pl)
gEW := aEW.get (0)
dir := aZZ.d.get (0)
x1 := aZZ.x.get (0)
y1 := aZZ.y.get (0)
y2 := nz(lo[1])
//
if dir > -1 // if previous point was a ph, add, and change direction (-1)
in_out(aZZ, -1, x1, y1, x2, y2, col)
else
if dir == -1 and pl < y1
aZZ.x.set(0, x2), aZZ.y.set(0, y2)
if shZZ
aZZ.l.get(0).set_xy2(x2, y2)
//
_6x = x2, _6y = y2
_5x = aZZ.x.get(1), _5y = aZZ.y.get(1)
_4x = aZZ.x.get(2), _4y = aZZ.y.get(2)
_3x = aZZ.x.get(3), _3y = aZZ.y.get(3)
_2x = aZZ.x.get(4), _2y = aZZ.y.get(4)
_1x = aZZ.x.get(5), _1y = aZZ.y.get(5)
//
// –––––––––––––––––––––[ 12345 ]–––––––––––––––––––––
_W5 = _5y – _6y
_W3 = _3y – _4y
_W1 = _1y – _2y
min = math.min(_W1, _W3, _W5)
isWave =
_W3 != min and
_4y > _6y and
_1y > _3y and
_2y > _5y
//
same = isSame(gEW, _1x, _2x, _3x, _4x)
if isWave
if same
gEW.l5.set_xy2(_6x, _6y)
gEW.b5.set_xy (_6x, _6y)
else
tx = ”
if _2x == aEW.get(0).b5.get_x()
tx := ‘(5) (1)’
aEW.get(0).b5.set_text(”)
else
tx := ‘(1)’
//
wave = Ewave.new(
l1 = line.new (_1x, _1y, _2x, _2y , color=col , style= line.style_solid ),
l2 = line.new (_2x, _2y, _3x, _3y , color=col , style= line.style_solid ),
l3 = line.new (_3x, _3y, _4x, _4y , color=col , style= line.style_solid ),
l4 = line.new (_4x, _4y, _5x, _5y , color=col , style= line.style_solid ),
l5 = line.new (_5x, _5y, _6x, _6y , color=col , style= line.style_solid ),
b1 = label.new(_2x, _2y, text= t + tx, textcolor=col, color= color(na), style=label.style_label_up ),
b2 = label.new(_3x, _3y, text= ‘(2)’ + t, textcolor=col, color= color(na), style=label.style_label_down),
b3 = label.new(_4x, _4y, text= t + ‘(3)’, textcolor=col, color= color(na), style=label.style_label_up ),
b4 = label.new(_5x, _5y, text= ‘(4)’ + t, textcolor=col, color= color(na), style=label.style_label_down),
b5 = label.new(_6x, _6y, text= t + ‘(5)’, textcolor=col, color= color(na), style=label.style_label_up ),
on = true ,
br = false ,
dir =-1
)
aEW.unshift(wave)
nFibL._break_ := false
alert(‘New EW Motive Bearish Pattern found’ , alert.freq_once_per_bar_close)
//
if not isWave
if same and gEW.on == true
gEW.dot()
alert(‘Invalidated EW Motive Bearish Pattern’, alert.freq_once_per_bar_close)
//
// –––––––––––––––––––––[ ABC ]–––––––––––––––––––––
getEW = aEW.get(0)
last_0x := getEW.l1.get_x1(), last_0y := getEW.l1.get_y1()
last_6x := getEW.l5.get_x2(), last_6y := getEW.l5.get_y2()
diff = math.abs(last_6y – last_0y)
//
if getEW.dir == 1
getX = getEW.l5.get_x2()
getY = getEW.l5.get_y2()
isSame2 = getEW.isSame2 (_1x, _2x, _3x)
isValid =
_3x == getX and
_6y > getY – (diff * i_854) and
_4y > getY – (diff * i_854) and
_5y < getY
//
if isValid
width = _6x – _2x // –––[ width (4) – (c) ]–––
if isSame2 and getEW.bA.get_x() > _3x
getEW.lC.set_xy1(_5x, _5y), getEW.lC.set_xy2(_6x, _6y), getEW.bC.set_xy(_6x, _6y), getEW.bx.set_lefttop(_6x, _6y), getEW.bx.set_right(_6x + width)
else
getEW.lA := line.new (_3x, _3y, _4x, _4y, color=col), getEW.bA := label.new(_4x, _4y, text= t + ‘(a)’, textcolor=col, color= color(na), style=label.style_label_up )
getEW.lB := line.new (_4x, _4y, _5x, _5y, color=col), getEW.bB := label.new(_5x, _5y, text= ‘(b)’ + t, textcolor=col, color= color(na), style=label.style_label_down)
getEW.lC := line.new (_5x, _5y, _6x, _6y, color=col), getEW.bC := label.new(_6x, _6y, text= t + ‘(c)’, textcolor=col, color= color(na), style=label.style_label_up )
getEW.bx := box.new (_6x, _6y, _6x + width, _4y, bgcolor=color.new(col, 93), border_color=color.new(col, 65))
alert(‘New EW Corrective Bearish Pattern found’ , alert.freq_once_per_bar_close)
else
if isSame2 and getEW.bA.get_x() > _3x
getEW.dash()
alert(‘Invalidated EW Corrective Bullish Pattern’, alert.freq_once_per_bar_close)
//
// –––[ check (only once) for a possible new (1) after an impulsive AND corrective wave ]–––
if getEW.dir == -1
if _5x == getEW.bC.get_x() and
_6y < getEW.b5.get_y() and
getEW.next == false
getEW.next := true
getEW.lb := label.new(_6x, _6y, style=label.style_circle, color=color.new(col, 65), yloc=yloc.belowbar, size=size.tiny)
alert(‘Possible new start of EW Motive Bearish Wave’, alert.freq_once_per_bar_close)
//
// –––[ check for break box ]–––
if aEW.size() > 0
gEW := aEW.get(0)
if gEW.dir == 1
if ta.crossunder(low , gEW.bx.get_bottom()) and bar_index <= gEW.bx.get_right()
label.new(bar_index, low , yloc= yloc.belowbar, style= label.style_xcross, color=color.red, size=size.tiny)
else
if ta.crossover (high, gEW.bx.get_top ()) and bar_index <= gEW.bx.get_right()
label.new(bar_index, high, yloc= yloc.abovebar, style= label.style_xcross, color=color.red, size=size.tiny)
//
if barstate.islast
// –––[ get last 2 EW’s ]–––
getEW = aEW.get(0)
if aEW.size() > 1
getEW1 = aEW.get(1)
last_0x := getEW.l1.get_x1(), last_0y := getEW.l1.get_y1()
last_6x := getEW.l5.get_x2(), last_6y := getEW.l5.get_y2()
//
diff = math.abs(last_6y – last_0y) // –––[ max/min difference ]–––
_500 = diff * i_500
_618 = diff * i_618
_764 = diff * i_764
_854 = diff * i_854
bull = getEW.dir == 1
// –––[ if EW is not valid or an ABC has developed -> remove fibonacci lines ]–––
if getEW.on == false or getEW.bC.get_x() > getEW.b5.get_x()
nFibL.setNa()
else
// –––[ get.on == true ~ valid EW ]–––
max_500 = last_6y + ((bull ? -1 : 1) * _500)
max_618 = last_6y + ((bull ? -1 : 1) * _618)
max_764 = last_6y + ((bull ? -1 : 1) * _764)
max_854 = last_6y + ((bull ? -1 : 1) * _854)
//
nFibL.set(last_6x, bar_index + 10, max_500, max_618, max_764, max_854, last_6y)
// –––[ if (2) label overlap with (C) label ]–––
if getEW.b2.get_x() == getEW1.bC.get_x()
getEW.b1.set_textcolor(color(na))
getEW.b2.set_textcolor(color(na))
strB = getEW1.bB.get_text()
strC = getEW1.bC.get_text()
strB_ = str.replace(strB, “(b)”, “(b) (1)”, 0)
strC_ = str.replace(strC, “(c)”, “(c) (2)”, 0)
getEW1.bB.set_text(strB_)
getEW1.bC.set_text(strC_)
//
// –––[ check if fib limits are broken ]–––
getP_854 = nFibL.wave1_0_854.get_y1()
for i = 0 to bar_index – nFibL.wave1_0_854.get_x1()
if getEW.dir == -1
if high[i] > getP_854
nFibL._break_ := true
break
else
if low [i] < getP_854
nFibL._break_ := true
break
//––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––
switch nFibL._break_
true => nFibL.sol_dot(‘dot’, color.new(color.red , 95))
false => nFibL.sol_dot(‘sol’, color.new(color.lime, 95))
=>
nFibL.wave1_0_500.set_xy1(na, na)
nFibL.wave1_0_500.set_xy2(na, na)
nFibL.wave1_0_618.set_xy1(na, na)
nFibL.wave1_0_618.set_xy2(na, na)
nFibL.wave1_0_764.set_xy1(na, na)
nFibL.wave1_0_764.set_xy2(na, na)
nFibL.wave1_0_854.set_xy1(na, na)
nFibL.wave1_0_854.set_xy2(na, na)
nFibL.wave1_pole_.set_xy1(na, na)
nFibL.wave1_pole_.set_xy2(na, na)
nFibL.l_fill_.set_color(color(na))
if aEW.size() > 15
pop = aEW.pop()
pop.l1.delete(), pop.b1.delete()
pop.l2.delete(), pop.b2.delete()
pop.l3.delete(), pop.b3.delete()
pop.l4.delete(), pop.b4.delete()
pop.l5.delete(), pop.b5.delete()
pop.lA.delete(), pop.bA.delete()
pop.lB.delete(), pop.bB.delete()
pop.lC.delete(), pop.bC.delete()
pop.lb.delete(), pop.bx.delete()
//———————————-
//—————————————————————————–}
//Plots
//—————————————————————————–{
draw(s1, len1, col1, 0)
draw(s2, len2, col2, 1)
draw(s3, len3, col3, 2)
//—————————————————————————–}
Hi ivan
Can this be converted in to pro real time code please or any one else can reply
many thanks
Hi,
It’s not an easy task. I’ll try to convert it but be patient please.
Thanks mate
Hi,
Here you have the code. Is not the translation because it needs functions not yet available.
//-------------------------------------------------------------------------------//
//PRC_Elliot Wave ZigZag
//version = 0
//17.07.24
//Iván González @ www.prorealcode.com
//Sharing ProRealTime knowledge
//-------------------------------------------------------------------------------//
defparam drawonlastbaronly=true
//-----Inputs--------------------------------------------------------------------//
perc=1
//-------------------------------------------------------------------------------//
$newhigh[0]=0
//-------------------------------------------------------------------------------//
zz=ZigZag[perc](close)
//---Pivot high------------------------------------------------------------------//
if zz<zz[1] and zz[1]>zz[2] then
$pivoty[n+1]=close[1]
$pivotx[n+1]=barindex[1]
$newhigh[n+1]=1
n=n+1
endif
//-------------------------------------------------------------------------------//
//---Pivot low-------------------------------------------------------------------//
if zz>zz[1] and zz[1]<zz[2] then
$pivoty[n+1]=close[1]
$pivotx[n+1]=barindex[1]
$newhigh[n+1]=0
n=n+1
endif
//-------------------------------------------------------------------------------//
//-------------------------------------------------------------------------------//
if islastbarupdate then
for i=n downto 3 do
//drawpoint($pivotx[i],$pivoty[i],2)coloured("white")
if $newhigh[i]=1 then
////Populate all points
l6xx=$pivotx[i]
l6yy=$pivoty[i]
l5xx=$pivotx[max(0,i-1)]
l5yy=$pivoty[max(0,i-1)]
l4xx=$pivotx[max(0,i-2)]
l4yy=$pivoty[max(0,i-2)]
l3xx=$pivotx[max(0,i-3)]
l3yy=$pivoty[max(0,i-3)]
l2xx=$pivotx[max(0,i-4)]
l2yy=$pivoty[max(0,i-4)]
l1xx=$pivotx[max(0,i-5)]
l1yy=$pivoty[max(0,i-5)]
l0xx=$pivotx[max(0,i-6)]
l0yy=$pivoty[max(0,i-6)]
l7xx=$pivotx[i+1]
l7yy=$pivoty[i+1]
l8xx=$pivotx[i+2]
l8yy=$pivoty[i+2]
////Checking waves performance
ww1=l0yy-l1yy
ww2=l2yy-l1yy
ww3=l2yy-l3yy
ww4=l4yy-l3yy
ww5=l4yy-l5yy
wwA=l6yy-l5yy
wwB=l6yy-l7yy
wwC=l8yy-l7yy
minww=min(ww1,min(ww3,ww5))
checkDN0=ww1>0 and ww3>0 and ww5>0 and ww2>0 and ww4>0 and wwA>0 and wwB>0 and wwC>0
//Checking levels
//Wave 1:
//No specific strict conditions other than being the start of a new trend.
//Wave 2:
checkDN1=l2yy<=l0yy//Must not retrace more than 100% of Wave 1.
//Wave 3:
checkDN2=ww3<>minWw// Cannot be the shortest among Waves 1, 3, and 5.
checkDN3=l3yy<l1yy//Must exceed the end of Wave 1.
checkDN4=ww3>ww1//Must be greater in price than Wave 1.
//Wave 4:
checkDN5=l4yy<l1yy//Must not overlap with the price range of Wave 1 (in futures or highly leveraged markets, this rule can be violated, but in stock markets, it is strict).
//Wave 5:
checkDN6=l5yy<l3yy
checkDN7=l6yy<l2yy
//Waves A-B-C
checkDN8=l7yy>=l5yy//Wave B must not retrace more than 100% of Wave A
checkDN9=l8yy>=l6yy
//Setup
setupDNTrend=checkDN0 and checkDN1 and checkDN2 and checkDN3 and checkDN4 and checkDN5 and checkDN6 and checkDN7 and checkDN8 and checkDN9
if setupDNTrend then
drawsegment(l7xx,l7yy,l8xx,l8yy)coloured("white")style(line,2)
drawsegment(l7xx,l7yy,l6xx,l6yy)coloured("white")style(line,2)
drawsegment(l5xx,l5yy,l6xx,l6yy)coloured("white")style(line,2)
drawsegment(l5xx,l5yy,l4xx,l4yy)coloured("red")style(line,2)
drawsegment(l3xx,l3yy,l4xx,l4yy)coloured("red")style(line,2)
drawsegment(l3xx,l3yy,l2xx,l2yy)coloured("red")style(line,2)
drawsegment(l1xx,l1yy,l2xx,l2yy)coloured("red")style(line,2)
drawsegment(l1xx,l1yy,l0xx,l0yy)coloured("red")style(line,2)
drawtext("(0)",l0xx,l0yy+0.15*tr)coloured("yellow")
drawtext("(1)",l1xx,l1yy-0.15*tr)coloured("yellow")
drawtext("(2)",l2xx,l2yy+0.15*tr)coloured("yellow")
drawtext("(3)",l3xx,l3yy-0.15*tr)coloured("yellow")
drawtext("(4)",l4xx,l4yy+0.15*tr)coloured("yellow")
drawtext("(5)",l5xx,l5yy-0.15*tr)coloured("yellow")
drawtext("(6)",l6xx,l6yy+0.15*tr)coloured("yellow")
endif
elsif $newhigh[i]=0 then
//Populate all points
l6x=$pivotx[i]
l6y=$pivoty[i]
l5x=$pivotx[max(0,i-1)]
l5y=$pivoty[max(0,i-1)]
l4x=$pivotx[max(0,i-2)]
l4y=$pivoty[max(0,i-2)]
l3x=$pivotx[max(0,i-3)]
l3y=$pivoty[max(0,i-3)]
l2x=$pivotx[max(0,i-4)]
l2y=$pivoty[max(0,i-4)]
l1x=$pivotx[max(0,i-5)]
l1y=$pivoty[max(0,i-5)]
l0x=$pivotx[max(0,i-6)]
l0y=$pivoty[max(0,i-6)]
l7x=$pivotx[i+1]
l7y=$pivoty[i+1]
l8x=$pivotx[i+2]
l8y=$pivoty[i+2]
//Checking waves and conditions
w1=l1y-l0y
w2=l1y-l2y
w3=l3y-l2y
w4=l3y-l4y
w5=l5y-l4y
wA=l5y-l6y
wB=l7y-l6y
wC=l7y-l8y
checkUP0=w1>0 and w3>0 and w5>0 and w2>0 and w4>0 and wA>0 and wB>0 and wC>0
//Wave 1:
//No specific strict conditions other than being the start of a new trend.
//Wave 2:
checkUP1=l2y>=l0y//Must not retrace more than 100% of Wave 1.
//Wave 3:
minw=min(w1,min(w3,w5))//
checkUP2=w3<>minW// Cannot be the shortest among Waves 1, 3, and 5.
checkUP3=l3y>l1y//Must exceed the end of Wave 1.
checkUP4=w3>w1//Must be greater in price than Wave 1.
//Wave 4:
checkUP5=l4y>l1y//Must not overlap with the price range of Wave 1 (in futures or highly leveraged markets, this rule can be violated, but in stock markets, it is strict).
//Wave 5: Wave 5 must extend beyond the end of Wave 3.
checkUP6=l5y>l3y
checkUP7=l6y>l2y
//Waves A-B-C
checkUP8=l7y<=l5y//Wave B must not retrace more than 100% of Wave A
checkUP9=l8y<=l6y
//Setup
setupUpTrend=checkUP0 and checkUP1 and checkUP2 and checkUP3 and checkUP4 and checkUP5 and checkUP6 and checkUP7 and checkUP8 and checkUP9
//Draw waves
if setupUpTrend then
drawsegment(l7x,l7y,l8x,l8y)coloured("white")style(line,2)
drawsegment(l7x,l7y,l6x,l6y)coloured("white")style(line,2)
drawsegment(l5x,l5y,l6x,l6y)coloured("white")style(line,2)
drawsegment(l5x,l5y,l4x,l4y)coloured("blue")style(line,2)
drawsegment(l3x,l3y,l4x,l4y)coloured("blue")style(line,2)
drawsegment(l3x,l3y,l2x,l2y)coloured("blue")style(line,2)
drawsegment(l1x,l1y,l2x,l2y)coloured("blue")style(line,2)
drawsegment(l1x,l1y,l0x,l0y)coloured("blue")style(line,2)
drawtext("(0)",l0x,l0y-0.15*tr)coloured("yellow")
drawtext("(1)",l1x,l1y+0.15*tr)coloured("yellow")
drawtext("(2)",l2x,l2y-0.15*tr)coloured("yellow")
drawtext("(3)",l3x,l3y+0.15*tr)coloured("yellow")
drawtext("(4)",l4x,l4y-0.15*tr)coloured("yellow")
drawtext("(5)",l5x,l5y+0.15*tr)coloured("yellow")
drawtext("(6)",l6x,l6y-0.15*tr)coloured("yellow")
endif
endif
next
endif
//-------------------------------------------------------------------------------//
return zz as "ZigZag" coloured("yellow",150)
Thank you for your help and assistant when i past the code in the pro real time i see this error on these lines please see the attach file
any ideas what is it
Try the version you see below. Import that into PRT as Indicator.
(open it on the price panel is advised)
Hi!
Yas, I think you didn’t copy/paste correctly…
Thanks Peter!
any ideas what is it
Copy and paste error … place cursor just before the red lined error and hit return and you should be good to go?
PS / Edit
Ha, we are ‘falling over ourselves’ to be helpful! 😉
Link to Ivan’s Elliott Wave Indicator code above, added as Log 391 here …
This elliott wave Trading View Indicator to PRO real time please
This topic contains 9 replies,
has 4 voices, and was last updated by GraHal
1 year, 6 months ago.
| Forum: | ProBuilder: Indicators & Custom Tools |
| Language: | English |
| Started: | 05/31/2024 |
| Status: | Active |
| Attachments: | 2 files |
The information collected on this form is stored in a computer file by ProRealCode to create and access your ProRealCode profile. This data is kept in a secure database for the duration of the member's membership. They will be kept as long as you use our services and will be automatically deleted after 3 years of inactivity. Your personal data is used to create your private profile on ProRealCode. This data is maintained by SAS ProRealCode, 407 rue Freycinet, 59151 Arleux, France. If you subscribe to our newsletters, your email address is provided to our service provider "MailChimp" located in the United States, with whom we have signed a confidentiality agreement. This company is also compliant with the EU/Swiss Privacy Shield, and the GDPR. For any request for correction or deletion concerning your data, you can directly contact the ProRealCode team by email at privacy@prorealcode.com If you would like to lodge a complaint regarding the use of your personal data, you can contact your data protection supervisory authority.