0 beğenilme 0 beğenilmeme
1,081 kez görüntülendi
Merhaba Aşağıdaki zig zag indikatörünü ikinci koşul olarak ta 5-41 keşişimini sağlayan bir formül yazabilir mi ?

 Not:(Pine Script dilindeki Zig Zag İndikatörü yazılamıyorsa  onun yerine üçlü dip formasyonu formülünü de yazabilirsiniz)

 

 

 

//@version=4
study("Double Zig Zag with HHLL", overlay = true, max_bars_back = 500)
prd1 = input(defval = 8, title="ZigZag Period 1", minval = 2, maxval = 20)
prd2 = input(defval = 20, title="ZigZag Period 2", minval = 2, maxval = 50)
showzz = input(defval = "Show Both", title = "Show Zig Zags", options = ["Show Zig Zag 1", "Show Zig Zag 2", "Show Both", "Show None"])
showhhll = input(defval = "Show Both", title = "Show HHLL", options = ["Show HHLL 1", "Show HHLL 2", "Show Both", "Show None"])
upcol1 = input(defval = color.lime, title = "Zig Zag 1 Up Color")
dncol1 = input(defval = color.red, title = "Zig Zag 1 Down Color")
upcol2 = input(defval = color.blue, title = "Zig Zag 2 Up Color")
dncol2 = input(defval = color.purple, title = "Zig Zag 2 Down Color")
txtcol = input(defval = color.black, title = "Text Color")
zz1style = input(defval = "Dashed", title = "Zig Zag 1 Line Style", options = ["Dashed", "Dotted"])
zz1width = input(defval = 2, title = "Zig zag 1 Line Width", minval = 1, maxval = 4)
zz2width = input(defval = 3, title = "Zig zag 2 Line Width", minval = 1, maxval = 6)

float ph1 = highestbars(high, prd1) == 0 ? high : na
float pl1 = lowestbars(low, prd1) == 0 ? low : na
float ph2 = highestbars(high, prd2) == 0 ? high : na
float pl2 = lowestbars(low, prd2) == 0 ? low : na

var dir1 = 0
var dir2 = 0
dir1 := iff(ph1 and na(pl1), 1, iff(pl1 and na(ph1), -1, dir1))
dir2 := iff(ph2 and na(pl2), 1, iff(pl2 and na(ph2), -1, dir2))

var max_array_size = 10 // [5, 2] matrix
var zigzag1 = array.new_float(0)
var zigzag2 = array.new_float(0)
oldzigzag1 = array.copy(zigzag1)
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.

dir1changed = change(dir1)
if ph1 or pl1
    if dir1changed
        add_to_zigzag(zigzag1, dir1 == 1 ? ph1 : pl1, bar_index)
    else
        update_zigzag(zigzag1, dir1 == 1 ? ph1 : pl1, bar_index, dir1)

dir2changed = 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)

if array.size(zigzag1) >= 6
    var line zzline1 = na
    var label zzlabel1 = na
    if array.get(zigzag1, 0) != array.get(oldzigzag1, 0) or array.get(zigzag1, 1) != array.get(oldzigzag1, 1)
        if array.get(zigzag1, 2) == array.get(oldzigzag1, 2) and array.get(zigzag1, 3) == array.get(oldzigzag1, 3)
            line.delete(zzline1)
            label.delete(zzlabel1)
        if showzz == "Show Zig Zag 1" or showzz == "Show Both"
            zzline1 := line.new( x1 = round(array.get(zigzag1, 1)), y1 = array.get(zigzag1, 0), x2 = round(array.get(zigzag1, 3)), y2 = array.get(zigzag1, 2),
                                 color = dir1 == 1 ? upcol1 : dncol1,
                                 width = zz1width,
                                 style = zz1style == "Dashed" ? line.style_dashed : line.style_dotted)
        if showhhll == "Show HHLL 1" or showhhll == "Show Both"
            hhlltxt = dir1 == 1 ? array.get(zigzag1, 0) > array.get(zigzag1, 4) ? "HH" : "LH" : array.get(zigzag1, 0) < array.get(zigzag1, 4) ? "LL" : "HL"
            labelcol = dir1 == 1 ? array.get(zigzag1, 0) > array.get(zigzag1, 4) ? upcol1 : dncol1 : array.get(zigzag1, 0) < array.get(zigzag1, 4) ? dncol1 : upcol1
            zzlabel1 := label.new(x = round(array.get(zigzag1, 1)), y = array.get(zigzag1, 0), text = hhlltxt, color = labelcol, textcolor = txtcol, style = dir1 == 1 ? label.style_label_down : label.style_label_up)

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 = round(array.get(zigzag2, 1)), y1 = array.get(zigzag2, 0), x2 = round(array.get(zigzag2, 3)), y2 = array.get(zigzag2, 2), color = dir2 == 1 ? upcol2 : dncol2, width = zz2width)
        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 = 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)
Analizler kategorisinde (14 puan) tarafından | 1,081 kez görüntülendi

1 cevap

0 beğenilme 0 beğenilmeme

merhaba,

diğer dillerden formül çevirimi coğu zaman mümkün olmamaktadır,(formülü inceledik maalesef olumlu dönüş yapamıyoruz

3 dip için bir formül yazımı mevcut değildir,

2 dip yapıp istediğiniz kesişim olan hisseler için aşağıdaki formülü kullanabilirsiniz

ZG1:=5;
YAKINLIKYUZDESI:=1;
BARSAY:=5;
ZZ:=If(PeakBars(1,H,ZG1)=0,Zig(H,ZG1,%),If(TroughBars(1,L,ZG1)=0,Zig(L,ZG1,%),If((Zig(H,ZG1,%)+Zig(L,ZG1,%))/2>Ref((Zig(H,ZG1,%)+Zig(L,ZG1,%))/2,-1),H,L)));
ZZHL:=Zig(ZZ,ZG1,%);
D1:=valuewhen(1.,ZZHL>REF(ZZHL,-1) AND REF(ZZHL,-1)<REF(ZZHL,-2),REF(L,-1));
D2:=valuewhen(2.,ZZHL>REF(ZZHL,-1) AND REF(ZZHL,-1)<REF(ZZHL,-2),REF(L,-1));
T1:=valuewhen(1.,ZZHL<REF(ZZHL,-1) AND REF(ZZHL,-1)>REF(ZZHL,-2),REF(H,-1));
ABS(D1-D2)*100/D2<=YAKINLIKYUZDESI and barssince(ZZHL>REF(ZZHL,-1) AND REF(ZZHL,-1)<REF(ZZHL,-2))<=BARSAY   AND cross(mov(c,5,s),mov(c,41,s))

 

ayrıca 3 dip formasyon oluşumlarını formasyon analizi bölümünden bakabilirsiniz,

bilgilerinize

iyi günler dileriz

 

(40,149 puan) tarafından
Hoş geldiniz, Matriks Destek Platformu sizlere sorularınızın hızlıca cevaplanması için bir ortam sağlar. Sorduğunuz ve cevapladığınız soruların ve yorumlarınızın aldığı oylar üzerinden puan kazanırsınız. Puan sistemine bağlı kampanyamızla ücretsiz kullanım avantajlarından faydalanabilirsiniz.



8,636 soru
8,590 cevap
4,821 yorum
19,799 kullanıcı