Abiler Hocalar Selamlar
aşağıdaki robot kodunda alacağı hisse adedine sınırlama getirebiliyorum.
ama alım sınırlamasını var XXXXXX = c[i]/ h[i] (ornektir) ; alacağı büyükten küçüğe doğru sıralayıp o şekilde almasını istiyorum. Yardımlarınız beklerim)
3 hisse almasını ve bu sıralamanın xxxxx değerine göre sıralayıp alması lazım.
HTML Kod:
var SistemAdi = "XXXXXXXXXXXXXXXXXXXXXXX";//sisteminizin ismini buraya girin
var GrafikPeriyodu = "1"; //sisteminizin çalıştığı periyot
var Sozluk = new Dictionary<string, double>();
Sozluk["IMKBH'GARAN"] = 1;
Sozluk["IMKBH'AKBNK"] = 1;
Sozluk["IMKBH'ISCTR"] = 1;
Sozluk["IMKBH'YKBNK"] = 1;
Sozluk["IMKBH'ALBRK"] = 1;
int MaksimumHisseAdedi = 3; // Maksimum alım sayısını belirtin.
int aktifPozisyonSayisi = 0; // Anlık aktif pozisyon sayısını tutacak değişken.
foreach (var kvp in Sozluk) // Döngüye girmeden önce mevcut pozisyonları sayın.
{
var anahtar = "TAR3_GSPK01A" + Sistem.Name + kvp.Key + "_";
double fiyat; DateTime tarih;
var pozisyonMiktari = Sistem.PozisyonKontrolOku(anahtar, out fiyat, out tarih);
if (pozisyonMiktari > 0)
{
aktifPozisyonSayisi++;
}
}
for (var No = 0; No < Sozluk.Count; No++)
{
var EmirSembol = Sozluk.ElementAt(No).Key;
var Sembol = EmirSembol;
var MySistem = Sistem.SistemGetir(SistemAdi, Sembol, GrafikPeriyodu);
var LotSize = Sozluk.ElementAt(No).Value;
var SonFiyat = Sistem.SonFiyat(EmirSembol);
var Anahtar = Sistem.Name + "," + EmirSembol;
double IslemFiyat = 0;
DateTime IslemTarih;
var Miktar = 0.0;
var Rezerv = "";
string PozRezerv = "" ;
double PozFiyat = 0.0 ;
var Pozisyon = Sistem.PozisyonKontrolOku(Anahtar, out IslemFiyat, out IslemTarih);
var SonYon = Sistem.SonYonGetir(SistemAdi, Sembol, GrafikPeriyodu);
string DosyaDir = "C:\\iDeal\\TARAMA_LOG5\\" + Sistem.Name + "_" + Sembol.ToString() + ".txt";
if (!System.IO.Directory.Exists("C:\\iDeal\\TARAMA_LOG5\\")) System.IO.Directory.CreateDirectory("C:\\iDeal\\TARAMA_LOG5\\");
if (!System.IO.File.Exists(DosyaDir)) System.IO.File.Create(DosyaDir);
var KZ = 0.0 ;
var KZY = "" ;
var XXXXXX = c[i]/ h[i] ;
var SF = Sistem.SonFiyat(EmirSembol);
// Emir Miktarını Hesapla
if (Sistem.Saat.CompareTo("00:01:00") <= 0 || Sistem.Saat.CompareTo("23:59:59") >= 0) // seans yok işlem yapma
{
}
else
{
if (SonYon == "F" && Pozisyon != 0) // Flata Geç
{
Miktar = -Pozisyon;
PozFiyat = Sistem.SonFiyat(Sembol);
Rezerv = " Satiş Fiyatı :" + PozFiyat.ToString("0.00") + " K/Z : " + KZ.ToString("0.000"); ;
KZ = (float)(SF * Pozisyon) - (float)(PozFiyat * Pozisyon);
KZY = (Sistem.SayiYuvarla(SF / PozFiyat, 0.0001) - 1).ToString("%0.000");
PozRezerv = "Satış Fiyatı : " + PozFiyat.ToString("0.00") + " K/Z : " + KZ.ToString("0.000"); }
else if (SonYon == "A" && Pozisyon != LotSize && aktifPozisyonSayisi < MaksimumHisseAdedi) // Al
{
Miktar = LotSize - Pozisyon;
PozFiyat = Sistem.SonFiyat(Sembol);
Rezerv = " Alişi Fiyatı :" + PozFiyat.ToString("0.00") ;
aktifPozisyonSayisi++;
}
else if (SonYon == "S" && Pozisyon != -LotSize) // Sat //HİSSE SATIŞI BURADAN GİDİYOR.
{
PozFiyat = Sistem.SonFiyat(Sembol);
Miktar = -LotSize - Pozisyon;
Rezerv = " Satiş2 Fiyatı :" + PozFiyat.ToString("0.00") ;
KZ = (float)(SF * Pozisyon) - (float)(PozFiyat * Pozisyon);
KZY = (Sistem.SayiYuvarla(SF / PozFiyat, 0.0001) - 1).ToString("%0.000");
PozRezerv = "Satış Fiyatı : " + PozFiyat.ToString("0.00") + " K/Z : " + KZ.ToString("0.000");
}
// 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 = EmirSembol;
Sistem.EmirIslem = Islem;
Sistem.EmirMiktari = Math.Abs(Miktar);
Sistem.EmirFiyati = Sistem.SonFiyat(Sembol);
Sistem.EmirAciklama = Rezerv;
Sistem.EmirTipi = "Piyasa";
Sistem.EmirSuresi = "KIE";
Sistem.EmirGonder();
string LOGTEXT = Sistem.Name .ToString() + "\t" +
Sembol.ToString() + "\t" +
Islem.ToString() + "\t" +
PozFiyat.ToString("0.00") + "\t" +
Math.Abs(Miktar).ToString() + "\t" +
System.DateTime.Now.ToString("dd.MM.yyyy") + "\t" +
System.DateTime.Now.ToString("HH:mm:ss");
LOGTEXT += Islem == "SATIS" ? "\tKZ: " + KZ.ToString("0.000") + "\r\n" : "\r\n";
System.IO.File.AppendAllText(DosyaDir, LOGTEXT);
if (Islem == "SATIS") LOGTEXT += "\r\n" + "KZ Yüzde: " + KZY + " + K.Z. :" + KZ ;
// Telegram Mesaj
string urlString = "https://api.telegram.org/bot{0}/sendMessage?chat_id={1}&text={2}";
string apiToken = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
string chatId = "XXXXXXXXXXXXXXXXXXXXXXX"; System.Net.WebRequest.Create(String.Format(urlString, apiToken, chatId, LOGTEXT)).GetResponse().GetResponseStream();
}
}
}
Yer İmleri