
Originally Posted by
erhanacikgoz1
Arkadaşlar sanki ref diye birşey vardı refmiydi neydi tam hatırlamıyorum.
bir listem var ve bu listenin atıyorum son 60 bar önceki değerini referans almasını istiyorum yani son 60 bar geçinceye kadar o çizgi revize olsada değerim değişmesin.
bir çizgim var ve bu çizginin 1000 puan uzerınde flat olmak istiyorum.
ancak yukseı gıderken bu çizgi yukarı gişttiği için flata geçme noktamda o çizgiyle aynı anda yukarı gidiyor.
ancak sisteme şunu dersem atıyorum 200 bar oncekı değeri referans al ve çizgiyi 200 bar sonra revize et düzelt gibi birşey dersem.
çizgi 200 bar geçinceye kadar sabit kalacak 200 bar sonra revize edecek kendini.
böylece o 200 bar geçinceye kadar flata geçebileceğim.
diğer türlü hiçbir zman flat olamaz.
Şimdi birşey vardı sankı bunu yapan ref miydi ?
nasıl kullnabileceğimide bilmiyorum varmı fıkrı olan
Bildiğim kadarıyla iDeal, indexer yani köşeli paranteze değer vererek erişime izin verdiği için ayrca Ref metodu yazılmamış. Ancak Matriks'ten geçenler veya geçmek isteyenler için kullanışlı olabiliecek bir metod iyi olabilir. Aşağıdaki metodu şimdi yazdım ancak denemedim. Test etmek ve doğruluğundan emin olmak size ait...
Kod:
public T Ref<T>(System.Collections.Generic.IEnumerable<T> source, int index)
{
try
{
return source.ElementAt(source.Count() - 1 - index);
}
catch (Exception)
{
return default(T);
}
}
Şunu belirtmekte fayda var. Ref metodu içerisinde hangi değer tipine sahip liste verilirse verilsin çalışır. Örneğin List<float> için de çalışır List<int> için de. Bir hata durumunda geri dönüş değeri int, float, double vs için sıfır (0) dır. Eğer hata durumunda başka bir şey dönsün isterseniz bu metodu kullanmak yerine aşağıdakini kullanmanız daha kolay olur sizin için.
Kod:
public float Ref(List<float> source, int index)
{
try
{
return source[source.Count - 1 - index];
}
catch (Exception)
{
return -1f;
}
}
Kullanımı da şu şekilde:
var Kapanis = Sistem.GrafikFiyatSec("Kapanis");
var sonKapanis = User.Ref(Kapanis, 0);
var birOncekiKapanis = User.Ref(Kapanis, 1);
Ref içerisine verilecek olan değerin her zaman pozitif olması gereklidir.
Eğer Matiks ile birebir aynı olsun isterseniz (yani ref parametresi negatif kullanılsın) metot şu şekilde değiştirilmeli:
Kod:
public float Ref(List<float> source, int index)
{
try
{
return source[source.Count - 1 + index];
}
catch (Exception)
{
return -1f;
}
}
Yer İmleri