Originally Posted by
philoparty
Selam,
Merak ettiğim bir husus var :
Sistemimiz 5 Dk. grafiklerle trade ederken,
İçerisinde olduğumuz 5 dk. bar henüz tamamlanmadan fiyat oluştuğu anda işlemi yaptırmak için nasıl bir örnek kullanabiliriz?
Bunu yapmanın sakıncalı olduğunu ve repaint olasılığının oldukça yükseldiğini biliyorum ama nasıl yapıldığını merak ediyorum.
Kod örneği paylaşmanız mümkün müdür?
Bu şekilde bir robot kodu henüz kapanmamış barda, koşul gerçekleştiği anda emri gönderir.
Kod:
var LotSize = 4.0;
var Sembol = "VIP'F_XU0300416S0";
var Periyot = "5";
var V = Sistem.GrafikVerileriniOku(Sembol, Periyot);
var C = Sistem.GrafikFiyatOku(V, "Kapanis");
var MA1 = Sistem.MA(C, "Exp", 10);
var MA2 = Sistem.MA(C, "Exp", 50);
var SartAl = false;
var SartSat = false;
var SonYon = "";
for (int i = 1 ; i < V.Count; i++)
{
if (( (MA1[i] > MA2[i] ) ) && SonYon != "A" ) // alış
{
SonYon = "A";
if (i == V.Count - 1) SartAl = true;
}
if (((MA1[i] < MA2[i] )) && SonYon != "S") // satış
{
SonYon = "S";
if (i == V.Count - 1) SartSat = true;
}
}
// emir gönder
var Islem = "";
var Miktar = 0.0;
var SonFiyat = Sistem.SonFiyat(Sembol);
var Pozisyon = Sistem.PozisyonKontrolOku(Sistem.Name + " , " + Sembol);
if (SartAl && Pozisyon <= 0) // alış
{
Islem = "ALIS";
if (Pozisyon == 0) // pozisyonum yoksa 1 lot al
Miktar = LotSize;
else if (Pozisyon < 0) // short isem stop and reverse , 2 lot al
Miktar = LotSize + Math.Abs(Pozisyon);
}
else if (SartSat && Pozisyon >= 0) // satış
{
Islem = "SATIS";
if (Pozisyon == 0) // pozisyonum yoksa 1 lot sat
Miktar = LotSize;
else if (Pozisyon > 0) // long isem stop and reverse , 2 lot sat
Miktar = LotSize + Math.Abs(Pozisyon);
}
// Emir Gönder !!!
if (Islem != "")
{
if (Islem == "ALIS")
Sistem.PozisyonKontrolGuncelle(Sistem.Name + " , " + Sembol, LotSize);
else if (Islem == "SATIS")
Sistem.PozisyonKontrolGuncelle(Sistem.Name + " , " + Sembol, -LotSize);
Sistem.EmirSembol = Sembol;
Sistem.EmirIslem = Islem;
Sistem.EmirMiktari = Miktar;
Sistem.EmirSuresi = "GUN"; // GUN, SNS, IKG
Sistem.EmirTipi = "KPY"; // KPY, KIE, GIE, SAR
Sistem.EmirFiyatTipi = "PYS"; // PYS, LMT, EIF, KAP
Sistem.EmirGonder();
}
Kırmızı yaptığım yerdeki -1 değeri -2 yapılırsa, KAPANMIŞ barda koşul varsa emir gönderimi olur.