Vade Geçiþi Ýndikatörü: Aktif Viop Sözleþmelerinin Son günlerine ait barlarda 1 döndürür, diðer günlerde 0 döndürür.
Bunu kullanarak kendi stratejinizi uygulayabilirsiniz. gerçek durumla backtestler arasýnda fark oluþmamasý için vade geçiþlerini sistemlere uygulamak daha doðru olacaktýr.
Yalýn Hali
PHP Code:
//Vade Sonu Ýndikatörü------------------------------------------------------
//Aktif Viop Sözleþmelerinin Son günlerine ait barlarda 1 döndürür, diðer günlerde 0 döndürür.
var IndVadeSonu = Sistem.Liste(0);
for (int i = 2; i < V.Count; i++) {
DateTime BarTarih = V[i].Date; DateTime AyinSonGunu = new DateTime(BarTarih.AddMonths(1).Year, BarTarih.AddMonths(1).Month , 1).AddDays(-1);
if ((BarTarih.Month % 2) == 0 && BarTarih >= (AyinSonGunu.DayOfWeek == DayOfWeek.Sunday ? AyinSonGunu.AddDays(-2) : AyinSonGunu.DayOfWeek == DayOfWeek.Saturday ? AyinSonGunu.AddDays(-1) : AyinSonGunu))
IndVadeSonu[i] = 1; else IndVadeSonu[i] = 0;
}
//---------------------------------------------------------------------------
Sistem içerisinde kullaným örneði
PHP Code:
//Ayarlar
string VadeSonGunuFlatSaat="17:00"; //Vade Sonu Günü Flat olunacak Zaman
int IndikatorlerKacBardaToparliyor = 60; //Vade Sonu gününe içinde olan bardan kaç bar sonra devam edilsin.
//Veriler
var V = Sistem.GrafikVerileri;
var C = Sistem.GrafikFiyatOku(V, "Kapanis");
//Ýndikatörler
var MA1 = Sistem.MA(C, "Simple", 50);
var MA2 = Sistem.MA(C, "Simple", 220);
//Vade Geçiþi Ýndikatörü------------------------------------------------------
//Aktif Viop Sözleþmelerinin Son günlerine ait barlarda 1 döndürür, diðer günlerde 0 döndürür.
var IndVadeSonu = Sistem.Liste(0);
for (int i = 2; i < V.Count; i++) {
DateTime BarTarih = V[i].Date; DateTime AyinSonGunu = new DateTime(BarTarih.AddMonths(1).Year, BarTarih.AddMonths(1).Month , 1).AddDays(-1);
if ((BarTarih.Month % 2) == 0 && BarTarih >= (AyinSonGunu.DayOfWeek == DayOfWeek.Sunday ? AyinSonGunu.AddDays(-2) : AyinSonGunu.DayOfWeek == DayOfWeek.Saturday ? AyinSonGunu.AddDays(-1) : AyinSonGunu))
IndVadeSonu[i] = 1; else IndVadeSonu[i] = 0;
}
//---------------------------------------------------------------------------
var VadeSonuHHV = Sistem.HHV(IndikatorlerKacBardaToparliyor, IndVadeSonu );
//Çizgiler
Sistem.Cizgiler[0].Deger = IndVadeSonu; Sistem.Cizgiler[0].Panel=2; Sistem.Cizgiler[0].Aciklama="IndVadeSonu"; Sistem.Cizgiler[0].Stil=5;
//Deðiþkenler
var SonYon = "";
bool VadeSonuNedeniyleFlat = false;
//Yön Kalýbý
for (int i = 300; i < V.Count; i++)
{
//Yeni Vadenin ilk gününde ise ve Ýndikatörler topladý ise FLAT dan çýkýþ için deðiþkeni false yap.
if(VadeSonuNedeniyleFlat && IndVadeSonu[i-1]==0 && VadeSonuHHV[i-1]==0) VadeSonuNedeniyleFlat=false;
//Vade Sonu Stratejisi
//Vade Son Günü ise ve belirlenen saat geçti ise FLAT
if( IndVadeSonu[i-1]==1 && V[i].Date.TimeOfDay >= TimeSpan.Parse(VadeSonGunuFlatSaat) ) {VadeSonuNedeniyleFlat=true; if (SonYon!= "F") {Sistem.Yon[i] = SonYon = "F";}}
//Ýndikatörler Toprlamadý ise Ýþlem yok
else if(VadeSonuNedeniyleFlat) { }
//Normal Strateji
else if ( SonYon!= "A" && MA1[i] > MA2[i] ) { Sistem.Yon[i] = SonYon = "A"; }
else if ( SonYon!= "S" && MA1[i] < MA2[i] ) { Sistem.Yon[i] = SonYon = "S"; }
}
Yukarýdaki sistemin görüntüsü
Yer Ýmleri