olağandışılık yüzünden (çok fazla emir mesela ) sistemi durduracaksınız son pozisyonu açık bırakmak yerine sıfırlamak daha mantıklı.
olağandışılık yüzünden (çok fazla emir mesela ) sistemi durduracaksınız son pozisyonu açık bırakmak yerine sıfırlamak daha mantıklı.
editorde yazdım , pozisyon atmasın diye idealde denemedim."kk" lar benim notum
Kod:var LotSize = 1.0; var Periyot = "5"; var KullanilanSistem = "SistemAdi"; var DefaLimiti = 3; // VIOP - Canlı Barda Emir Gönderim Kalıbı var MySistem = Sistem.SistemGetir(KullanilanSistem, "VIP'VIP-X030", Periyot); if (MySistem != null) { var V = MySistem.GrafikVerileri; var Saat = V[V.Count - 1].Date; if (Sistem.SaatAraligi("09:30", "18:14") && V[V.Count - 1].Date.Day == DateTime.Now.Day) { var DefaAnahtar = Sistem.Name + " , " + "Defa" + " , " + Saat.ToString("yyyyMMddHHmm"); var DefaSayisi = Sistem.SayiTablosunuOku(DefaAnahtar); if (DefaSayisi <= DefaLimiti )// limitte ise dahil kk { var EmirSembol = Sistem.AktifViopKontrat; var Pozisyon = Sistem.PozisyonKontrolOku(Sistem.Name + " , " + EmirSembol); var SonYon = ""; for (int i = 0; i < MySistem.Yon.Count; i++) { if (MySistem.Yon[i] != "") SonYon = MySistem.Yon[i]; } // Emir Miktarını Hesapla var Miktar = 0.0; if (DefaSayisi == DefaLimiti){Miktar=Pozisyon==0?0:-Pozisyon;}// flate kk else 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 if (Miktar != 0) { Sistem.PozisyonKontrolGuncelle(Sistem.Name + " , " + EmirSembol, Miktar + Pozisyon); Sistem.EmirSembol = Sistem.AktifViopKontrat; Sistem.EmirIslem = Miktar > 0 ? "ALIS" : "SATIS"; Sistem.EmirMiktari = Math.Abs(Miktar); Sistem.EmirSuresi = "GUN"; Sistem.EmirTipi = "KPY"; Sistem.EmirFiyatTipi = "PYS"; Sistem.EmirGonder(); DefaSayisi++; Sistem.SayiTablosunuGuncelle(DefaAnahtar, DefaSayisi); } } } }
defasayısını güncellemeyi ihmal etmişim
Kod:var LotSize = 1.0; var Periyot = "5"; var KullanilanSistem = "SistemAdi"; var DefaLimiti = 3; // VIOP - Canlı Barda Emir Gönderim Kalıbı var MySistem = Sistem.SistemGetir(KullanilanSistem, "VIP'VIP-X030", Periyot); if (MySistem != null) { var V = MySistem.GrafikVerileri; var Saat = V[V.Count - 1].Date; if (Sistem.SaatAraligi("09:30", "18:14") && V[V.Count - 1].Date.Day == DateTime.Now.Day) { var DefaAnahtar = Sistem.Name + " , " + "Defa" + " , " + Saat.ToString("yyyyMMddHHmm"); var DefaSayisi = Sistem.SayiTablosunuOku(DefaAnahtar); if (DefaSayisi <= DefaLimiti )// limitte ise dahil kk { var EmirSembol = Sistem.AktifViopKontrat; var Pozisyon = Sistem.PozisyonKontrolOku(Sistem.Name + " , " + EmirSembol); var SonYon = ""; for (int i = 0; i < MySistem.Yon.Count; i++) { if (MySistem.Yon[i] != "") SonYon = MySistem.Yon[i]; } // Emir Miktarını Hesapla var Miktar = 0.0; if (DefaSayisi == DefaLimiti){Miktar=Pozisyon==0?0:-Pozisyon;}// flate kk else 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 if (Miktar != 0) { Sistem.PozisyonKontrolGuncelle(Sistem.Name + " , " + EmirSembol, Miktar + Pozisyon); Sistem.EmirSembol = Sistem.AktifViopKontrat; Sistem.EmirIslem = Miktar > 0 ? "ALIS" : "SATIS"; Sistem.EmirMiktari = Math.Abs(Miktar); Sistem.EmirSuresi = "GUN"; Sistem.EmirTipi = "KPY"; Sistem.EmirFiyatTipi = "PYS"; Sistem.EmirGonder(); } DefaSayisi++; Sistem.SayiTablosunuGuncelle(DefaAnahtar, DefaSayisi); } } }
Yer İmleri