Download as rtf, pdf, or txt
Download as rtf, pdf, or txt
You are on page 1of 16

//©abdul_ohab

//@version=5

indicator('প্রাইস ভলিউম ডাইভারজেন্স (আব্দুল ওহাব)', overlay=true, max_bars_back=500)

import TradingView/ta/7

prd2 = input.int(defval=50, title='pivot Period', minval=2, maxval=500)

showzz = input.string(defval='Show Both', title='Show Zig Zags', options=['Show Zig Zag 1', 'Show Zig Zag 2', 'Show Both',
'Show None'])

showhhll = input.string(defval='Show Both', title='Show HHLL', options=['Show HHLL 1', 'Show HHLL 2', 'Show Both', 'Show
None'])

upcol2 = input(defval=color.rgb(243, 219, 33), title='Up Color')

dncol2 = input(defval=color.rgb(41, 176, 39), title='Down Color')

txtcol = input(defval=color.black, title='Text Color')

m="Ab"

float ph2 = ta.highestbars(high, prd2) == 0 ? high : na

float pl2 = ta.lowestbars(low, prd2) == 0 ? low : na

var dir1 = 0.0

var dir2 = 0.0

iff_2 = pl2 and na(ph2) ? -1 : dir2

dir2 := ph2 and na(pl2) ? 1 : iff_2

var max_array_size = 10 // [5, 2] matrix

var zigzag2 = array.new_float(0)


oldzigzag2 = array.copy(zigzag2)

add_to_zigzag(pointer, value, bindex) =>

array.unshift(pointer, bindex)

array.unshift(pointer, value)

if array.size(pointer) > max_array_size

array.pop(pointer)

array.pop(pointer)

update_zigzag(pointer, value, bindex, dir) =>

if array.size(pointer) == 0

add_to_zigzag(pointer, value, bindex)

else

if dir == 1 and value > array.get(pointer, 0) or dir == -1 and value < array.get(pointer, 0)

array.set(pointer, 0, value)

array.set(pointer, 1, bindex)

0.

dir2changed = ta.change(dir2)

if ph2 or pl2

if dir2changed

add_to_zigzag(zigzag2, dir2 == 1 ? ph2 : pl2, bar_index)

else

update_zigzag(zigzag2, dir2 == 1 ? ph2 : pl2, bar_index, dir2)

up=false

dn=false
dn2=false

if array.size(zigzag2) >= 6

var line zzline2 = na

var label zzlabel2 = na

if array.get(zigzag2, 0) != array.get(oldzigzag2, 0) or array.get(zigzag2, 1) != array.get(oldzigzag2, 1)

if array.get(zigzag2, 2) == array.get(oldzigzag2, 2) and array.get(zigzag2, 3) == array.get(oldzigzag2, 3)

line.delete(zzline2)

label.delete(zzlabel2)

if showzz == 'Show Zig Zag 2' or showzz == 'Show Both'

zzline2 := line.new(x1=math.round(array.get(zigzag2, 1)), y1=array.get(zigzag2, 0), x2=math.round(array.get(zigzag2,


3)), y2=array.get(zigzag2, 2), color=dir2 == 1 ? upcol2 : dncol2, width=2, style = line.style_dotted)

zzline2

if showhhll == 'Show HHLL 2' or showhhll == 'Show Both'

hhlltxt = dir2 == 1 ? array.get(zigzag2, 0) > array.get(zigzag2, 4) ? 'HH' : 'LH' : array.get(zigzag2, 0) < array.get(zigzag2,
4) ? 'LL' : 'HL'

labelcol = dir2 == 1 ? array.get(zigzag2, 0) > array.get(zigzag2, 4) ? upcol2 : dncol2 : array.get(zigzag2, 0) <


array.get(zigzag2, 4) ? dncol2 : upcol2

zzlabel2 := label.new(x=math.round(array.get(zigzag2, 1)), y=array.get(zigzag2, 0), text=hhlltxt, color=labelcol,


textcolor=txtcol, style=dir2 == 1 ? label.style_label_down : label.style_label_up, size = size.tiny)

zzlabel2

if dir2 == 1 and array.get(zigzag2, 0) > array.get(zigzag2, 4) or dir2 == 1 and array.get(zigzag2, 0) < array.get(zigzag2, 4)

up:=true

if dir2 == -1 and array.get(zigzag2, 0) < array.get(zigzag2, 4) or dir2 == -1 and array.get(zigzag2, 0) > array.get(zigzag2, 4)

dn:=true

d='d'

//plotshape(dn)

upc=ta.barssince(up)
dnc=ta.barssince(dn)

var upc2=0.0

var upc0=0.0

var line buyslvo = na

var bslvo =0.0

if up

buyslvo := line.new(bar_index-dnc, low[dnc], bar_index , high, color = color.rgb(118, 72, 245),width =2)

line.delete(buyslvo[1])

else

upc0:=line.get_x1(buyslvo)

upc2:=line.get_x2(buyslvo)

a='ul'

lrup=ta.barssince(dn)

lrup2=lrup/2

var downc2 =0.0

var downc=0.0

var line sellslvo = na

if dn

sellslvo := line.new(bar_index-upc, high[upc] , bar_index, low ,color = color.rgb(236, 67, 109),width =3)

line.delete(sellslvo[1])
else

downc2:=line.get_x1(sellslvo)

downc:=line.get_x2(sellslvo)

j=' O'

if up

line.delete(sellslvo)

if dn

line.delete(buyslvo)

is_firstbjKn =dn

day_lowbjKn = float(na)

if is_firstbjKn and barstate.isnew

day_lowbjKn := low

day_lowbjKn

else

day_lowbjKn := day_lowbjKn[1]

day_lowbjKn

if low < day_lowbjKn

day_lowbjKn := low

day_lowbjKn

//plot(day_lowbjKn, color=color.new(#bf08c5, 0))

is_first1bjKn =up

day_highbjKn = float(na)

H="ha"

if is_first1bjKn and barstate.isnew


day_highbjKn := high

else

day_highbjKn := day_highbjKn[1]

if high > day_highbjKn

day_highbjKn := high

day_highbjKn

//plot(day_highbjKn, color=color.new(#340fed, 0))

bc=ta.barssince(up)

lrdn0=downc-downc2

lrdn=bc

// plotshape(oha)

// plotshape(not oha, location = location.belowbar)

var sellv1z=0.0

var buyv1z=0.0

lrdn2=lrdn/2

var cv2= false

hl=up

if hl and lrup2>2// low loleg1 buy t c up move

sumze = 0.0

sumze2 = 0.0

for il1ze =0 to lrup2// sell

sumze:= sumze + volume[il1ze]


sellv1z :=sumze//lrup2

for i =lrup2 to lrup

sumze2:= sumze2 + volume[i]

buyv1z :=sumze2//lrup2

if buyv1z<sellv1z

cv2:=true

if buyv1z>sellv1z

cv2:=false

///////////////////

k='b'

nn=lrdn2*2

var cv= false

lo=dn

var sellv1=0.0

var buyv1=0.0

if lo and bc>2

sumzeg = 0.0

sumze2g = 0.0

for il1zeg =0 to lrdn2// sell down move

sumzeg:= sumzeg + volume[il1zeg]

sellv1 :=sumzeg//lrdn2

for ig =lrdn2 to lrdn2*2

sumze2g:= sumze2g + volume[ig]

buyv1 :=sumze2g//lrdn2
if buyv1<sellv1

cv:=true

if buyv1>sellv1

cv:=false

/////////dn 50%////////////////

//plotshape(lo)

ha=j+H+k

lrdnd=lrdn2

lrdn2d=lrdnd/2

var cvd= false

lod=dn

var sellv1d=0.0

var buyv1d=0.0

if lrdn>0 and lod

sumzegd = 0.0

sumze2gd = 0.0

for il1zegd =0 to lrdn2d// sell q flast

sumzegd:= sumzegd + volume[il1zegd]

sellv1d :=sumzegd//lrdn2d

for igd =lrdn2d to lrdnd

sumze2gd:= sumze2gd + volume[igd]

buyv1d :=sumze2gd//lrdn2d
if buyv1d<sellv1d

cvd:=true

if buyv1d>sellv1d

cvd:=false

/////////////////UP50%///////////////////////

lrupu=lrup2

lrup2u=lrupu/2

var sellv1zu=0.0

var buyv1zu=0.0

var cv2u= false

hlu=up

if lrup >0 and hlu// low loleg1 buy t c up move

sumzeu = 0.0

sumze2u = 0.0

for il1zeu =0 to lrup2u// sell

sumzeu:= sumzeu + volume[il1zeu]

sellv1zu :=sumzeu///lrup2u

for iu =lrup2u to lrupu

sumze2u:= sumze2u + volume[iu]

buyv1zu :=sumze2u//lrup2u

if buyv1zu<sellv1zu

cv2u:=true

if buyv1zu>sellv1zu

cv2u:=false
///////////////////////////

tbcd=not cvd and not cv ? ":L+":na

/////////////////////▲▼

tbc0=cv ? "volume.Hi":"volume.Low"

// rd=not cvd and cv? "⌚":"✔"

// tbc=tbc0+tbcd

// tbc30=cv ? "RUN DOWN":"GO UP"

// tbc3=tbc30+rd

tbc2= cv ? color.rgb(249, 237, 11):color.rgb(13, 118, 17)

tbc2T= cv ?color.rgb(24, 7, 138):color.rgb(55, 254, 5)

///////////////////

N=m+d

tbcgu=not cv2u and not cv2 ? ":L+":na

tbcg0=cv2 ? "volume.Hi":"volume.Low"

// tbc3g0=cv2 ? "RUN UP":"GO DOWN"


tbcg=tbcg0+tbcgu

✔ "
// ru= not cv2u and cv2 ?"":"✔

// tbc3g=tbc3g0+ru

tbc2g=not cv2 ? color.rgb(255, 226, 5, 24):color.rgb(13, 118, 17)

tbc2Tg=not cv2 ?color.rgb(24, 7, 138):color.rgb(55, 254, 5)

////////////////////////////////

var updntrend= false //up tren

var box drawShortBox30 = na

var shortBoxes30 = array.new_box()

obcd=false

var soblock= false // sell zone

var rired =0

var box buysl230 = na


var bsl330 =0.0

var bsl430 =0.0

if up and soblock[1]

bsl330 :=high[dnc]

bsl430 := low[dnc]

soblock:= false

//rired:= boxlbu

// buysl2 := box.new(bar_index[_1], bsl3, bar_index+10, bsl4,bgcolor = color.rgb(241, 70, 155, 68), border_color =
color.rgb(252, 21, 129, 47))

// drawShortBox30 := box.new(left= bar_index-dnc, top= bsl330, bottom=bsl430,text = "SWING OB", text_color =


color.rgb(255, 82, 82, 31), text_size = size.small, right=bar_index+8,border_width = 1, bgcolor = color.rgb(20, 222, 142, 60),
border_color = color.rgb(2, 43, 26, 80))

