Created
December 15, 2016 20:15
-
-
Save anonymous/998ae6fdf4ebd874178bdc2d1338e3ef to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/********* | |
* 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