Originally Posted by
mahmutbir
Merhabalar herkese kolay gelsin aşağıdaki formülde işlem sayısını nasıl azaltabilirim yardımcı olursanız sevinirim
var V = Sistem.GrafikVerileri ;
var C = Sistem.GrafikFiyatSec("Kapanis");
var H = Sistem.GrafikFiyatOku(V, "Yuksek" ) ;
var L = Sistem.GrafikFiyatOku(V, "Dusuk" ) ;
var Us = Sistem.Liste(0); //Up swing
var Ds = Sistem.Liste(0); // Down Swing
var Dsa = new List<int>();
var Usa = new List<int>();
var Lsx = Sistem.Liste(0); //LovestSince Listesi
var Hsx = Sistem.Liste(0); //HighestSince Listesi
var Sd1 = Sistem.Liste(0);
var Sd2 = Sistem.Liste(0);
var BarNo1 = 0; //Barsince US için
var BarNo2 = 0; //BarSince DS için
var BarNo3 = 0; //Barsince SD=1 için
var BarNo4 = 0; //BarSince SD=-1 için
var BS1 = Sistem.Liste(0); //BarSince SD=1 Listesi
var BS_1 = Sistem.Liste(0); //BarSince SD=-1 Listesi
var Td1 = Sistem.Liste(0);
for (int i=3; i<V.Count; i++)
{
if ( H[i] > H[i-1] && H[i-1] > H[i-2] && H[i-2] > H[i-3])
BarNo1 = i;
if (BarNo1 > 0)
Us[i] = i - BarNo1;
if ( L[i] < L[i-1] && L[i-1] < L[i-2] && L[i-2] < L[i-3])
BarNo2 = i;
if (BarNo2 > 0)
Ds[i] = i - BarNo2;
if (Ds[i] == 0 )
Dsa.Add(i);
if (Us[i] == 0 )
Usa.Add(i);
if(Dsa.Count > 1)
{
var y = new List<float>();
for(int k = Dsa[Dsa.Count-1]; k<i+1; k++)
y.Add(L[k]);
Lsx[i] = y.Min();
y.Clear();
}
if(Usa.Count > 1)
{
var y = new List<float>();
for(int k = Dsa[Dsa.Count-1]; k<i+1; k++)
y.Add(H[k]);
Hsx[i] = y.Max();
y.Clear();
}
if(Us[i] == 0 && L[i-1] != Lsx[i] )
Sd1[i] = 1;
else if(Ds[i] == 0 && H[i-1] != Hsx[i] )
Sd1[i] = -1;
else
Sd1[i] = 0;
if ( Sd1[i] == 1)
BarNo3 = i;
if (BarNo3 > 0)
BS1[i] = i - BarNo3;
if ( Sd1[i] == -1)
BarNo4 = i;
if (BarNo4 > 0)
BS_1[i] = i - BarNo4;
if(Sd1[i] == 1 && BS1[i-1] > BS_1[i-1] )
Sd2[i] = 1;
else if(Sd1[i] == -1 && BS1[i-1] < BS_1[i-1] )
Sd2[i] = -1;
else
Sd2[i] = 0;
if(Sd2[i] != 0)
Td1[i] = Sd2[i];
else
Td1[i] = Td1[i-1];
}
Sistem.Cizgiler[2].Deger = Td1;
var Sonyon = "" ;
float Fiyat = 0.0F ;
var Sinyal = "";
//sistem kalıp
for (int i = 20; i < Sistem.BarSayisi; i++)
{
if ( Td1[i] > 0 && Sonyon != "A" )
{
Sistem.Yon[i] = "A";
Sonyon = "A";
Fiyat = C[i];
}
else if (Td1[i] < 0 && Sonyon != "S" )
{
Sistem.Yon[i] = "S";
Sonyon = "S";
Fiyat = C[i];
}
}
Sistem.GetiriHesapla("01/08/1990", 0.0);
Sistem.GetiriMaxDDHesapla("01/01/1990", "01/01/2030");
double KarCount = 0;
double ZararCount = 0;
int PrevBarNo = 0;
var PrevYon = "";
for (int i = 0; i < V.Count; i++)
{
if (PrevBarNo > 0)
{
if (PrevYon == "A" && (Sistem.Yon[i] == "F" || Sistem.Yon[i] == "S"))
{
if (C[i] > C[PrevBarNo]) KarCount++;
if (C[i] < C[PrevBarNo]) ZararCount++;
}
if (PrevYon == "S" && (Sistem.Yon[i] == "F" || Sistem.Yon[i] == "A"))
{
if (C[i] < C[PrevBarNo]) KarCount++;
if (C[i] > C[PrevBarNo]) ZararCount++;
}
}
if (Sistem.Yon[i] != "")
{
PrevYon = Sistem.Yon[i];
PrevBarNo = i;
}
}
double Oran = 100 * KarCount / (KarCount + ZararCount);
var Sure = (DateTime.Now - V[0].Date).TotalDays / 30.4;
var gunkz = Sistem.GetiriKZGunSonu[Sistem.GetiriKZGunSonu.Count - 1] - Sistem.GetiriKZGun[Sistem.GetiriKZGun.Count - 1];
var Date2Ay = DateTime.Now.AddDays(-60);
var Date2AyBarNo = 0;
for (int i = V.Count - 1; i > 0; i--)
{
if (V[i].Date <= Date2Ay)
{
Date2AyBarNo = i;
break;
}
}
var Getiri2Ay = Sistem.GetiriKZ[Sistem.GetiriKZ.Count - 1] - Sistem.GetiriKZ[Date2AyBarNo];
var Date3Ay = DateTime.Now.AddDays(-90);
var Date3AyBarNo = 0;
for (int i = V.Count - 1; i > 0; i--)
{
if (V[i].Date <= Date3Ay)
{
Date3AyBarNo = i;
break;
}
}
var Getiri3Ay = Sistem.GetiriKZ[Sistem.GetiriKZ.Count - 1] - Sistem.GetiriKZ[Date3AyBarNo];
var Date6Ay = DateTime.Now.AddDays(-180);
var Date6AyBarNo = 0;
for (int i = V.Count - 1; i > 0; i--)
{
if (V[i].Date <= Date6Ay)
{
Date6AyBarNo = i;
break;
}
}
var Getiri6Ay = Sistem.GetiriKZ[Sistem.GetiriKZ.Count - 1] - Sistem.GetiriKZ[Date6AyBarNo];
Sistem.Dortgen(2, 10, 20, 230, 220, Color.Black, Color.Black, Color.Silver);
Sistem.GradientYaziEkle(Sure.ToString("0.0") + " Ay", 2, 20, 20, Color.Silver, Color.Silver, "Tahoma", 12);
Sistem.GradientYaziEkle(Sistem.GetiriKZ[Sistem.GetiriKZ.Count - 1].ToString("0.000"), 2, 150, 20, Sistem.GetiriKZ[Sistem.GetiriKZ.Count - 1] > 0 ? Color.Lime: Color.Red, Sistem.GetiriKZ[Sistem.GetiriKZ.Count - 1] > 0 ? Color.Lime: Color.Red, "Tahoma", 12);
Sistem.GradientYaziEkle("1 Ay", 2, 20, 40, Color.Silver, Color.Silver, "Tahoma", 12);
Sistem.GradientYaziEkle(Sistem.GetiriBirAy.ToStrin g("0.000"), 2, 150, 40, Sistem.GetiriBirAy > 0 ? Color.Lime: Color.Red, Sistem.GetiriBirAy > 0 ? Color.Lime: Color.Red, "Tahoma", 12);
Sistem.GradientYaziEkle("3 Ay", 2, 20, 60, Color.Silver, Color.Silver, "Tahoma", 12);
Sistem.GradientYaziEkle(Getiri3Ay.ToString("0.000" ), 2, 150, 60, Getiri3Ay > 0 ? Color.Lime: Color.Lime, Getiri3Ay > 0 ? Color.Lime: Color.Lime, "Tahoma", 12);
Sistem.GradientYaziEkle("6 Ay", 2, 20, 80, Color.Silver, Color.Silver, "Tahoma", 12);
Sistem.GradientYaziEkle(Getiri6Ay.ToString("0.000" ), 2, 150, 80, Getiri6Ay > 0 ? Color.Lime: Color.Red, Getiri6Ay > 0 ? Color.Lime: Color.Red, "Tahoma", 12);
Sistem.GradientYaziEkle("Bu Gün", 2, 20, 200, Color.Silver, Color.Silver, "Tahoma", 12);
Sistem.GradientYaziEkle(gunkz.ToString("0.000"), 2, 150, 200,gunkz > 0 ? Color.Lime: Color.Red, gunkz > 0 ? Color.Lime: Color.Red, "Tahoma", 12);
Sistem.GradientYaziEkle("İşlem Sayısı", 2, 20, 120, Color.Silver, Color.Silver, "Tahoma", 12);
Sistem.GradientYaziEkle(Sistem.GetiriIslemSayisiPo z[V.Count - 1].ToString("0"), 2, 150, 120, Color.Gold, Color.Gold, "Tahoma", 12);
Sistem.GradientYaziEkle("Ortalama", 2, 20, 140, Color.Silver, Color.Silver, "Tahoma", 12);
Sistem.GradientYaziEkle((Sistem.GetiriIslemSayisiP oz[V.Count - 1] / Sure).ToString("0"), 2, 150, 140, Color.Gold, Color.Gold, "Tahoma", 12);
Sistem.GradientYaziEkle("Karlılık", 2, 20, 160, Color.Silver, Color.Silver, "Tahoma", 12);
Sistem.GradientYaziEkle("% " + Sistem.GetiriKarIslemOran.ToString("0.00"), 2, 150, 160, Color.Gold, Color.Gold, "Tahoma", 12);
Sistem.GradientYaziEkle("Profit Fact.",2, 20, 180, Color.Silver, Color.Silver, "Tahoma", 12);
Sistem.GradientYaziEkle(Sistem.ProfitFactor.ToStri ng("0.00"), 2, 150, 180, Color.Gold, Color.Gold, "Calibri", 12);
Sistem.GradientYaziEkle("Max DD",2, 20, 100, Color.Red, Color.Red, "Tahoma", 14);
Sistem.GradientYaziEkle(Sistem.GetiriMaxDD.ToStrin g("0.000"), 2, 150, 100, Color.Red, Color.Red, "Tahoma", 12);
Sistem.DolguEkle(0, 1, Color.FromArgb(120, 0, 255, 0), Color.FromArgb(120, 255, 0, 0));
//string syspertrh = "01/01/2007"; //
//if ( syspertrh != "" )
//{ Sistem.GetiriHesapla( syspertrh , 0.012);
//var KarZarar = Sistem.GetiriKZ;
//Sistem.Cizgiler[5].Deger = KarZarar;
//Sistem.Cizgiler[5].Stil=5;
//Sistem.Cizgiler[5].Panel = 4;
//Sistem.Cizgiler[5].Aciklama = "NET_K/Z";
//Sistem.Cizgiler[5].ActiveBool = true;
var KZYuzde = Sistem.Liste(0);
float TopTeminat = 430;
float Teminat = 215;
float Kaldıraç = 6.97f;
for (int i = 1; i < Sistem.BarSayisi; i++)
{
//KZYuzde[i] = ( Sistem.GetiriKZGun[i] * (Kaldıraç * Teminat) / TopTeminat) * Kaldıraç ;
KZYuzde[i] = ( Sistem.GetiriKZGun[i] * 10000 / TopTeminat ) ;
}
Sistem.Cizgiler[6].Deger = KZYuzde ;
Sistem.Cizgiler[6].Stil=1;
Sistem.Cizgiler[6].Panel=2;
Sistem.Cizgiler[6].Aciklama = "NET_K/Z_Yüzde";
//Sistem.Cizgiler[6].ActiveBool = true;
//Sistem.GradientYaziEkle("NET_K/Z_Yüzde", 2, 20, 220, Color.Silver, Color.Silver, "Tahoma", 11);
//Sistem.GradientYaziEkle((Sistem.GetiriKZGun * 10000 / TopTeminat).ToString("0.000"), 2, 150, 220, Color.Gold, Color.Gold, "Tahoma", 12);
Sistem.Cizgiler[0].Deger = Sistem.GetiriKZGunSonu;
Sistem.Cizgiler[1].Deger = Sistem.GetiriKZGun;
Yer İmleri