
Originally Posted by
muminozturk
Hocam bilgisizliðimi baðýþlayýn.
C.de bir deðiþkeni bar numarasýna göre hesaplayamamak kötüymüþ.
Þu yapýlamaz mý hocam.
x deðiþkenini 1-20 barlar arasýnda deðer ata. (belki bar no ile)
y deðiþkenine 20 nolu barý ata.
z deðiþkenine 21-1000 nolu barlarda þu deðiþkeni ata
(atanmayan deðerler sýfýr ise)
zz= x+y+z
Yapýlamaz demedim iþe yaramayacaðýný düþündüðüm için yazmak istemedim. Sanýrým siz metastock diline aþýnasýnýz. Metastock scripttir, C# ise programlama dilidir yazýyla ifade edilebilen her hesaplama yaptýrabilir. Örneðin yapmak istediðiniz þeyi kodladým.
Bu kod 20.bardan sonra sadece bir sonraki barýn fiyatý alýp indikator gibi çizer, yani repaint yapar.
PHP Code:
var V = Sistem.GrafikVerileri;
var C = Sistem.GrafikFiyatOku(V, "Kapanis");
var periyot = 20;
var es = Sistem.Liste(0);
for (int j = 0; j < V.Count-2; j++)
{
if (j < periyot)
{
// bar sayýsý periyottan küçükse yapýlacak hesaplamalar
es[j] = C[j+2]; // bu satýr repaint yapar, gelecekteki iki bara bakar.
}
else if (j == periyot)
{
// bar sayýsý periyota eþitken yapýlacak hesaplama
es[j] = C[j];
}
else
{
// bar sayýsý periyottan büyükken yapýlacak hesaplama
es[j] = C[j + 1]; // bu satýr da gelecekteki bir bardan bilgi çalar.
}
}
Sistem.Cizgiler[0].Deger = es;
Eðer her 20 barda, bar sayýmýnýn baþa dönmesini istiyorsanýz þu þekilde ifade edebiliriz.
PHP Code:
var V = Sistem.GrafikVerileri;
var C = Sistem.GrafikFiyatOku(V, "Kapanis");
var periyot = 20;
var es = Sistem.Liste(0);
for (int j = 0; j < V.Count-2; j++)
{
if (j < periyot)
{
// bar sayýsý periyottan küçükse yapýlacak hesaplamalar
es[j] = C[j+2]; // bu satýr repaint yapar, gelecekteki iki bara bakar.
}
else if (j == periyot)
{
// bar sayýsý periyota eþitken yapýlacak hesaplama
es[j] = C[j];
}
else
{
// bar sayýsý periyottan büyükken yapýlacak hesaplama
es[j] = C[j + 1]; // bu satýr da gelecekteki bir bardan bilgi çalar.
}
if (j % periyot == 0)
periyot = j + 20;
}
Sistem.Cizgiler[0].Deger = es;
Yanlýþ anlamýþ olabilirim. Yapmak istediðiniz bu deðilse de kod üzerinde deðiþiklik yaparak istediðiniz þeyi elde etmeye çalýþýn.
for döngüsünün son deðerinin "V.Count - 2" olmasýna dikkat edin, çünkü gelecekten bilgi almak için 2 bar geçmiþte olmak gerek aksi halde hata verir çizgi görünmez.
Yer Ýmleri