
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