Kod:
/*
hisse derinlik lisansınızın olması lazım
saatte bir ortalama hacim çıkarır
sürekli olarak 400 civarı hissede ilk 3 alışa satışa yazılan lotlara bakar ,
alış tarafında lotlarda ani artış olduğunda alır (ortalama hacmin x katı , alışta bir önceki bakışında olan lotun y katı )
pozisyona girdikten sonra ilk 5 dakikada %2 sonraki 5 dakikada %1 sonraki 5 dakikada 0 kar görünce satar,
her halukarda %4 zararı görünce satar , 17:29 dan sonra tüm pozları kapatır
pozisyonları pozisyon kontrol tabında tutar
aynı anda 19 max poz tutar bunları slotlara yazar , slotlar pozisyon kontrol tabından takip edilebilir
ilk çalıştırınca pozisyonkontrol tabındaki sistemadı+serm verisine bir tutar(100000) sistemadı+bosslot verisine 19 (isterseniz daha az ) girilmeli
her slotta sermayenin 1/19 unu kullanır( oynanabilir)
C altına log atar , bazı sistemlerde bir folder açıp logfile verisini değiştirmeniz gerekebilir
400 hisseye bakması 2-6 ms alır , saniyede 150-700 sefer döner, yüksek ram kullanabilir, kısıtlı makinalarda sorun çıkabilir
sadece sanal çalıştırılmalıdır.
uygulamada kar bırakan bir strateji değildir, denemiştir. hafif değişik bir versiyonunda canlı testte sonuç 0 -hafif (-) civarıdır
anlık işlem yapan sistemlere örnek olsun diye , birde idealin gücüne hayranlıktan paylaşılmıştır.
*/
//if (Sistem.SaatAraligi("10:00", "12:59") || Sistem.SaatAraligi("14:00", "17:59"))
Sistem.Debug("basla "+DateTime.Now.ToString("HH:mm:ss:fff"));
var bosslot=Sistem.PozisyonKontrolOku(Sistem.Name+"bosslot");
var serm=Sistem.PozisyonKontrolOku(Sistem.Name+"serm");
double kar=0; double ort=0;string slot="";
{
var logfile ="c:\\"+Sistem.Name+"log.txt";
List<string> tradelist = new List<string> {};
foreach (string line in File.ReadLines(@"c:\iDeal\Config\ImkbEndeksSenetler.txt") )
{
if (line.Contains("="))// && line.Split('=')[0]==Sistem.Sembol.Replace("IMKBH'",""))
{
tradelist .Add("IMKBH'"+line.Split('=')[0]);
}}
double IslemFiyat = 0;
double poz=0;double allot=0;double satlot=0;double allot1=0;double satlot1=0;double alf=0;double alf1=0;double zamanfark=0; double satf=0;
DateTime IslemTarih=Convert.ToDateTime(Sistem.Saat);string zamzam="";
//var Miktar = 0.0;
var Sembol="";
var Rezerv = "";
var men=Convert.ToDouble(DateTime.Parse(Sistem.Saat).ToString("HH"));
var ment=Convert.ToDouble(Sistem.SayiTablosunuOku(Sistem.Name+"ment"));
if (men!=ment)
{
Sistem.SayiTablosunuGuncelle(Sistem.Name+"ment", men);
for (int k=0;k<tradelist.Count;k++)
{
var veri=Sistem.GrafikFiyatOku(tradelist[k],"60", "Lot");
var Hort=Sistem.MA(veri, "Simple", 10)[veri.Count-2];
Sistem.SayiTablosunuGuncelle(tradelist[k]+"ort",Hort/12);
}
}
for (int i=1;i<20;i++)
{//Rezerv=Sistem.Parametreler[i];
poz=Sistem.PozisyonKontrolOku("slot"+i.ToString("0#"), out IslemFiyat, out IslemTarih, out Rezerv);
Sistem.SayiTablosunuGuncelle(Rezerv+"poz", poz);
Sistem.SayiTablosunuGuncelle(Rezerv+"pozfiyat", IslemFiyat);
Sistem.SozcukTablosunuGuncelle(Rezerv+"zaman", IslemTarih);
Sistem.SozcukTablosunuGuncelle(Rezerv+"slot", i.ToString("0#"));
}
Sistem.Debug(tradelist.Count.ToString());
for (int i=0;i<tradelist.Count;i++)
{bosslot=Sistem.PozisyonKontrolOku(Sistem.Name+"bosslot");
allot=0;satlot=0;
Sembol=tradelist[i];
var Derinlik=Sistem.DerinlikVerisiOku(Sembol);
for (int m=0;m<3;m++)
{ allot=allot+Derinlik.Bids[m].Size;
satlot=satlot+Derinlik.Asks[m].Size;
}
alf = Derinlik.Bids[0].Price;
satf=Derinlik.Asks[0].Price;
alf1=Convert.ToDouble(Sistem.SayiTablosunuOku(Sembol+"alf"));
slot=Sistem.SozcukTablosunuOku(Sembol+"slot");
Sistem.SayiTablosunuGuncelle(Sembol+"alf",alf);
allot1=Convert.ToDouble(Sistem.SayiTablosunuOku(Sembol+"allot"));
satlot1=Convert.ToDouble(Sistem.SayiTablosunuOku(Sembol+"satlot"));
Sistem.SayiTablosunuGuncelle(Sembol+"allot",allot);
Sistem.SayiTablosunuGuncelle(Sembol+"satlot",satlot);
poz=Convert.ToDouble(Sistem.SayiTablosunuOku(Sembol+"poz"));
ort=Convert.ToDouble(Sistem.SayiTablosunuOku(Sembol+"ort"));
if(poz>0 &&alf>0 &&(Sistem.SaatAraligi("10:02", "12:58") || Sistem.SaatAraligi("14:02", "18:00")))
{
zamzam=Sistem.SozcukTablosunuOku(Sembol+"zaman");
IslemFiyat=Convert.ToDouble(Sistem.SayiTablosunuOku(Sembol+"pozfiyat"));
zamanfark=((Convert.ToDouble(DateTime.Parse(Sistem.Saat).ToString("HH"))*60)+Convert.ToDouble(DateTime.Parse(Sistem.Saat).ToString("mm")))-
((Convert.ToDouble(DateTime.Parse(zamzam).ToString("HH"))*60)+Convert.ToDouble(DateTime.Parse(zamzam).ToString("mm")));
if ( (zamanfark<5 && (alf-IslemFiyat)/IslemFiyat>0.02f)
||(zamanfark>=5 && zamanfark<10 && (alf-IslemFiyat)/IslemFiyat>0.01f)
||(zamanfark>=10 && zamanfark<15 && (alf-IslemFiyat)/IslemFiyat>0)
|| (zamanfark>=15 )
|| ((alf-IslemFiyat)/IslemFiyat<-0.04f)
|| ( Sistem.SaatAraligi("17:30", "18:30")))
{
//sat
satf=Math.Round(Sistem.AlisFiyat(Sembol)*100)/100;
Sistem.EmirSembol = Sembol;
Sistem.EmirIslem = "Satış";
Sistem.EmirMiktari = poz;
Sistem.EmirTipi = "Limit";
Sistem.EmirFiyati = alf;
Sistem.EmirSuresi = "GUN";
Sistem.EmirGonder();
kar=(satf-IslemFiyat)*poz;
kar=Math.Round(kar);
Sistem.PozisyonKontrolGuncelle(Sistem.Name+"serm",Math.Round(Sistem.PozisyonKontrolOku(Sistem.Name+"serm")+kar));
Sistem.PozisyonKontrolGuncelle("slot"+Sistem.SozcukTablosunuOku(Sembol+"slot"),0,alf,Sembol);
Sistem.PozisyonKontrolGuncelle(Sistem.Name+"bosslot", Sistem.PozisyonKontrolOku(Sistem.Name+"bosslot")+1);
Sistem.SayiTablosunuGuncelle(Sembol+"poz",0);
// log at
StreamWriter DosyaYaz = File.AppendText(logfile); //Dosyaya yeni veri olarak eklenir.
{ DosyaYaz.WriteLine(DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss:fff")+"| SATIS |"+Sembol+"|Fiyat|"+satf.ToString()+"|Miktar|"+poz.ToString()+"|Slot|"+slot.ToString()+"|allot|"
+allot.ToString()+"|satlot|"+ satlot.ToString()+"|allot1|"+ allot1.ToString()+"|satlot1|"+ satlot1.ToString()+"|ort|"+ ort.ToString()+" |kar|"+kar.ToString("#.#0")+"|zamanfark|"+zamanfark.ToString()+" | islemf| "+IslemFiyat.ToString()); }
DosyaYaz.Flush(); DosyaYaz.Close();
}
}
else if(poz==0 && (Sistem.SaatAraligi("10:08", "12:58")|| Sistem.SaatAraligi("14:01", "17:29"))&& Sistem.PozisyonKontrolOku(Sistem.Name+"bosslot")>0
&& (allot-satlot)>ort*10 && allot1>0 && satlot1>0 && (allot-allot1)>ort*5 && Sistem.SatisFiyat(Sembol)*allot>5000
&& Sistem.SatisFiyat(Sembol)>1.0f && alf>alf1 )
{
IslemFiyat=Math.Round(Sistem.SatisFiyat(Sembol)*100)/100;
poz=Math.Floor((Sistem.PozisyonKontrolOku(Sistem.Name+"serm")/20)/Sistem.SatisFiyat(Sembol));
Sistem.EmirSembol = Sembol;
Sistem.EmirIslem = "Alis";
Sistem.EmirMiktari = poz;
Sistem.EmirTipi = "Limit";
Sistem.EmirFiyati = IslemFiyat;
Sistem.EmirSuresi = "GUN";
Sistem.EmirGonder();
//al
slot= Sistem.PozisyonKontrolOku("slot01")==0?"01":Sistem.PozisyonKontrolOku("slot02")==0?"02":Sistem.PozisyonKontrolOku("slot03")==0?"03":Sistem.PozisyonKontrolOku("slot04")==0
?"04":Sistem.PozisyonKontrolOku("slot05")==0?"05":Sistem.PozisyonKontrolOku("slot06")==0?"06":Sistem.PozisyonKontrolOku("slot07")==0?"07":Sistem.PozisyonKontrolOku("slot08")==0?"08":
Sistem.PozisyonKontrolOku("slot09")==0?"09":Sistem.PozisyonKontrolOku("slot10")==0?"10":Sistem.PozisyonKontrolOku("slot11")==0?"11":Sistem.PozisyonKontrolOku("slot12")==0?"12":Sistem.PozisyonKontrolOku("slot13")==0?"13":
Sistem.PozisyonKontrolOku("slot14")==0?"14":Sistem.PozisyonKontrolOku("slot15")==0?"15":Sistem.PozisyonKontrolOku("slot16")==0?"16":Sistem.PozisyonKontrolOku("slot17")==0
?"17":Sistem.PozisyonKontrolOku("slot18")==0?"18":Sistem.PozisyonKontrolOku("slot19")==0?"19":"";
Sistem.PozisyonKontrolGuncelle("slot"+slot,poz,IslemFiyat,Sembol);
Sistem.PozisyonKontrolGuncelle(Sistem.Name+"bosslot", Sistem.PozisyonKontrolOku(Sistem.Name+"bosslot")-1);
Sistem.SayiTablosunuGuncelle(Sembol+"pozfiyat",IslemFiyat);
//log at
StreamWriter DosyaYaz = File.AppendText(logfile); //Dosyaya yeni veri olarak eklenir.
{ DosyaYaz.WriteLine(DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss:fff")+"| ALIS | "+Sembol+"|Fiyat|"+IslemFiyat.ToString()+"|miktar|"+poz.ToString()+"|allot|"+allot.ToString()+"|satlot|"
+allot.ToString()+"|"+ satlot.ToString()+"|allot1|"+ allot1.ToString()+"|satlot1|"+ satlot1.ToString()+"|ort|"+ ort.ToString()+"|slot|"+slot); }
DosyaYaz.Flush(); DosyaYaz.Close();
}
}
}
Sistem.Debug("bit "+DateTime.Now.ToString("HH:mm:ss:fff"));
Yer İmleri