array.push(shortBoxes30, drawShortBox30)

if array.size(shortBoxes30) > 0

for i30 = array.size(shortBoxes30) - 1 to 0 by 1

sbox30 = array.get(shortBoxes30, i30)

top30 = box.get_top(sbox30)

bot30 = box.get_bottom(sbox30)

// if the two last closes are above the high of the bearish OB - Remove the OB

if low<top30

obcd:=true

if close <bot30

soblock:= false

array.remove(shortBoxes30, i30)

box.delete(sbox30)

updntrend:= true

else

box.set_right(sbox30, bar_index+8)

if dn
soblock:=true

var boblock= false // sell zone

obc=false

var box drawShortBoxh = na

var shortBoxesh = array.new_box()

var box buysl2h = na

var bsl3h =0.0

var bsl4h =0.0

if dn and boblock[1]

boblock:= false

bsl3h :=low[upc]

bsl4h := high[upc] //ut10mH

// buysl2 := box.new(bar_index[_1], bsl3, bar_index+10, bsl4,bgcolor = color.rgb(241, 70, 155, 68), border_color =
color.rgb(252, 21, 129, 47))

// drawShortBoxh := box.new(left=bar_index-upc, top= bsl4h, bottom=bsl3h, text = "SWING OB", text_color =


color.rgb(213, 240, 9, 1), text_size = size.small, right=bar_index+8,bgcolor = color.rgb(10, 149, 248, 86), border_color =
color.rgb(207, 222, 3, 83))

