çok teşekkür ederim.
|
|
Bear_Bull
@BearBull26
çok teşekkür ederim.
Teşekkürler ,Emeklerinize Sağlık
s.aleyküm kolay gelsin ideal programına kagi adlı bar cizimi yapılabilirmi? forum gördünümüzmü geriye doğru taradım,böyle birşey göremedim,sagolsun renkoyu ugraşmışlar ,onu görünce acaba dedim kagi bar da yapılabilirmi? https://school.stockcharts.com/doku...._analysis:kagi
Merhaba ;
Asagida IDeal icin Renko_Fixed_HL Sistem/Indikatorunun kodunu paylasiyorum. Umarim ilgilenenlerin isine yarar.
Bir kac onemli detayi belirtmek isterim ki ;
1-Renko Orijinali itibari ile Tick data ile calismaktadir. ( Bir fiyatin tek bir adette olsa ilgili fiyatan islem gormesi Renko Bricklerinin olusmasi icin yeterlidir ) Bu sistemde cok fazla data tutma zorunlulugu getirdigi icin buradaki Renko Brick indikatoru High ve Low verilerini kullanarak candlestick chartlar uzerine adapte edilmistir.Kisaca Yuksek ve Dusuk degerlerine gore calismaktadir.
2-Renko'nun en buyuk ozelligi fiyatlardaki dalgalanmalari elimine ederek daha yumusak bir grafik elde edilmesidir. Elbette buda Risk faktorunu arttirici bir ozelliktir. Bu sebeple KAPANIS verisine gore Renko Bricklerinin olusmasi gecikmeye sebep olarak Risk faktorunu daha cok arttiracagi icin bu calismada tercih edilmemistir.
3-Renko Bricklerinin olusmasi icin en onemli data ILK RENKO BRICK'idir. Bir cok platform acilis datasini referans alarak Renko Bricklerini cizmektedir. Sistemde tutulan gunici (intraday ) datasi sabit oldugu ve Ilk Renko Brick icin gerekli acilis datasi zamana gore surekli kayma gosterecegi icin , Ilk datadan itibaren olusacak Renko Brickleride zamanla ( Kapanis -Ust deger ) degisiklik gosterecektir. Buda hergun degisik bir Renko Grafigi cizilmesi ile sonlanacagi icin ozellikle algoritmalar icin buyuk sorun teskil edecektir.
Asagidaki calismada kullanilan hesaplama yontemi sonucu bu sorun ortadan kaldirilmistir. Her zaman ayni, zamanla hic bir degisiklik gostermeyen Renko Brickleri olusacaktir.
4- Detaylarin daha iyi gorulebilmesi icin mumkun olan en kucuk zaman diliminde kullanilmasini tavsiye ederim. ( Viop icin kullanacak arkadaslar 1 dakikalik grafikleri tercih edebilirler. )
5- Secilecek Renko Brick Parametresi Sabit bir deger oldugu icin, her enstuman icin degerin degisitirilmesi gerekecektir. ( Kucuk ve Buyuk degerli Hisse Senetleri icin ) .
6- ATR temelli Renko Brickleri de yukarida bahsettigim sebeple ATR zamanla degistikce, gecmiste olusmus Renko Brickleride surekli degisiklik gosterecegi icin kullanilmasi Riskli bir yaklasim olarak karsimiza cikmaktadir. Her enstrumana uyarlanabilecek sabit bir degiskenli Renko Brick calismasi YUZDESEL RENKO olacaktir. Fakat asagidaki indikatorun Gercek Bir Renko bar tipi olmamasi dolayisi ile su asamada bunu FIXED RENKO gibi uygulayabilmek imkan disindadir. ( Malesef acilis verisine olan bagimlilik yuzdesel Renko Bricklerinde ortadan kalkmamakta ve olusacak Renko Brickleri zamanla degisim gostermektedir )
Fiyata uygun Parametre secmeyi ve Degerlerin Data Box altinda izlenebilmesi icin Cizgileri aktive etmeyi unutmayin.
Iyi calismalar.
PHP Code:
//RENKO_FIXED_HL by KT
var Veri = Sistem.GrafikVerileri ;
// Grafik Verileri Degisken Listesi
var Close = Sistem.GrafikFiyatOku(Veri, "Kapanis");
var High = Sistem.GrafikFiyatOku(Veri, "Yuksek");
var Low = Sistem.GrafikFiyatOku(Veri, "Dusuk");
var Open = Sistem.GrafikFiyatOku(Veri, "Acilis");
// Renko Brick Size Degeri
float Bricksize = Convert.ToSingle(Sistem.Parametreler[0]);
// Renko Box Degisken Listesi
var H1 = Sistem.Liste(Veri.Count, 0);
var L1 = Sistem.Liste(Veri.Count, 0);
//Ilk Box [0] Degisken Listesi
H1[0] = (float)Math.Ceiling(Open[0]/Bricksize)*Bricksize;
L1[0] = (float)Math.Floor(Open[0]/Bricksize)*Bricksize;
for (int i=1; i<Veri.Count; i++)
{
if (High[i] >= H1[i-1]+Bricksize)
{
H1[i] = (float)Math.Floor(High[i]/Bricksize)*Bricksize;
L1[i] = H1[i]-Bricksize;
}
else if (Low[i] <= L1[i-1]-Bricksize)
{
L1[i] = (float)Math.Ceiling(Low[i]/Bricksize)*Bricksize;
H1[i] = L1[i]+Bricksize;
}
else
{
H1[i] = H1[i-1];
L1[i] = L1[i-1];
}
}
Sistem.Cizgiler[0].Deger=H1;
Sistem.Cizgiler[0].Aciklama ="Renko Ust";
Sistem.Cizgiler[1].Deger=L1;
Sistem.Cizgiler[1].Aciklama ="Renko Alt";
//Sistem.Mesaj("Sonuc:" + H1[1]);
var Yesil = Sistem.Renk(80,0,200,0);
var Kirmizi = Sistem.Renk(80,200,0,0);
// dolgu taminla
Sistem.DolguEkle(0, 1, Yesil, Kirmizi);
Yer İmleri