0 beğenilme 0 beğenilmeme
513 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 | 513 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,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,639 soru
8,593 cevap
4,826 yorum
19,845 kullanıcı