Sn Keçi, Sn Çaglar 1 dk lik datadan üst periyot ortalamalari donemcevir kullanmadan elde edebilecegimiz bir yonteminiz var midir? Yani örnegin 5 dklik 200 birim ortalamayi 1 dklik datadan hesaplatmak istiyorum.
|
|
idealin nerede hata yaptığını dün yazdım aslında.
sn çağların formülü mantığında yazıyorum, grafik hesaplarında bu formülü kullanıyor ideal:
ha[i].Open = (bars[i - 1].Open + bars[i - 1].Close) / 2;
yani düz veri üzerinden hesaplanıyor open.
doğrusu sn çağlar'ın araştırmasından anladığım kadarı ile toplanan değerlerin önceki barlara ait Heikin ashi değerleri olmasıdır.
belirttiğiniz sol üstte yazan rakamları bir hata olarak yazmıyorum, bu ise bence önemli bir eksiklik.
sonuç olarak;
1.ideal heikin ashi de open formülünü düzeltmelidir.
2.heikin ashi grafik tipinde sol üst panelde heikin ashi değerleri olmalıdır.
Keçiyi yardan uçuran bir tutam ottur..
Sn Keçi, Sn Çaglar 1 dk lik datadan üst periyot ortalamalari donemcevir kullanmadan elde edebilecegimiz bir yonteminiz var midir? Yani örnegin 5 dklik 200 birim ortalamayi 1 dklik datadan hesaplatmak istiyorum.
Donemcevir'in yaptığı iş,
küçük periyot verinin count u kadar yeni bir liste oluşturup,
bu yeni boş listeyi "date" kontrolü yaparak,
büyük periyot veri üzerinden hesaplanan liste ile doldurmaktır.
sonuç olarak doldurulan bu yeni liste tarihleri eşleşmiş ve küçük periyot verinin countu kadar döner.
Böylece çizmek mümkün olur.
Benzer bir işi farklı bir kodla yapmak mümkün fakat farklı bir yolla yapmak mümkün değil.
Çünkü yazılacak yeni kodlar aynı iş mantığında olmak zorunda, özellikle amaç grafik çizmek ise.
Bundan dolayı şunu soracağım, neden Donemcevir kullanmak istemiyorsunuz?
Keçiyi yardan uçuran bir tutam ottur..
Donemcevirden olsa gerek ( tam emin degilim ama başka bir sebebi de olmamali ) robotta flate dönüş yapiyor flatli sistem kullanmamama ragmen. Ha birde ust periyotlarin da devamli güncel olmasi gerekiyor donemcevirde. 1 dklik grafikten ilgili üst periyotlarin kapanislarini elde ediyorum oraya kadar sorun yok. Ama iş ortalamayi hesaplamaya gelince verdigimiz 100 birimlik degeri 1 dklik grafige gore aliyor ve iş tikaniyor , cizmesinin önemi yok yeterki hesabi yapsin.
Sn Keçi'nin yorumlarına katılmak ile birlikte dönem çevir kullanmadan her 5 dakikada bir barın kapanış değerini alıp onları bir listeye atan ve bu listenin ortalamasını belli periyotlarda hesaplayan bir sistem yazdım:
Kodla ile ilgili önemli noktalar şunlarKod:try { var P = Sistem.GrafikVerileri; var C = Sistem.GrafikFiyatSec("Kapanis"); var C5 = new List<float>(); var C5MA = Sistem.Liste(0); var ma5Period = 200; Sistem.Yon = User.List("", Sistem.BarSayisi); var pos = "F"; var c5ma = 0f; for (int i = 0; i < P.Count; i++) { if (P[i].Date.Minute % 5 == 0) C5.Add(P[i].Close); if (C5.Count == ma5Period) { c5ma = C5.Average(); C5.Clear(); } C5MA[i] = c5ma; var buy = C[i] > C5MA[i]; var sell = C[i] < C5MA[i]; var flat = false; if ((pos == "A" || pos == "S") && flat) { Sistem.Yon[i] = pos = "F"; } else if (pos != "A" && buy) { Sistem.Yon[i] = pos = "A"; } else if (pos != "S" && sell) { Sistem.Yon[i] = pos = "S"; } } Sistem.GetiriHesapla("01/01/2010", 0.000); Sistem.Cizgiler[0].Deger = Sistem.GetiriKZ; Sistem.Cizgiler[1].Deger = Sistem.GetiriKZAy; Sistem.Cizgiler[2].Deger = C5MA; } catch (Exception ex) { Sistem.Mesaj(ex.ToString()); }
- 5 dakikada bir kapanış değeri alıp 200 bar beklediği için toplamda 1000 bar beklemiş oluyor 1 dakikalık grafiklerde.
- Ben hesaplamaya i = 0'da başladım yanı geriden bar toplayıp hesaplıyor. Dolayısıyla son barlardan geriye doğru hesaplasın derseniz algoritmayı değiştirmeniz gerekiyor.
Hızlı bir şekilde yazıp test etmediğim için hatalar olabilir, kontrol etmenizi tavsiye ederim.
Teşekkür ederim, kod örneğiniz şahsen benim hic anlamadiğim terimler içeriyor deneyeceğim. bilginiz bana göre cok üst düzey, umarim piyasada getirisini fazlasiyla aliyorsunuzdur.
Verdiğiniz örnek dogruysa mesela 15-30-60 periyotlarda %5 olan kisma ne yazacagiz? Sacma soru sormuş olabilirim
Şunu yapmak mümkün müdür. 5 dakikalık periyodda cci sıfırı yukarı ve aşağı kesen hisseleri sıfıra olan uzaklığına göre sıralasın ve bunları bir sayfada göstersin dursun. Bunu 5 dakikada bir kontrol edip sayfayı yenilesin... Sıfırı yukarı kesen ve en uzak olan en üstte, sıfırı aşağı kesmiş be en uzak olan ise en aşağıda şeklinde. Mümkün ise hisseleride bir txt den okutayım istediklerimi kontrol edeyim.
Syg..
Hedefin yok ise yardım edecek rüzgarı bulamazsın.
|
|
İyi dilekleriniz için teşekkür ediyorum. Algo trading de yeni sayılırım dolayısıyla sizin sisteminizin getirisine henüz yaklaşamadımbilginiz bana göre cok üst düzey, umarim piyasada getirisini fazlasiyla aliyorsunuzdur.
Biraz açıklama yapsam daha iyi anlaşılabilirdi haklısınız.Verdiğiniz örnek dogruysa mesela 15-30-60 periyotlarda %5 olan kisma ne yazacagiz?
% 5 yazdığım satır barın dakikasının 5 ve 5'in katları olduğunda 0 değerini üretiyor. Yani 5, 10, 15,... 50, 55 gibi.
15 dakika için "P[i].Date.Minute % 15 == 0" yazardım ancak bu varsayım seansın saat başı, 15 veya 30'uncu dakikada başladığını varsayıyor.
30 ve 60 için bu ifade daha kolay yazılabilir. Örneğin 60 için dakikanın 0 olması yeterli, yani: "P[i].Date.Minute == 0". 30 için ise dakika 0 veya 30 olabilir şeklinde.
Yer İmleri