
Originally Posted by
Hector Salamanca
düşünmenize gerek yokki tradingview de orjinal koda bir plot daha atıp bilmediğiniz değişkenin değerine bakabilirsiniz 2 sn de

Sağolasın hocam, bazen jeton düşmüyor
) Ama bar numarasıymış, ilk koda bakarken öyle gibi gelmesine rağmen mantıksız gelmişti, not yazmıştım sadece.. Bölgeyi sadeleştirdiğinde -1 çıkıyor, kafa mı karıştırmak istemiş, onun mu kafa karışıkmış anlamadım
Son bölümü de anonim arkadaşın koduyla düzenledim..
Soran arkadaş için kodun son hali ve görüntüler aşağıda, flatten ve mult la oynamak lazım.. Şahsi fikrim Bollinger ve normal ortalamalara kasmak daha faydalı olur..
PHP Code:
/*
//@version=2
study("Pseudo Polynomial Channel",overlay=true)
length = input(14),morph = input(0.9,minval=0,maxval=1),mult = input(1.),flatten = input(1.)
//----
x = n
y = close
m(a,b) =>
p = morph * a + (1-morph) * b
k = nz(m(k[length],y),y) + (x-x[length])/(x[length*2]-x[length]) * (nz(m(k[length*2],y),y) - nz(m(k[length],y),y))/flatten
k1 = sma(k,length)
er = cum(abs(y-k1))/n * mult
//----
a = k1 + er
b = k1 - er
//----
A = plot(a,color=#2196f3,linewidth=2,transp=0)
plot(k1,color=#e65100,linewidth=2,transp=0)
B = plot(b,color=#ff1100,linewidth=2,transp=0)
fill(A,B,#2196f3,transp=95)
*/
var y = Sistem.GrafikFiyatSec("Kapanis");
int i=Sistem.BarSayisi-1;
int length=14;
float morph=0.9f;
int mult=1;
int flatten=1;
var a=Sistem.Liste(0);
var b=Sistem.Liste(0);
var k=Sistem.Liste(0);
for (int j = 100; j < Sistem.BarSayisi; j++)
{
var m = morph*k[j-length] + (1-morph)*y[j] ;
if(m==0) m=y[j];
var m2 = morph*k[j-length*2] + (1-morph)*y[j] ;
if(m2==0) m2=y[j];
var m1= (-1)*(m2-m)/flatten ;
k[j] = m+m1 ;
}
var k1=Sistem.MA(k, "Simple", length);
var k2= Sistem.Liste(0);
for (int j = 100; j < Sistem.BarSayisi; j++)
k2[j] = Math.Abs(y[j] - k1[j] ) ;
var er = Sistem.Sum(k2)/i*mult ;
for (int j = 100; j < Sistem.BarSayisi; j++)
{
a[j] = k1[j] + er ;
b[j] = k1[j] - er ;
}
Sistem.Cizgiler[0].Deger = k1;
Sistem.Cizgiler[1].Deger = a;
Sistem.Cizgiler[2].Deger = b;
Yer İmleri