Düşen Kar Maskesi: KZ belirlenen dilimi aşağı keserse Flat, yukarı keserse sisteminizin sinyali.
Detaylı kontrol edilmedi. Test etmelisiniz.
PHP Code:
//Ayarlar
bool MaskeVar = true; // false ise sizin sistem, true ise Düşen Kar Maskesi Aktif.
var GrafikSistemAd= "A1"; // Sisteminizin adını yazın. GetiriHesapla içermelidir.
int KzSeviyeMod=5; // KZ al-sat çizgisi adımı.
//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;
//Değişkenler
string SonYon="F";
string GercekSonYon="";
bool AksamFlatIslemde=false;
float MaxKZ=0;
//Maske Listesi
var MaskeList = Sistem.Liste(0);
var Maske = 1;
for (int i = 1; i < V.Count; i++)
{
var SonGetiri=GetiriList[i];
var OncekiGetiri=GetiriList[i-1];
MaxKZ = Math.Max(MaxKZ,SonGetiri);
for (int j = 0; j < Math.Round(GetiriList[i] /KzSeviyeMod)+3; j++)
{
var jSeviye=j*KzSeviyeMod;
if (OncekiGetiri > jSeviye && SonGetiri <= jSeviye )
{
Maske = 0;
break;
}
if (OncekiGetiri < jSeviye && SonGetiri >= jSeviye )
{
Maske = 1;
break;
}
}
MaskeList[i] = Maske;
}
//Çizgiler
Sistem.Cizgiler[0].Deger = GetiriList;
var RenkListesi = new List<Color>();
for (int i = 0; i < Sistem.BarSayisi; i++) RenkListesi.Add(Color.Gray);
for (int i = 1; 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 )
{
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];
//Akşam 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: Gerçek sistemde Yön var ise ve 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];
}
}
Yer İmleri