|
|
Bir ara eski forumda geçmişti. Aradım bulamadım.
imkb 100 , imkb 50 yada tüm gibi hisse gruplarını kod içinde listeye atabileceğimiz bir yöntem vardı.
hatırlayan varmı
kendim oluşturup kullanabilirim onda sorun yok.
idealin güncellediği listeyi kullanmak istiyorum. gruplara alınan çıkarılan hisseleri falan manuel kontrol etmek istemiyorum .
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
Senin almaya cesaret edemediğin riskleri alanlar, senin yaşamak istediğin hayatı yaşarlar..
Sokrates twit @erhanacikgoz1
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...
Ş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 T Ref<T>(System.Collections.Generic.IEnumerable<T> source, int index) { try { return source.ElementAt(source.Count() - 1 - index); } catch (Exception) { return default(T); } }
Kullanımı da şu şekilde:Kod:public float Ref(List<float> source, int index) { try { return source[source.Count - 1 - index]; } catch (Exception) { return -1f; } }
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; } }
Son düzenleme : Caglar; 12-08-2017 saat: 14:44. Sebep: Eklemeler, açıkalamlar
Bear_Bull
@BearBull26
|
|
Ref olayına bir sonraki zamanda bakacagım.
şimdi daha elzem olan bir sorunum var şu algoritmayı bir turlu kuramadım nerede hata yaptıgımı anlayamadım türlü türlü denemeler yaptım kafayı sıyırmak üzereyim.
bu algoritma işi adamda beyin yaktırır.
SORU:
KIRMIZI ÇİZGİ YEŞİL ÇİZGİYİ YUKARI KESERSE A1Y DEVREYE GİRSİN
KIRMIZI ÇİZGİ MAVİ ÇİZGİYİ YUKARDAN AŞAĞI KESERSE A2Y DEVREYE GİRSİN
Yani kırmızı çizgimiz yeşil bir kere yukarı kestikten sonra full a1y çalışacak taa ki mavi çizgiyi geçip geçtikten sonra aşağı kırılana kadar
aşağı kırdıgında ise a2y devreye girsin yeşil çizgiyi aşağı kırıncaya kadar
ve bunu şu sekilde yazmanız lazım ben oraya kadar ilerletebildim.
A1 KIRMIZI CIZGI X9 YEŞİL ÇİZGİ X10 da MAVİ ÇİZGİ
özetle kırmızı yeşili önce aşağı sonra yukarı keserse a1y neyse onları sürekli kontrol et kırmızı maviyi once yukarı kesip sonra aşağı kestiyse a2y ye bakx1[i] =
a1[i-1] > x10[i] && a1[i] < x10[i] && a1[i-1] < x9[i] && a1[i] > x9[i] && a1y[i] == 1 ? 1 :
// kızmı çizgi bir önceki bar büyükse mavi çizgiden ve kırmızı çizgi küçükse mavi çizgiden ve kırmızı çizgi bir önceki bar küçükse yeşil çizgiden ve şimdiki barda büyükse a1y 1 ise 1 yap
a1[i-1] > x10[i] && a1[i] < x10[i] && a1[i-1] < x9[i] && a1[i] > x9[i] && a1y[i] == -1 ? -1 :
a1[i-1] > x10[i] && a1[i] < x10[i] && a1[i-1] < x9[i] && a1[i] > x9[i] && a1y[i] == 0 ? 0 :
a1[i-1] > x10[i] && a1[i] < x10[i] && a1[i-1] > x9[i] && a1[i] < x9[i] && a2y[i] == 1 ? 1 :
a1[i-1] > x10[i] && a1[i] < x10[i] && a1[i-1] > x9[i] && a1[i] < x9[i] && a2y[i] == -1 ? -1 :
a1[i-1] > x10[i] && a1[i] < x10[i] && a1[i-1] > x9[i] && a1[i] < x9[i] && a2y[i] == 0 ? 0 :
x1[i-1] ;
}
BU KOD SUREKLI a2Y Yİ CALISTIRIYOR
Son düzenleme : erhanacikgoz1; 12-08-2017 saat: 16:28.
Senin almaya cesaret edemediğin riskleri alanlar, senin yaşamak istediğin hayatı yaşarlar..
Sokrates twit @erhanacikgoz1
Yer İmleri