Bir sistem/strateji yazıp, bu stratejinin sinyal verdiği senetleri alıp,satmasını isteyenlere robot kodu örneği:
- Kodu aynen kopyalayıp, sadece sisteminizin taraması ve sinyal gelmesi durumunda işlem yapmasını istediğiniz senetleri koda ekleyeceksiniz.
-Bu örnekte, strateji "Sezai" isimli formül. Siz kendi sisteminizin adını yazacaksınız. Aynı şekilde örnekte, 5 DK grafiklerine uygulanmış. Periyot da sizin tercihiniz. Kodun geri kalanına dokunmaya gerek yok.
-Son olarak, emir gönder bloğundaki bir satır sayesinde, yapılan her işlem, hangi hisseye ne işlem yapıldı, o anda hissenin fiyatı neydi, tarih ve saat neydi gibi bigileri de diskte robotemirler isimli bir text dosyaya kaydeder.
Kod:var Sozluk = new Dictionary<string,double>(); Sozluk["IMKBH'EREGL"] = 5; // 5 lot Sozluk["IMKBH'GARAN"] = 1; // 1 lot Sozluk["IMKBH'YKBNK"] = 2; // 2 lot Sozluk["IMKBH'GSRAY"] = 5; // 5 lot Sozluk["IMKBH'FENER"] = 1; // 1 lot Sozluk["IMKBH'BJKAS"] = 2; // 2 lot for (var No=0; No < Sozluk.Count; No++) { var Sembol = Sozluk.ElementAt(No).Key; var LotSize = Sozluk.ElementAt(No).Value; var SonFiyat = Sistem.SonFiyat(Sembol); var Anahtar = Sistem.Name + "," + Sembol; double IslemFiyat = 0; DateTime IslemTarih; var Miktar = 0.0; var Rezerv = ""; var Pozisyon = Sistem.PozisyonKontrolOku(Anahtar, out IslemFiyat, out IslemTarih); var MySistem = Sistem.SistemGetir("Sezai",Sembol, "5"); //sitemin adı, sembol, grafik periyodu var SonYon = MySistem.SonYon; if (Sistem.Saat.CompareTo("10:00:00") <= 0 || Sistem.Saat.CompareTo("17:59:59") >= 0 ) // Seans yok { } if (SonYon == "F" && Pozisyon != 0) // Flata Geç Miktar = -Pozisyon; else if (SonYon == "A" && Pozisyon != LotSize) // Al Miktar = LotSize - Pozisyon; else if (SonYon == "S" && Pozisyon != -LotSize) // Sat Miktar = -LotSize - Pozisyon; // Emir Gönder var Islem = ""; if (Miktar > 0) Islem = "ALIS"; if (Miktar < 0) Islem = "SATIS"; if (Islem != "") { Sistem.PozisyonKontrolGuncelle(Anahtar, Miktar + Pozisyon, SonFiyat, Rezerv); Sistem.EmirSembol = Sembol; Sistem.EmirIslem = Islem; Sistem.EmirSuresi = "KIE"; // GUN, KIE, IKG Sistem.EmirTipi = "Piyasa"; // Piyasa, Limitli, Piyasadan Limite Sistem.EmirMiktari = Math.Abs(Miktar); Sistem.EmirGonder(); File.AppendAllText("\\robotemirler.Txt", Sembol + "-" + DateTime.Now.ToString("HH:mm:ss") + Islem + "- " + "Fiyat =" + SonFiyat.ToString() + "\r\n"); } }
algoritma eksik işte. Sorun bu zaten.
65 aşağı kırıyr flata geçiyor 50 yi aşağı kırıp yukarı kesınce ıslem yapmalı.
fakat sistem flatta devam edıyor.
koşulumu arttırmalıyım acaba.
SORUNUM ASLINDA ARASINDA olayını sisteme anlatamamakta.
şu iki çzgi arasına şu şekilde girdiysen işlem yap.
üst çizgi ile alt cızgı arasına alt çizgiyi geçerek cıktıysan işlemleri yap. ama üst çizgiyi aşağı kırıpta bu ıkı çizgi arasında isen flat kal.
acaba önce flatı tanımlayıp alıs ve satış için bu şartlara baksa dahamı dogru olacak.
Senin almaya cesaret edemediğin riskleri alanlar, senin yaşamak istediğin hayatı yaşarlar..
Sokrates twit @erhanacikgoz1
var AlisLotKademe = Sistem.Liste(KademeSayisi,0);
bu satır hatalıydı
bu yöntemde çalışan kod;
int kademeadet=4;
var Derinlik = Sistem.DerinlikVerisiOku("IMKBH'EREGL");
var AlisLotKademe = Sistem.Liste(kademeadet,0);
for (int i=0; i <kademeadet;i++) { AlisLotKademe[i] = Derinlik.Bids[i].Size; }
var EmirMiktar = Sistem.Sum(AlisLotKademe);
Sistem.Mesaj(EmirMiktar.ToString());
Erhan Bey
RSI'ın örnek olarak 7 ayrı seviyeyle kontrolünü yaparak, istediğinizi yapmanızı şu tarz bir kodlama sağlayabilir belki.
Edit: Aşağı ve Yukarı kelimelerini ters yazmıştım açıklama satırlarında.Kod:var SartA = false; var SartB = false; for (int i=1; i < Sistem.BarSayisi; i++) { //YUKARI KESME KONTROLÜ (Birisi gerçekleşirse SartA true olur) SartA = (RSI[i-1] < L1 && RSI[i] >= L1) || (RSI[i-1] < L2 && RSI[i] >= L2) || (RSL[i-1] < L3 && RSI[i] >= L3) || (RSI[i-1] < L4 && RSI[i] >= L4) || (RSI[i-1] < L5 && RSI[i] >= L5) || (RSI[i-1] < L6 && RSI[i] >= L6) || (RSI[i-1] < L7 && RSI[i] >= L7) ; //AŞAĞI KESME KONTROLÜ (Birisi gerçekleşirse SartB true olur) SartA = (RSI[i-1] > L1 && RSI[i] <= L1) || (RSI[i-1] > L2 && RSI[i] <= L2) || (RSL[i-1] > L3 && RSI[i] <= L3) || (RSI[i-1] > L4 && RSI[i] <= L4) || (RSI[i-1] > L5 && RSI[i] <= L5) || (RSI[i-1] > L6 && RSI[i] <= L6) || (RSI[i-1] > L7 && RSI[i] <= L7) ; }
Eğer PITE (Anlık alıcı satıcı) lisansınız varsa, tüm işlemler (veya sembol bazında işlem defteri) bilgisini de okutabiliyorduk zaten idealde bildiğiniz gibi. Bu sayede mesela aşağıdaki gibi bir kod da yazılabilir;
Bir aracı kurumun bir hisse senedinde yaptığı işlemlerini NET LOT değeri X olursa Y işini yap..
Örnek kod: TEB Yatırımın ISCTR hisse senedinde yaptığı işlemlerin NET LOT değerini (alışları-satışları) bul ve göster...
Kod:var Emirler = Sistem.HisseIslemleriniOku(); var NetLot = 0; foreach (var item in Emirler) { if (item.Symbol == "ISCTR") { if (item.BuyerCode == "TBY") NetLot += item.Size; //alışları ekle if (item.SellerCode == "TBY") NetLot -= item.Size; //satışları çıkar } } Sistem.Mesaj(NetLot.ToString());
Buralar haraketlenmis bu iyi
M1453 cihazımdan hisse.net mobile app kullanarak gönderildi.
Yer İmleri