Originally Posted by
erhanacikgoz1
Caglar hocam bu sekilde kodlamayi nasil yaptin.
Bos bir vaktinde ustteki sistemin her bir satirina aciklama girmen mumkunmu ogrenmemiz acisindan.
Ne yazdigini anlamadim
Alisik olmadigimiz bir kodlama bicimi
Kod:
var P = Sistem.GrafikVerileri;
var C = Sistem.GrafikFiyatOku(P, "Kapanis");
var H = Sistem.GrafikFiyatOku(P, "Yuksek");
var L = Sistem.GrafikFiyatOku(P, "Dusuk");
var TS = Sistem.Liste(0f);
var trendSide = 1; // trendSide: 1 = yukselis trendi, -1 = dusus trendi
var iTrend = 1;// trendin bulunduğu indeks
var pos = "F";
for (var i = 1; i < P.Count; i++)
{
var close = P[i].Close;
var trend = P[iTrend];
var trend1 = P[iTrend - 1]; // trenedin en yüksek veya dusuk oldugu barin bir önceki bari
var high = H[i];
var low = L[i];
// Eğer yukselis trendindeyse ve en yüksek değer trend yükseğinden büyükse, yukselis trendi devam ediyor demektr
if (trendSide == 1 && trend.High < high)
{
iTrend = i; // trendin yerini guncelle
}
// Eğer dusus trendindeyse ve en dusuk trend dusugunden kucukse, dusus trendi devam ediyor demektr
else if (trendSide == -1 && trend.Low > low)
{
iTrend = i; // trendin yerini guncelle
}
// Eger yukselis trendi varsa ve anlik barin en dusugu trendin bir onceki barin dusugunden daha dusukse yani yukselis trendi bittiyse
else if (trendSide == 1 && low <= trend1.Low)
{
trendSide = -1; // trend yonunu dusus olarak degistir
iTrend = i; // trend degisimi oldugu icin trendin yerini guncelle
}
// Eger dusus trendi varsa ve anlik barin en yuksegi trendin bir onceki barin yukseginden daha buyukse yani dusus trendi bittiyse
else if (trendSide == -1 && trend1.High < high)
{
trendSide = 1; // trend yonunu yukselis olarak degistir
iTrend = i; // trend degisimi oldugu icin trendin yerini guncelle
}
// Trend degisimlerini gostermek amaciyla trendin yonunu listeye aktar
TS[i] = trendSide;
// alim kosulu: anlik bar trendin en yuksegiyse
var buy = iTrend == i && trendSide == 1;
// satim kosulu: anlik bar trendin en dusuguyse
var sell = iTrend == i && trendSide == -1;
// flat kosulu: yok
var flat = false;
// alim satim karari sonrasi alim satim oklarinin belirlenmesi
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/2000", 0.0f);
Sistem.Cizgiler[0].Deger = Sistem.GetiriKZ;
Sistem.Cizgiler[1].Deger = Sistem.GetiriKZAy;
Sistem.Cizgiler[2].Deger = TS;
Elimden geldigince aciklama yapmaya calistim. Anlamadiginiz bir yer olursa sorabilirsiniz.
Yer İmleri