Skip to content

Instantly share code, notes, and snippets.

Created December 15, 2016 20:15
Show Gist options
  • Save anonymous/998ae6fdf4ebd874178bdc2d1338e3ef to your computer and use it in GitHub Desktop.
Save anonymous/998ae6fdf4ebd874178bdc2d1338e3ef to your computer and use it in GitHub Desktop.
/*********
* This Gist was created at CSharpPad.com
* To run this file, open http://csharppad.com/gist/76a68d8c2927ad66154416889e898935
**********/
DateTime Bugun_Tarih = DateTime.Today;
//DateTime Bugun_Tarih = DateTime.Today.AddDays(-1);
int Gunluk_Bar_Sayisi;
float Toplam_Gunluk_Hacim;
float Toplam_Gunluk_Hacmin_2_Kati;
float Ortalama_Gunluk_Hacim;
int Gunluk_Hacim_Kontrol;
float Son_Bes_Dakika_Hacim;
int Bes_Dakikalik_Hacim_Kontrol;
float Toplam_Derinlik_Alis_Hacim;
int Derinlik_Alis_Hacim_Kontrol;
float Son_Bes_Dakika_En_Dusuk;
float Son_Dort_Dakika_En_Yuksek;
float Son_Bir_Dakika_En_Yuksek;
float Son_Bes_Dakika_En_Yuksek;
float Gunluk_Spike_Hacim;
float Onceki_Gun_Kapanis;
float Onceki_Gun_Yuksek;
float Fiyat_Artis_Farki;
float Gunluk_Dusuk_Fiyat;
float Guncel_Alis_Fiyati;
float Guncel_Satis_Fiyati;
float Fiyat_Adimi;
float Bekleyen_Alis_Emirleri_Toplami;
float Bekleyen_Alis_Emirleri_Agirlikli_Ortalama;
float Ortalama_Gunluk_Hacim_Katsayisi;
/*
List<string[]> hisseler = new List<string[]>();
hisseler.Add(new string[] {"OTOKAR", "A"});
hisseler.Add(new string[] {"GARAN", "B"});
*/
var liste = Sistem.YuzeyselListeGetir("IMKBH'"); //tüm IMKB hisselerinin listesi
for (int h = 0 ; h <= liste.Count-1; h+=1)
{
Gunluk_Bar_Sayisi = 0;
Toplam_Gunluk_Hacim = 0;
Gunluk_Hacim_Kontrol = 0;
Son_Bes_Dakika_Hacim = 0;
Bes_Dakikalik_Hacim_Kontrol = 0;
Toplam_Derinlik_Alis_Hacim = 0;
Derinlik_Alis_Hacim_Kontrol = 0;
Gunluk_Spike_Hacim = 0;
Onceki_Gun_Kapanis = 0;
Onceki_Gun_Yuksek = 0;
Fiyat_Artis_Farki = 0;
Gunluk_Dusuk_Fiyat = 0;
Guncel_Alis_Fiyati = 0;
Guncel_Satis_Fiyati = 0;
Fiyat_Adimi = 0;
Bekleyen_Alis_Emirleri_Toplami = 0;
Bekleyen_Alis_Emirleri_Agirlikli_Ortalama = 0;
Ortalama_Gunluk_Hacim_Katsayisi = 0;
var Sembol = "IMKBH'"+liste[h].Root.Split('-')[0]; //tum IMKB hisse senetlerinin listesi alınıyor
var Pozisyon = Sistem.PozisyonKontrolOku(Sistem.Name + Sembol);
if ( Pozisyon > 0 ) {continue;} //elde zaten bu hisse varsa devam et
var Yuzeysel_Veriler = Sistem.YuzeyselVeriOku(Sembol);
if ( Yuzeysel_Veriler.Grup != "A" && Yuzeysel_Veriler.Grup != "B" ) {continue;} //sadece A ve B grubundaki hisseler için işlem başlıyor
//Sistem.Debug(Sembol + " Hisse Grubu = " + Yuzeysel_Veriler.Grup.ToString());
var Gunluk_Grafik = Sistem.GrafikVerileriniOku(Sembol,"G");
if (Gunluk_Grafik.Count-1 < 250) { continue; } //Günlük grafik listesinde 250'den az veri varsa geç
int Gunluk_Grafik_Max_Veri = Gunluk_Grafik.Count-1;
if (Gunluk_Grafik[Gunluk_Grafik_Max_Veri].Date != Bugun_Tarih) { continue; } //son veri bugüne ait değilse geç
Onceki_Gun_Kapanis = Yuzeysel_Veriler.PrevCloseDay;
Onceki_Gun_Yuksek = Gunluk_Grafik[Gunluk_Grafik_Max_Veri-1].High;
Gunluk_Dusuk_Fiyat = Yuzeysel_Veriler.LowDay;
Guncel_Alis_Fiyati = Yuzeysel_Veriler.BidPrice;
Guncel_Satis_Fiyati = Yuzeysel_Veriler.AskPrice;
Fiyat_Adimi = Yuzeysel_Veriler.AskPrice - Yuzeysel_Veriler.BidPrice;
if (Gunluk_Dusuk_Fiyat-Fiyat_Adimi > Onceki_Gun_Yuksek) { continue; } //günlükte gap varsa geç
Fiyat_Artis_Farki = Fiyat_Adimi * 2;
/*
if (Onceki_Gun_Kapanis <= 5f)
{ Fiyat_Artis_Farki = 0.02f; }
else if (Onceki_Gun_Kapanis <= 10f)
{ Fiyat_Artis_Farki = 0.04f; }
else if (Onceki_Gun_Kapanis <= 20f)
{ Fiyat_Artis_Farki = 0.08f; }
else if (Onceki_Gun_Kapanis <= 50f)
{ Fiyat_Artis_Farki = 0.16f; }
else if (Onceki_Gun_Kapanis <= 100f)
{ Fiyat_Artis_Farki = 0.32f; }
else if (Onceki_Gun_Kapanis <= 200f)
{ Fiyat_Artis_Farki = 0.64f; }
else if (Onceki_Gun_Kapanis <= 500f)
{ Fiyat_Artis_Farki = 1.28f; }
else if (Onceki_Gun_Kapanis <= 1000f)
{ Fiyat_Artis_Farki = 2.56f; }
*/
for (int i = 0 ; i <= Gunluk_Grafik_Max_Veri; i++)
{
if(Gunluk_Grafik[i].Date >= Gunluk_Grafik[Gunluk_Grafik_Max_Veri].Date.AddYears(-1)) //son 1 yıl
{
Toplam_Gunluk_Hacim += Gunluk_Grafik[i].Vol;
Gunluk_Bar_Sayisi++;
}
}
Ortalama_Gunluk_Hacim = (Toplam_Gunluk_Hacim / Gunluk_Bar_Sayisi);
Toplam_Gunluk_Hacmin_2_Kati = Ortalama_Gunluk_Hacim * 2;
Gunluk_Bar_Sayisi = 0;
Toplam_Gunluk_Hacim = 0;
for (int i = 0 ; i <= Gunluk_Grafik_Max_Veri; i++)
{
if(Gunluk_Grafik[i].Date >= Gunluk_Grafik[Gunluk_Grafik_Max_Veri].Date.AddYears(-1) && Gunluk_Grafik[i].Vol < Toplam_Gunluk_Hacmin_2_Kati)
{
Toplam_Gunluk_Hacim += Gunluk_Grafik[i].Vol;
Gunluk_Bar_Sayisi++;
}
}
Ortalama_Gunluk_Hacim = (Toplam_Gunluk_Hacim / Gunluk_Bar_Sayisi);
Toplam_Gunluk_Hacmin_2_Kati = Ortalama_Gunluk_Hacim * 2;
for (int i = Gunluk_Grafik_Max_Veri-10 ; i<=Gunluk_Grafik_Max_Veri; i++) //son 11 gün içinde günlük volume spike (ortalama günlük hacim x 2) hacim var mı?
{
if(Gunluk_Grafik[i].Vol >= Toplam_Gunluk_Hacmin_2_Kati)
{
Gunluk_Hacim_Kontrol = 1;
Gunluk_Spike_Hacim = Gunluk_Grafik[i].Vol;
break;
}
}
if(Gunluk_Hacim_Kontrol == 1)
{
Son_Bes_Dakika_En_Dusuk = 0;
Son_Bes_Dakika_En_Yuksek = 0;
Son_Bir_Dakika_En_Yuksek = 0;
Son_Dort_Dakika_En_Yuksek = 0;
var Bir_Dakikalik_Grafik = Sistem.GrafikVerileriniOku(Sembol,"1");
int Bir_Dakikalik_Grafik_Max_Veri = Bir_Dakikalik_Grafik.Count-1;
for (int d = Bir_Dakikalik_Grafik_Max_Veri-4 ; d <= Bir_Dakikalik_Grafik_Max_Veri; d++) //son 5 dakika içinde günlük volume spike (gunluk ortalama / 5) hacim var mı?
{
//aynı gün içindeki son 5 dakika toplam hacim
if ( Bir_Dakikalik_Grafik[d].Date.Date == Bugun_Tarih.Date )
{
Son_Bes_Dakika_Hacim += Bir_Dakikalik_Grafik[d].Vol;
}
//son dakika hariç son 5 dakikada gördüğü en yüksek
//if ( d != Bir_Dakikalik_Grafik_Max_Veri )
//{
// if ( Bir_Dakikalik_Grafik[d].High > Son_Dort_Dakika_En_Yuksek ) { Son_Dort_Dakika_En_Yuksek = Bir_Dakikalik_Grafik[d].High; }
//}
if ( d == Bir_Dakikalik_Grafik_Max_Veri-4 )
{
Son_Dort_Dakika_En_Yuksek = Bir_Dakikalik_Grafik[d].High;
}
//son dakika en yüksek
if ( d == Bir_Dakikalik_Grafik_Max_Veri )
{
Son_Bir_Dakika_En_Yuksek = Bir_Dakikalik_Grafik[d].High;
}
}
//Sistem.Debug(Sembol + " En Düşük = " + Son_Bes_Dakika_En_Dusuk.ToString());
//Sistem.Debug(Sembol + " En Yüksek = " + Son_Bes_Dakika_En_Yuksek.ToString());
if (Ortalama_Gunluk_Hacim <= 0200000)
{ Ortalama_Gunluk_Hacim_Katsayisi = 2.0f; }
else if (Ortalama_Gunluk_Hacim <= 1000000)
{ Ortalama_Gunluk_Hacim_Katsayisi = 1.0f; }
else if (Ortalama_Gunluk_Hacim <= 2000000)
{ Ortalama_Gunluk_Hacim_Katsayisi = 0.5f; }
else if (Ortalama_Gunluk_Hacim <= 5000000)
{ Ortalama_Gunluk_Hacim_Katsayisi = 0.4f; }
else if (Ortalama_Gunluk_Hacim <= 10000000)
{ Ortalama_Gunluk_Hacim_Katsayisi = 0.3f; }
else
{ Ortalama_Gunluk_Hacim_Katsayisi = 0.2f; }
//son 5 dakikada ortalama günlük hacmin 5'de biri ve son dakika en yüksek > son 4 dakika en yüksek
if( (Son_Bes_Dakika_Hacim >= Ortalama_Gunluk_Hacim * Ortalama_Gunluk_Hacim_Katsayisi) && ( (Son_Bir_Dakika_En_Yuksek - Son_Dort_Dakika_En_Yuksek) >= Fiyat_Artis_Farki ) )
{
Bes_Dakikalik_Hacim_Kontrol = 1;
}
if(Bes_Dakikalik_Hacim_Kontrol == 1)
{
/*
var Derinlik = Sistem.DerinlikVerisiOku(Sembol);
for (int k=0 ; k < 10 ; k++) //10 alış kademesindeki toplam bekleyen hacim
{ Toplam_Derinlik_Alis_Hacim += Derinlik.Bids[k].Size * Derinlik.Bids[k].Price;}
if(Toplam_Derinlik_Alis_Hacim >= 250000) //toplam alış derinliği 250bin ve üzerindeyse
{ Derinlik_Alis_Hacim_Kontrol = 1;}
*/
Toplam_Derinlik_Alis_Hacim = Bekleyen_Alis_Emirleri_Toplami * Bekleyen_Alis_Emirleri_Agirlikli_Ortalama;
if(Toplam_Derinlik_Alis_Hacim >= 500000) //toplam alış derinliği 500bin ve üzerindeyse
{ Derinlik_Alis_Hacim_Kontrol = 1;}
if (Derinlik_Alis_Hacim_Kontrol == 1)
{
Sistem.ZamanKontrolGuncelle(Sembol);
var Miktar = 1;
Sistem.EmirSembol = Sembol;
Sistem.EmirIslem = "Alış";
Sistem.EmirMiktari = Miktar;
Sistem.EmirFiyati = Guncel_Satis_Fiyati; // aktif fiyat
Sistem.EmirSuresi = "SEANS"; // SEANS, GUN
Sistem.EmirTipi = "NORMAL"; // NORMAL, KIE, KPY, AFE/KAFE
Sistem.EmirGonder();
Sistem.PozisyonKontrolGuncelle(Sistem.Name + Sembol,Pozisyon + Miktar);
var Mesaj =
"\r\n" + "Sembol = " + Sembol.ToString()
+ "\r\n" + "Ortalama Günlük Hacim = " + Ortalama_Gunluk_Hacim.ToString("f")
+ "\r\n" + "Son 5 Dakika Hacim = " + Son_Bes_Dakika_Hacim.ToString("f")
+ "\r\n" + "5 Dakika Önceki En Yüksek = " + Son_Dort_Dakika_En_Yuksek.ToString()
+ "\r\n" + "Son Dakika En Yüksek = " + Son_Bir_Dakika_En_Yuksek.ToString()
+ "\r\n" + "Toplam Derinlik Alış Hacim = " + Toplam_Derinlik_Alis_Hacim.ToString("f")
+ "\r\n" + "Günlük Hacim Spike = " + Gunluk_Spike_Hacim.ToString("f")
+ "\r\n" + "Fiyat Artış Farkı = " + Fiyat_Artis_Farki.ToString("f")
+ "\r\n" + "Alış Fiyatı = " + Guncel_Satis_Fiyati.ToString("f");
using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"D:\TECO_Gunluk_Hacim_Spike.txt", true))
file.WriteLine(DateTime.Now.ToString() + " | " + Mesaj);
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment