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