Düşen Kar Maskesi: KZ belirlenen dilimi aşağı keserse Flat, yukarı keserse sisteminizin sinyali. 
Detaylı kontrol edilmedi. Test etmelisiniz.
Seviye yöntemine toma da eklendi.
	PHP Code:
	
//Ayarlar
bool MaskeVar = true;        // false ise sizin sistem, true ise Düşen Kar Maskesi Aktif.
var GrafikSistemAd= "K2";  // Sisteminizin adını yazın.GetiriHesapla içermelidir.
var MaskeYontem="S"; //S veya T (S ise Seviye Kesişimi T ise TOMA.)
int KzSeviyeMod=5;   //KZ al-sat çizgisi adımı. Sadece Seviye Yönteminde kullanılır.
bool SeviCizgileriniGoster=false;
var TomaParam1=30;    //Sadece TOMA Yönteminde kullanılır.
var TomaParam2=5;    //Sadece TOMA Yönteminde kullanılır.
var KZDevirVar=false;  // true ise KZ değişmez ve Param9 a yazılan Devir Rakamına her yeni bar eklendiğinde
                       // kaybolan barın Kz si de eklenerek biriktirme yapılır.
                       // false ise KZ değişmez. lokal testlerde false serverda robot true kullanılabilir.
var KarBiriktirenSembolPeriyot = "VIP'VIP-X030"+"1"; //Sistem başka sembollerde açıldığında robotun takip ettiği kar değerleri bozulmasın diye gerekli.
bool MaskeliKZGoster=true;
//Veriler
var V = Sistem.GrafikVerileri;
var O = Sistem.GrafikFiyatSec("Açılış");
//Sistem Getir
var GrafikSistem = Sistem.SistemGetir(GrafikSistemAd, Sistem.Sembol, Sistem.Periyot); 
var Yonler = GrafikSistem.Yon;
var Seviyeler = GrafikSistem.Seviye;
var GetiriList = GrafikSistem.GetiriKZ;  //var GetiriList =GrafikSistem.Cizgiler[5].Deger;
//Değişkenler
string SonYon="F";
string GercekSonYon="";
bool AksamFlatIslemde=false;
float MaxKZ=0;
double DevirKZ=0;
//Devreden Kar Hesaplamaları
var YeniGetiriList = Sistem.Liste(0);
if(KZDevirVar)
{
var RefGetiri1000= GetiriList[1000];
var RefGetiri999= GetiriList[999];
if(Sistem.Parametreler[8]=="") //Kaydedilmiş İlk Bar Tarihi Boş ise
{
Sistem.Parametreler[9] = "0"; //Devir KZ 0 kabul et. Elle değiştirebilir devir rakamı.
Sistem.Parametreler[10] = RefGetiri1000.ToString("0.####"); //Referans Getiriyi Yaz
} 
if( V[0].Date.ToString("dd.MM.yyyy HH:mm") != Sistem.Parametreler[10] 
    && (Sistem.Sembol + Sistem.Periyot)==KarBiriktirenSembolPeriyot 
  )  //Robotun Sembolünde ise ve İlkBar Değişti ise 
{
Sistem.Parametreler[8] = V[0].Date.ToString("dd.MM.yyyy HH:mm");  //Yeni ilk barın Tarihini yaz.
DevirKZ = Convert.ToDouble(Sistem.Parametreler[9]) +   // DevirKZ
          +Convert.ToDouble( Sistem.Parametreler[10] ) - RefGetiri999;
Sistem.Parametreler[9] = DevirKZ.ToString("0.####"); 
Sistem.Parametreler[10] = RefGetiri1000.ToString("0.####");  
}
}
for (int i = 0; i < GetiriList.Count; i++){YeniGetiriList[i] = (float)DevirKZ + GetiriList[i];}
//İndikatörler
var TomaKZ= Sistem.TOMA(YeniGetiriList, TomaParam1, TomaParam2);   
if(MaskeVar && MaskeYontem.ToUpper()=="T" && SeviCizgileriniGoster)
{
Sistem.Cizgiler[2].Deger = TomaKZ;
Sistem.Cizgiler[2].Panel = 2;  
Sistem.Cizgiler[2].ActiveBool = true;
Sistem.Cizgiler[2].Aciklama="TomaKZ";
Sistem.Cizgiler[2].Renk = Color.Red; 
}
//Maske Listesi
var MaskeList = Sistem.Liste(0);
var Maske = 1;
for (int i = 1; i < V.Count; i++)
{
    var SonGetiri=YeniGetiriList[i];
    var OncekiGetiri=YeniGetiriList[i-1]; 
    MaxKZ = Math.Max(MaxKZ,SonGetiri);
  if(MaskeYontem.ToUpper()=="S")
    for (int j = 0; j < Math.Round(SonGetiri /KzSeviyeMod)+3; j++)
    {
        var jSeviye=j*KzSeviyeMod; 
  
        if (OncekiGetiri > jSeviye && SonGetiri <= jSeviye   )
        {
            Maske = 0;
            break;
        }
        if (OncekiGetiri < jSeviye  && SonGetiri >= jSeviye )
        {
            Maske = 1;
            break;
        }
    }
  else {
            if (OncekiGetiri > TomaKZ[i-1] && SonGetiri <= TomaKZ[i-1]) Maske = 0;
       else if (OncekiGetiri < TomaKZ[i-1] && SonGetiri >= TomaKZ[i-1]) Maske = 1;
       }
    MaskeList[i] = Maske;
}
//Çizgiler
Sistem.Cizgiler[0].Deger = YeniGetiriList;
Sistem.Cizgiler[0].Panel = 2;  
Sistem.Cizgiler[0].ActiveBool = true;
Sistem.Cizgiler[0].Aciklama="KZ";
var RenkListesi = new List<Color>();
for (int i = 0; i < V.Count; i++)   RenkListesi.Add(Color.Gray);
for (int i = 0; i < V.Count; i++)
{
    if (MaskeList[i] == 0) RenkListesi[i] = Color.Gray;
    else if (MaskeList[i] == 1) RenkListesi[i] = Color.Cyan;
}
Sistem.Cizgiler[0].RenkListesi = RenkListesi;
//KZ Seviye Çizgileri(Sadece görsellik için, algoyu etkilemez, son Kz ye yakın 10 çizgi.)
if(MaskeVar && MaskeYontem.ToUpper()=="S" && SeviCizgileriniGoster)
{
var SeviyeCizgiCounter=10;
for (var i =Math.Round(MaxKZ/KzSeviyeMod)+3 -10 ; i < Math.Round(MaxKZ/KzSeviyeMod)+3 ; i++)
{
    SeviyeCizgiCounter+=1;
    Sistem.Cizgiler[SeviyeCizgiCounter].ActiveBool = true;
    Sistem.Cizgiler[SeviyeCizgiCounter].Deger = Sistem.Liste(i*KzSeviyeMod);
    Sistem.Cizgiler[SeviyeCizgiCounter].Panel = 2;
    Sistem.Cizgiler[SeviyeCizgiCounter].Renk = Color.IndianRed; 
    Sistem.Cizgiler[SeviyeCizgiCounter].Stil = 2;
}
}
//Yön Kalıbı
for (int i = 1 ; i < Yonler.Count; i++)
{
//Sistemde Yön var ise GercekSonYon'e ata.
if( Yonler[i] != "") GercekSonYon=Yonler[i];
   
   //Maske Flat: Maske aktif ise ve bir KZ dilimini aşağı kesti ise
   if ( MaskeVar && MaskeList[i]==0 ) 
   {  
     //Zaten Flat'da ise İşlem Yok.
     if(SonYon != "F")
     {
      SonYon = "F";
      Sistem.Yon[i] = "F";
     }
   }
   //Gerçek Sinyal: SonYon ile GercekSonYon aynı değil ise
   else if( SonYon != GercekSonYon  )
   {
      SonYon = GercekSonYon;
      Sistem.Yon[i] = GercekSonYon;
      if(Seviyeler[i]!=null) Sistem.Seviye[i] = Seviyeler[i];
   }
}  
//Maskeli KZ Göster
if(MaskeliKZGoster){
var MaskeliYeniGetiriList = Sistem.Liste(0);
Sistem.GetiriHesapla("01.01.2000", 0); 
for (int i = 0; i < Sistem.GetiriKZ.Count; i++){MaskeliYeniGetiriList[i] = (float)DevirKZ + Sistem.GetiriKZ[i];}
Sistem.Cizgiler[1].Deger = Sistem.GetiriKZ; 
Sistem.Cizgiler[1].Panel = 2;  
Sistem.Cizgiler[1].Renk = Color.Yellow; 
Sistem.Cizgiler[1].ActiveBool = true;
Sistem.Cizgiler[1].Aciklama="Maskeli KZ";
}
//Test Kodu Bar Sayısını 1 eksilttiğinizde KZ değişmiyorsa olmuş demektir.
//Sistem.Mesaj("SonKZ: "+ YeniGetiriList[YeniGetiriList.Count-1].ToString("0.####")); 
 
				
			
Yer İmleri