array.push(shortBoxesh, drawShortBoxh)

if array.size(shortBoxesh) > 0

for ih = array.size(shortBoxesh) - 1 to 0 by 1

sboxh = array.get(shortBoxesh, ih)

top3h4d0 = box.get_right(sboxh)

toph = box.get_top(sboxh)

both = box.get_bottom(sboxh)

if high> both

obc:=true
if close > toph

array.remove(shortBoxesh, ih)

box.delete(sboxh)

updntrend:= false

else

box.set_right(sboxh, bar_index+8)

// trend= updntrend?"DOWN TREND:▼":'UP TREND:▲'

// trendC= updntrend?color.yellow:color.rgb(25, 248, 13)

var ut=false //down

if up

ut:=true

if dn

ut:=false

if up

boblock:= true
CVC=ut?tbcg:tbc0

tbc2gsp=ut ?'UP:▲':'DOWN:▼'

tbc2gs=ut ? #05ff6dc2:#ffde09

var tblf2s2 = table.new(position.top_right, 9, 12,border_color = #bfe3ff31,border_width = 2)

var tblf2s = table.new(position.bottom_right, 9, 12,border_color = color.rgb(191, 227, 255),border_width = 2)

if barstate.islast

table.cell(tblf2s, 0, 0,"PRICE:"+tbc2gsp , bgcolor=tbc2gs,text_color = color.black ,text_size = size.normal)

table.cell(tblf2s, 1, 0,CVC , bgcolor=tbc2gs,text_color = color.black ,text_size = size.normal)

// table.cell(tblf2s, 0, 1,'b'+str.tostring(buyv1) , bgcolor=tbc2gs,text_color = color.black ,text_size = size.normal)//

// table.cell(tblf2s, 1, 1,'s'+str.tostring(sellv1) , bgcolor=tbc2gs,text_color = color.black ,text_size = size.normal)//

table.cell(tblf2s2, 0, 0,N+a+ha , bgcolor=#f6fcfd54,text_color = #4562ad8d ,text_size = size.normal)

// table.cell(tblf2s, 1, 1,CVC , bgcolor=tbc2gs,text_color = color.black ,text_size = size.normal)


//plotshape(hl)

//i//f barstate.islast

//label.new(bar_index, high, str.tostring(sellv1))

//if barstate.islast

// label.new(bar_index, low, str.tostring(sellv1))

You might also like