çok yerinde hata vardý. özellikle kopyala yapýþtýr yaptýðýn yerlerde deðiþkenlerin.
þu þekil bi görüntü mü istiyorsun?
PHP Code:var V =Sistem.GrafikVerileri ;
var C = Sistem.GrafikFiyatOku(V , "Kapanis") ;
var O = Sistem.GrafikFiyatOku(V , "Acilis") ;
var BarSayisi = V.Count;
var Rsiperiyot = Convert.ToSingle(Sistem.Parametreler[0]) ;
var Rsialtbolge = Convert.ToSingle(Sistem.Parametreler[1]) ;
var Rsiortabolge= Convert.ToSingle(Sistem.Parametreler[2]) ;
var Rsiustbolge= Convert.ToSingle(Sistem.Parametreler[3]) ;
var RSI = Sistem.RSI(V,Rsiperiyot);
var Rsialtbolgeninaltcizgisi = Sistem.Liste(0);
var Rsialtbolgeninustcizgisi = Sistem.Liste(0);
var Rsiortabolgeninaltcizgisi = Sistem.Liste(0);
var Rsiortabolgeninustcizgisi = Sistem.Liste(0);
var Rsiustbolgeninaltcizgisi = Sistem.Liste(0);
var Rsiustbolgeninustcizgisi = Sistem.Liste(0);
for (int i = 20; i < BarSayisi; i++)
{
Rsialtbolgeninaltcizgisi[i] = Rsialtbolgeninaltcizgisi[i-1];
Rsialtbolgeninustcizgisi[i] = Rsialtbolgeninustcizgisi[i-1];
Rsiortabolgeninaltcizgisi[i] = Rsiortabolgeninaltcizgisi[i-1];
Rsiortabolgeninustcizgisi[i] = Rsiortabolgeninustcizgisi[i-1];
Rsiustbolgeninaltcizgisi[i]= Rsiustbolgeninaltcizgisi[i-1];
Rsiustbolgeninustcizgisi[i]= Rsiustbolgeninustcizgisi[i-1];
if ( RSI[i-1] < Rsialtbolge && RSI[i] > Rsialtbolge ) // Sistem.YukariKestiyse(RSI, Rsialtbolge) )
{
Rsialtbolgeninaltcizgisi[i] = O[i];
Rsialtbolgeninustcizgisi[i] = C[i];
}
if (RSI[i-1] < Rsiortabolge && RSI[i] > Rsiortabolge ) //Sistem.YukariKestiyse(RSI, Rsiortabolge) )
{
Rsiortabolgeninaltcizgisi[i] = O[i];
Rsiortabolgeninustcizgisi[i] = C[i];
}
if (RSI[i-1] < Rsiustbolge && RSI[i] > Rsiustbolge ) //Sistem.YukariKestiyse(RSI, Rsiustbolge) )
{
Rsiustbolgeninaltcizgisi[i]= O[i];
Rsiustbolgeninustcizgisi[i]= C[i];
}
}
Sistem.Cizgiler[0].Deger = Rsiustbolgeninaltcizgisi ;
Sistem.Cizgiler[1].Deger = Rsiustbolgeninustcizgisi ;
Sistem.Cizgiler[2].Deger = Rsiortabolgeninaltcizgisi ;
Sistem.Cizgiler[3].Deger = Rsiortabolgeninustcizgisi ;
Sistem.Cizgiler[4].Deger = Rsialtbolgeninaltcizgisi ;
Sistem.Cizgiler[5].Deger = Rsialtbolgeninustcizgisi ;
eedit : yukardaki grafik senin verdiðin 10 25 50 80 deðildi
bu 5 dk lýk olan sizin deðerlere göre
![]()
sayin keci yanilyorsam duzeltin, orada zaten bir liste olusturuluyor, ve bu kapanislari tutuyor . rsi hesabinda yalnizca kapanis degerleriyle islem yapilabildiginden rahatlikle o listenin rsisi alinabilinir, ancak atr degerinde ise bildigim kadariyla high low open closelarin karsilastirilmasi neticesinde bir liste olusturulmasi lazim ki, benim yazdigim formule adapte edemedim. hani atrnin idealde acik formulu varsa belki adapte etmeyi deneyebilirim.. anladigim kadariyla sizin icin basit birsey bu.
bang bang you shot me down..
ATR ye liste kullaným þekli ile ister fiyat ister RSI deðerini hesaplattýrýp kullanabilirsin.
AverageTrueRange(Liste, 14)
var V =Sistem.GrafikVerileri ;
var C = Sistem.GrafikFiyatOku(V , "Kapanis") ;
var RSI = Sistem.RSI(V,14);
RSI_ATR=Sistem.AverageTrueRange(RSI, 14);
FYT_ATR=Sistem.AverageTrueRange(C, 14);
abi bu kullanimlari biliyorum. rsi (benim ornegini attigim)tek bir parametre aldigindan dolayi kapanislari for'lamak yetiyor, ancak atrde bildigim kadariyla 4 parametreye bakilip karsilastirilip ona gore hesaplaniyor atr degeri. benim sikinti cektigim yer surasi ;
for (int i = 1; i < V.Count; i++)
{
if (V[i].Date.Day != V[i - 1].Date.Day)
{
PrevGunC.Add(V[i - 1].Close);
GunTarih.Add(V[i].Date.ToString("yyyyMMdd"));
}
}
buralara highli lowlu inside bar filan olursa atrnin hesabini yapacak seyler lazim. grafikverilerinden tum bilgileri cekiyorsa ben soyle bi kullanim denedim ama yemedi ;
PrevGunC.Add(V[i - 1]);
pp
yani komple su sekilde degistirdim, guya grafikverilerinin icinden atryi hesaplaticam ,
var V = Sistem.GrafikVerileri;
var PrevGunV = new List<float>();
var GunTarih = new List<string>();
for (int i = 1; i < V.Count; i++)
{
if (V[i].Date.Day != V[i - 1].Date.Day)
{
PrevGunV.Add(V[i - 1]);
GunTarih.Add(V[i].Date.ToString("yyyyMMdd"));
}
}
var PrevGunATR = Sistem.AverageTrueRange(PrevGunV, 20);
var ATR = Sistem.Liste(0);
var StartPos = 0;
for (int i = 1; i < V.Count; i++)
{
for (int j = StartPos; j < PrevGunATR.Count; j++)
{
if (V[i].Date.ToString("yyyyMMdd") == GunTarih[j])
{
ATR[i] = PrevGunATR[j];
StartPos = j;
break;
}
}
}
// RSI listesi önceki günün deðeridir.
//intraday grafiklerde repaint olmadan döngü içinde kullanýlabilir.
Sistem.Cizgiler[0].Deger = ATR;
ancak yemedi.
yoksa herhangi bir listenin atrsi rsisi hesaplanabilir idealde, anlamli bulunuyorsa.
bang bang you shot me down..
yanlýþ anlamadýysam atr kullanmak istiyosunuz ama çýlgýn açýlýþ barlarýnýn bozmasýný istemiyosunuz
öyle ise yukarýda yaptýðýnýz gibi açýlýþ barýnýn H L ve C unu bir önceki bar olarak deðiþtirebilirsiniz
o baþlangýç barýný tespit ettiðiniz yerde v[i].Kapanis=v[i-1].Kapanis; vs vs þeklinde
Baboli parmaklarýna, o parmaklarý yöneten beyin kývrýmlarýna, ayýrdýðýn zamana, o zamaný ayýrma kararý veren beyninin limbik sistemine teþekkür ederim. O sistemden salgýlanan dopamin miktarýn daha nice nice olsun. ( psikolojik danýþman iltifatý böyle oluyor maalesef . özür )
Þimdi benim limbik sistemime takýlýp azda olsa kortizon salgýlatan þey þu. Ýncelediðim bütün kod parçaçýklarýnda parametre deðerleri için "convert.tosingle" ihtiyaç duyulmamýþ.Bu örnekteki kullaným mantýðý ne? (niye çok sayýda ondalýk basamak içeren reel sayýya döndürüyoruz ) ( beginner seviyesi böyle olur. ÖZÜR )
var V =Sistem.GrafikVerileri ;
var C = Sistem.GrafikFiyatOku(V , "Kapanis") ;
var O = Sistem.GrafikFiyatOku(V , "Acilis") ;
var BarSayisi = V.Count;
var Rsiperiyot = Convert.ToSingle(Sistem.Parametreler[0]) ;
var Rsialtbolge = Convert.ToSingle(Sistem.Parametreler[1]) ;
var Rsiortabolge= Convert.ToSingle(Sistem.Parametreler[2]) ;
var Rsiustbolge= Convert.ToSingle(Sistem.Parametreler[3]) ;
Baboli demiþim özür. Bearbull.Yiðidi öldür hakkýný yeme.
Yer Ýmleri