Birden fazla VIOP endeks robotu kullanıp, ortalama 1000 puan günlük kara geçince pozisyonların yarısı ile kar al yapmak.
Kod:
var Sembol = "VIP'VIP-X030";
var Periyot = "1";
float KarAlSeviye = 1.0f;
// sistemler
var SistemDictionary = new Dictionary<string, int>();
var SonYonDictionary = new Dictionary<string, string>();
SistemDictionary["SISTEM1"] = 2;
SistemDictionary["SISTEM2"] = 2;
SistemDictionary["SISTEM3"] = 2;
SistemDictionary["SISTEM4"] = 2;
// hesaplar
var HesapDictionary = new Dictionary<string, string>();
HesapDictionary["XXXXX, XXXXX Yatırım"] = "1";
// *******************************************
var V = Sistem.GrafikVerileriniOku(Sembol, Periyot);
List<float> GetiriList = new List<float>();
for (int i = 0; i < V.Count - 1; i++)
GetiriList.Add(0);
int OncekiGunBarNo = 0;
for (int j = V.Count - 1; j >= 0; j--)
{
if (V[j].Date.Day != V[j - 1].Date.Day)
{
OncekiGunBarNo = j - 1;
break;
}
}
foreach (var sistemitem in SistemDictionary)
{
var MySistem = Sistem.SistemGetir(sistemitem.Key, Sembol, Periyot);
if (MySistem != null)
{
MySistem.GetiriHesapla("01/01/2000", 0.0);
for (int i = 0; i < V.Count - 1; i++)
GetiriList[i] += MySistem.GetiriKZ[i] * sistemitem.Value;
// son yön
var SonYon = "";
for (int i = MySistem.Yon.Count - 2; i >= 0; i--)
{
if (MySistem.Yon[i] != "")
{
SonYon = MySistem.Yon[i];
break;
}
}
SonYonDictionary[sistemitem.Key] = SonYon;
}
}
var ToplamLot = 0;
foreach (var sistemitem in SistemDictionary)
ToplamLot += sistemitem.Value;
for (int i = 0; i < V.Count - 1; i++)
GetiriList[i] = GetiriList[i] / ToplamLot;
var KarAlBool = false;
var OncekiGunGetiri = GetiriList[OncekiGunBarNo];
for (int i = OncekiGunBarNo + 1; i < V.Count - 1; i++)
{
if (GetiriList[i] - GetiriList[OncekiGunBarNo] > KarAlSeviye)
{
KarAlBool = true;
break;
}
}
// başla
foreach (var sistemitem in SistemDictionary)
{
if (SonYonDictionary.ContainsKey(sistemitem.Key) == false) continue;
var LotSize = sistemitem.Value;
var EmirSembol = Sistem.AktifViopKontrat;
var SonFiyat = Sistem.SonFiyat(EmirSembol);
var SonYon = SonYonDictionary[sistemitem.Key];
if (KarAlBool)
LotSize = LotSize / 2;
if (SonYon == "F" || SonYon == "A" || SonYon == "S")
{
// hesaplar
foreach (var hesapitem in HesapDictionary)
{
var Anahtar = sistemitem.Key + " , " + hesapitem.Key;
double IslemFiyat = 0;
DateTime IslemTarih;
var Miktar = 0.0;
var Rezerv = "";
var Pozisyon = Sistem.PozisyonKontrolOku(Anahtar, out IslemFiyat, out IslemTarih);
if (Sistem.Saat.CompareTo("09:30:00") <= 0 || Sistem.Saat.CompareTo("18:14:59") >= 0)
{
}
else if (SonYon == "F" && Pozisyon != 0)
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"; Rezerv = "ALIŞ YAPILDI"; }
if (Miktar < 0) { Islem = "SATIS"; Rezerv = "SATIŞ YAPILDI"; }
if (Islem != "")
{
Sistem.PozisyonKontrolGuncelle(Anahtar, Miktar + Pozisyon, SonFiyat, Rezerv);
Sistem.EmirHesapAdi = hesapitem.Key;
Sistem.EmirAltHesap = hesapitem.Value;
Sistem.EmirSembol = EmirSembol;
Sistem.EmirIslem = Islem;
Sistem.EmirSuresi = "KIE";
Sistem.EmirTipi = "Piyasa";
Sistem.EmirMiktari = Math.Abs(Miktar);
Sistem.EmirAciklama = sistemitem.Key;
Sistem.EmirGonder();
}
}
}
}
Yer İmleri