Hocalarım selamlar;
Aşağıda yer alan paçal sistemde %2 KARAL ve MA yukarı kestiğinde gelen çoklu sinyali azaltmayı ve pozisyona girdikten sonra fiyat %1 aşağı düşünce ilave alış yapmasını nasıl sağlayabilirim.Teşekkürler.
var Bars = Sistem.GrafikVerileri;
var C = Sistem.GrafikFiyatSec("Kapanis");
var MA = Sistem.MA(C,"Variable",90);
var Cum = 0.0;
var Maliyet = 0.0;
var Miktar =0;
var TP = 1.05F; //YÜZDE 5 KAR AL
var SonYon = "";
var Pozisyon = Sistem.SayiListesi;
var OrtalamaMaliyet = Sistem.Liste(0);
var ToplamMaliyet = Sistem.Liste(0);
var MiktarList = Sistem.Liste(0);
for (int i = 1; i<Sistem.BarSayisi; i++)
{
Pozisyon[i] = Sistem.SayiListesi[i-1]; // robot kodunda bu listeyi okumal için sayı listesi olarak tanımlamak gerek
if (C[i-1] >= MA[i-1] && C[i]>=MA[i] && SonYon !="A") //AL KOŞULUMUZ
{
SonYon = "A";
Sistem.Yon[i] = "A";
Miktar = 1;
MiktarList[i] = Miktar;
Cum = Cum + Miktar * C[i];
ToplamMaliyet[i] = (float)Cum;
Pozisyon[i] += Miktar;
Maliyet = (float) Cum / Pozisyon[i];
OrtalamaMaliyet[i] = (float)Maliyet ;
}
else if (C[i-1] <= MA[i-1] && C[i]>=MA[i-1] && SonYon !="F") //AL KOŞULUMUZ
{
SonYon = "A";
Sistem.Yon[i] = "A";
Miktar = 1;
MiktarList[i] = Miktar;
Cum = Cum + Miktar * C[i];
ToplamMaliyet[i] = (float)Cum;
Pozisyon[i] += Miktar;
Maliyet = (float) Cum / Pozisyon[i];
OrtalamaMaliyet[i] = (float)Maliyet ;
}
else if (C[i] >= Maliyet * TP && SonYon != "F")
{
SonYon = "F";
Sistem.Yon[i] = "F";
MiktarList[i] = 0;
Miktar = 0;
Cum = 0.0;
Maliyet = 0.0;
Pozisyon[i] = 0;
OrtalamaMaliyet[i] = 0;
ToplamMaliyet[i] = 0;
}
else
OrtalamaMaliyet[i] = OrtalamaMaliyet[i-1];
}
Sistem.Cizgiler[0].Deger = Pozisyon;
Sistem.Cizgiler[0].Aciklama = "Pozisyon";
Sistem.Cizgiler[1].Deger = OrtalamaMaliyet;
Sistem.Cizgiler[1].Aciklama = "Ortalama Maliyet";
Sistem.Cizgiler[2].Deger = MiktarList;
Sistem.Cizgiler[2].Aciklama = "Miktar";
Sistem.Cizgiler[3].Deger = ToplamMaliyet;
Sistem.Cizgiler[3].Aciklama = "Cum";
Sistem.Cizgiler[5].Deger = MA;
Yer İmleri