düşünmenize gerek yokki tradingview de orjinal koda bir plot daha atıp bilmediğiniz değişkenin değerine bakabilirsiniz 2 sn de:)
Printable View
Arkadaşlar merhaba
aşağıdaki şartlara göre sorgu yapan kod lazım?
- Macd Al verecek
- RSİ 50 üzerinde, Momentum 100 ve üzerinde olanlar
- 8 Günlük Ortalaması , 21 günlük Ortalamasını yukarı kesen
- 50 günlük ortalaması- 200 günlük ortalamasını yukarı kesen
- Most yani TOMA değeri 1 olan
hisselerin sorgusu yapan kod , rica ediyorum.
Sn. Hector Salamanca, Sonli ve Anonim çok teşekkür ederim. Büyük hayaller kurmuştum ama sıradan bir bant işte.
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..
https://i.hizliresim.com/md0VwG.pngPHP 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;