Metatrader sayfasında her katagoride sistemler var.
Hepsinden bir kaç taneye sahip olsan riskini de azaltmış olursun
Printable View
mesela bir örnek
https://i.imgyukle.com/2018/10/29/xHD8p.png
idealin kod örneği.
bu örnek sadece bu sayede birşeyler elde edemeyebilirsiniz. Geliştirmeniz lazım.
Kod:var SistemAdi = "sistemmmmmmmadı";
var Seviyeler = new List<float>();
Seviyeler.Add(65);
Seviyeler.Add(60);
Seviyeler.Add(55);
Seviyeler.Add(50);
Seviyeler.Add(45);
Seviyeler.Add(40);
Seviyeler.Add(35);
Seviyeler.Add(30);
Seviyeler.Add(25);
Seviyeler.Add(20);
Seviyeler.Add(15);
Seviyeler.Add(10);
Seviyeler.Add(05);
var V = Sistem.GrafikVerileri;
var OrjinalSistem = Sistem.SistemGetir(SistemAdi, Sistem.Sembol, Sistem.Periyot);
var GetiriList = OrjinalSistem.GetiriKZ;
Sistem.Cizgiler[0].Deger = GetiriList;
for (int i = 0; i < Seviyeler.Count; i++)
{
Sistem.Cizgiler[i + 10].ActiveBool = true;
Sistem.Cizgiler[i + 10].Deger = Sistem.Liste(Seviyeler[i]);
Sistem.Cizgiler[i + 10].Panel = 2;
Sistem.Cizgiler[i + 10].Renk = Color.IndianRed;
Sistem.Cizgiler[i + 10].Stil = 2;
}
var StatuListesi = Sistem.Liste(0);
var SonStatu = 0;
for (int i = 1; i < V.Count; i++)
{
for (int j = 0; j < Seviyeler.Count; j++)
{
if (GetiriList[i - 1] > Seviyeler[j] && GetiriList[i] <= Seviyeler[j])
{
SonStatu = 0;
break;
}
if (GetiriList[i - 1] < Seviyeler[j] && GetiriList[i] >= Seviyeler[j])
{
SonStatu = 1;
break;
}
}
StatuListesi[i] = SonStatu;
}
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 (StatuListesi[i] == 0)
RenkListesi[i] = Color.Gray;
else if (StatuListesi[i] == 1)
RenkListesi[i] = Color.Cyan;
}
Sistem.Cizgiler[0].RenkListesi = RenkListesi;
var OrjinalPozisyonList = Sistem.Liste(0);
var Yon = "";
for (int i = 0; i < V.Count; i++)
{
if (OrjinalSistem.Yon[i] == "A")
Yon = "A";
else if (OrjinalSistem.Yon[i] == "S")
Yon = "S";
else if (OrjinalSistem.Yon[i] == "F")
Yon = "F";
if (Yon == "A")
OrjinalPozisyonList[i] = 1;
else if (Yon == "S")
OrjinalPozisyonList[i] = -1;
else if (Yon == "F")
OrjinalPozisyonList[i] = 0;
}
var YeniPozisyonList = Sistem.Liste(0);
var SonYon = "";
for (int i = 0; i < V.Count; i++)
{
if (StatuListesi[i] == 0)
{
if (SonYon != "F")
{
Sistem.Yon[i] = "F";
SonYon = Sistem.Yon[i];
}
}
else
{
if (SonYon != "A" && OrjinalPozisyonList[i] == 1)
{
Sistem.Yon[i] = "A";
SonYon = Sistem.Yon[i];
}
if (SonYon != "S" && OrjinalPozisyonList[i] == -1)
{
Sistem.Yon[i] = "S";
SonYon = Sistem.Yon[i];
}
if (SonYon != "F" && OrjinalPozisyonList[i] == 0)
{
Sistem.Yon[i] = "F";
SonYon = Sistem.Yon[i];
}
}
}
Sistem.GetiriHesapla("01/01/2007", 0.0);
Sistem.Cizgiler[7].Deger = Sistem.GetiriKZ;
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.####"));