Örnek sistemde 4 MA (ortalama ) ve 4 senaryolu flat olma ve 4 farklı zarar kes örneği ile sistem
oluşturulmuştur degerleri kendinize göre degiştirebilirsiniz
//senaryo 1
var a_tp_y = 190.7f ; // alışta kaç puan karda "kar al"
var a_s_y = 30.5f ; // alışta kaç puan zararda stop
var s_tp_y = 190.8f ; //satışta kaç puan karda "kar al"
var s_s_y = 20.8f ; //satışta kaç puan zararda stop
// senaryo 2
var a_tp_y1 = 110.7f ; // alışta kaç puan karda "kar al"
var a_s_y1 = 30.5f ; // alışta kaç puan zararda stop
var s_tp_y1 = 190.8f ; //satışta kaç puan karda "kar al"
var s_s_y1 = 20.9f ; //satışta kaç puan zararda stop
var V = Sistem.GrafikVerileri ;
var C = Sistem.GrafikFiyatOku(V, "Kapanis" ) ;
var H = Sistem.GrafikFiyatOku(V, "Yuksek" ) ;
var L = Sistem.GrafikFiyatOku(V, "Dusuk" ) ;
var O = Sistem.GrafikFiyatOku(V, "Acilis" ) ;
// hareketli ortalamaları hesapla
var MA1 = Sistem.MA(C, "Exp", 120);
var MA2 = Sistem.MA(C, "Exp", 440);
var MA3 = Sistem.MA(C, "Exp", 280);
var MA4 = Sistem.MA(C, "Exp", 600);
var x1 = Sistem.Liste(0);
var x2 = Sistem.Liste(0);
for (int i = 1; i
{
x1[i] = C[i] >= MA1[i] && C[i] >= MA2[i] ? 1 : C[i] <= MA1[i] && C[i] <= MA2[i] ? -1 : x1[i-1] ;
x2[i] = C[i] >= MA1[i] && C[i] >= MA2[i] ? 1 : C[i] <= MA1[i] && C[i] <= MA2[i] ? -1 : x1[i-1] ;
}
// STRATEJİ
var SonYon = "";
double Fiyat = 0;
for (int i = 1; i
{
// senaryo 1
if ( x1[i] == 1 && x1[i-1] != 1 && SonYon != "A" ) // AL
{
Sistem.Yon[i] = "A"; // alış
SonYon = Sistem.Yon[i];
Fiyat = C[i];
}
else if ( x1[i] == -1 && x1[i-1] != -1 && SonYon != "S" ) // SAT
{
Sistem.Yon[i] = "S"; // satış
SonYon = Sistem.Yon[i];
Fiyat = C[i];
}
else if (SonYon == "A" && C[i] > ( Fiyat + a_tp_y ) ) // alışta kar realizasyonu
{
Sistem.Yon[i] = "F";
SonYon = Sistem.Yon[i];
}
else if (SonYon == "A" && C[i] < ( Fiyat - a_s_y ) ) // alışta stop
{
Sistem.Yon[i] = "F";
SonYon = Sistem.Yon[i];
}
else if (SonYon == "S" && C[i] < ( Fiyat - s_tp_y )) // satışta kar realizasyonu
{
Sistem.Yon[i] = "F";
SonYon = Sistem.Yon[i];
}
else if (SonYon == "S" && C[i] > ( Fiyat + s_s_y ) ) // satışta stop
{
Sistem.Yon[i] = "F";
SonYon = Sistem.Yon[i];
}
// senaryo 2
if ( x2[i] == 1 && x2[i-1] != 1 && SonYon == "F" ) // AL
{
Sistem.Yon[i] = "A"; // alış
SonYon = Sistem.Yon[i];
Fiyat = C[i];
}
else if ( x2[i] == -1 && x2[i-1] != -1 && SonYon == "F" ) // SAT
{
Sistem.Yon[i] = "S"; // satış
SonYon = Sistem.Yon[i];
Fiyat = C[i];
}
else if (SonYon == "A" && C[i] > ( Fiyat + a_tp_y1 ) ) // alışta kar realizasyonu
{
Sistem.Yon[i] = "F";
SonYon = Sistem.Yon[i];
}
else if (SonYon == "A" && C[i] < ( Fiyat - a_s_y1 ) ) // alışta stop
{
Sistem.Yon[i] = "F";
SonYon = Sistem.Yon[i];
}
else if (SonYon == "S" && C[i] < ( Fiyat - s_tp_y1 )) // satışta kar realizasyonu
{
Sistem.Yon[i] = "F";
SonYon = Sistem.Yon[i];
}
else if (SonYon == "S" && C[i] > ( Fiyat + s_s_y1 ) ) // satışta stop
{
Sistem.Yon[i] = "F";
SonYon = Sistem.Yon[i];
}
}
Sistem.GetiriHesapla("02/01/2006", 0.0185);
// hangi tarihten getiri hesaplanacak ve kayma ne kadar olacak..örnekte 37.5 puan
var KarZarar = Sistem.GetiriKZ;
var KarZararAy = Sistem.Liste(0);
float KarZarar1 = 0;
int BarNo1 = 1;
float Fark = 0;
for (int i = 1; i < Sistem.BarSayisi; i++)
{
//if (V[i].Date.DayOfWeek == DayOfWeek.Monday && V[i-1].Date.DayOfWeek != DayOfWeek.Monday) // haftalık dilim
if (V[i].Date.Month != V[i-1].Date.Month) // aylık dilim
//if (V[i].Date.Year != V[i-1].Date.Year ) // yıllık dilim
{
Fark = KarZarar[i-1] - KarZarar1;
for (int j = BarNo1; j < i; j++)
KarZararAy[j] = Fark;
KarZarar1 = KarZarar[i-1];
BarNo1 = i;
}
if (i == Sistem.BarSayisi-1)
{
Fark = KarZarar[i] - KarZarar1;
for (int j = BarNo1; j < Sistem.BarSayisi; j++)
KarZararAy[j] = Fark;
}
}
var KarList = Sistem.Liste(0);
var ZararList = Sistem.Liste(0);
for (int i = 1; i < Sistem.BarSayisi; i++)
{
if (KarZararAy[i] > 0)
KarList[i] = KarZararAy[i];
else if (KarZararAy[i] < 0)
ZararList[i] = KarZararAy[i];
}
Sistem.Cizgiler[0].Deger = KarZarar; // panel 2 -düz
Sistem.Cizgiler[1].Deger = KarList; // panel 3 -dikey
Sistem.Cizgiler[2].Deger = ZararList; // panel 3 - dikey
Hiç yorum yok:
Yorum Gönder