0 beğenilme 0 beğenilmeme
343 kez görüntülendi

Nadaraya-Watson Envelope [LuxAlgo]

kodları : 

// 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("Nadaraya-Watson Envelope [LuxAlgo]",overlay=true,max_bars_back=1000,max_lines_count=500,max_labels_count=500)

length = input.float(500,'Window Size',maxval=500,minval=0)

h      = input.float(8.,'Bandwidth')

mult   = input.float(3.)

src    = input.source(close,'Source')

 

up_col = input.color(#39ff14,'Colors',inline='col')

dn_col = input.color(#ff1100,'',inline='col')

disclaimer = input(false, 'Hide Disclaimer')

//----

n = bar_index

var k = 2

var upper = array.new_line(0)

var lower = array.new_line(0)

 

lset(l,x1,y1,x2,y2,col)=>

    line.set_xy1(l,x1,y1)

    line.set_xy2(l,x2,y2)

    line.set_color(l,col)

    line.set_width(l,2)

 

if barstate.isfirst

    for i = 0 to length/k-1

        array.push(upper,line.new(na,na,na,na))

        array.push(lower,line.new(na,na,na,na))

//----

line up = na

line dn = na

//----

cross_up = 0.

cross_dn = 0.

if barstate.islast

    y = array.new_float(0)

   

    sum_e = 0.

    for i = 0 to length-1

        sum = 0.

        sumw = 0.

       

        for j = 0 to length-1

            w = math.exp(-(math.pow(i-j,2)/(h*h*2)))

            sum += src[j]*w

            sumw += w

       

        y2 = sum/sumw

        sum_e += math.abs(src[i] - y2)

        array.push(y,y2)

 

    mae = sum_e/length*mult

   

    for i = 1 to length-1

        y2 = array.get(y,i)

        y1 = array.get(y,i-1)

       

        up := array.get(upper,i/k)

        dn := array.get(lower,i/k)

       

        lset(up,n-i+1,y1 + mae,n-i,y2 + mae,up_col)

        lset(dn,n-i+1,y1 - mae,n-i,y2 - mae,dn_col)

       

        if src[i] > y1 + mae and src[i+1] < y1 + mae

            label.new(n-i,src[i],'▼',color=#00000000,style=label.style_label_down,textcolor=dn_col,textalign=text.align_center)

        if src[i] < y1 - mae and src[i+1] > y1 - mae

            label.new(n-i,src[i],'▲',color=#00000000,style=label.style_label_up,textcolor=up_col,textalign=text.align_center)

   

    cross_up := array.get(y,0) + mae

    cross_dn := array.get(y,0) - mae

 

alertcondition(ta.crossover(src,cross_up),'Down','Down')

alertcondition(ta.crossunder(src,cross_dn),'Up','Up')

 

//----

var tb = table.new(position.top_right, 1, 1

  , bgcolor = #35202b)

 

if barstate.isfirst and not disclaimer

    table.cell(tb, 0, 0, 'Nadaraya-Watson Envelope [LUX] Repaints'

      , text_size = size.small

      , text_color = #cc2f3c)

 

İndikatör Pozisyonları ve Değerleri kategorisinde (75 puan) tarafından | 343 kez görüntülendi

1 cevap

0 beğenilme 0 beğenilmeme
merhaba,

diğer dillerden formül çevirimi çoğu zaman mümkün olmamaktadır,

formülü inceledik maalesef olumlu dönüş yapamıyoruz,

bilgilerinize
(40,139 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.



7,615 soru
7,614 cevap
4,444 yorum
10,766 kullanıcı