a1[i-1] < x9[i] && a1[i] > x9[i] && a1y[i] == 1 ? 1 :
şunun anlamı
a1 bir önceki bar küçükse x9 dan ve a1 şimdiki bar büyükse x9 dan
sadece bu andaki sinyali çekiyor diğer sinyallerı umursamıyor :@
a1[i-1] < x9[i] && a1[i] > x9[i] && a1y[i] == 1 ? 1 :
şunun anlamı
a1 bir önceki bar küçükse x9 dan ve a1 şimdiki bar büyükse x9 dan
sadece bu andaki sinyali çekiyor diğer sinyallerı umursamıyor :@
Senin almaya cesaret edemediğin riskleri alanlar, senin yaşamak istediğin hayatı yaşarlar..
Sokrates twit @erhanacikgoz1
Erhan fikir vermesi açısından şu HHV örnegine bir bak istersen
AL şartı sende flata geç SAT şartı sende poza tekrar gir gibi
var Veriler =Sistem.GrafikVerileri;
var V = Sistem.GrafikVerileri ;
var C = Sistem.GrafikFiyatOku(V, "Kapanis" ) ;
var H = Sistem.GrafikFiyatOku(V, "Yuksek" ) ;
var L = Sistem.GrafikFiyatOku(V, "Dusuk" ) ;
var O = Sistem.GrafikFiyatOku(V, "Acilis" ) ;
var M = Sistem.GrafikFiyatOku(V, "OrtaNokta" ) ;
float SonPozisyon = 0;
float SonFiyat = 0;
float ToplamKarZarar = 0;
var IslemMiktari = Sistem.Liste(0);
var Pozisyon = Sistem.Liste(0);
var KarZarar = Sistem.Liste(0);
int periyot1=50;
int periyot2=200;
var HHV = Sistem.HHV(periyot1, "Yuksek");
var LLV = Sistem.LLV(periyot2, "Dusuk");
for (int i = 2; i < Sistem.BarSayisi; i++)
{
// AL
if ( C[i-2] < HHV[i-2] && C[i-1] > HHV[i-2] && SonPozisyon<= 0)
{
if (SonPozisyon == 0)
{
IslemMiktari[i] = 1;
SonFiyat = V[i].Close;
SonPozisyon = SonPozisyon + IslemMiktari[i];
ToplamKarZarar = ToplamKarZarar - SonFiyat * IslemMiktari[i];
Sistem.Yon[i] = "A";
}
else if (SonPozisyon < 0)
{
IslemMiktari[i] = 2;
SonFiyat = V[i].Close;
SonPozisyon = SonPozisyon + IslemMiktari[i];
ToplamKarZarar = ToplamKarZarar - SonFiyat * IslemMiktari[i];
Sistem.Yon[i] = "A";
}
}
// SAT
else if (C[i-2] > LLV[i-2] && C[i-1] < LLV[i-2] && SonPozisyon >= 0)
{
if (SonPozisyon == 0)
{
IslemMiktari[i] = -1;
SonFiyat = V[i].Close;
SonPozisyon = SonPozisyon + IslemMiktari[i];
ToplamKarZarar = ToplamKarZarar - SonFiyat * IslemMiktari[i];
Sistem.Yon[i] = "S";
}
else if (SonPozisyon > 0)
{
IslemMiktari[i] = -2;
SonFiyat = V[i].Close;
SonPozisyon = SonPozisyon + IslemMiktari[i];
ToplamKarZarar = ToplamKarZarar - SonFiyat * IslemMiktari[i];
Sistem.Yon[i] = "S";
}
}
Pozisyon[i] = SonPozisyon;
KarZarar[i] = ToplamKarZarar + V[i].Close * Pozisyon[i];
}
Sistem.Cizgiler[0].Deger = HHV;
Sistem.Cizgiler[0].Aciklama = "HHV";
Sistem.Cizgiler[1].Deger = LLV;
Sistem.Cizgiler[1].Aciklama = "LLV";
Sistem.Cizgiler[3].Deger = IslemMiktari;
Sistem.Cizgiler[4].Deger = Pozisyon;
Sistem.Cizgiler[5].Deger = KarZarar;
Mantıken:
a1y çalışma stili mavinin altında kaldıgı her an olarak yazsam.
a2y koşullarıyla flatı ayarlasam calısırmı acaba.
a1y sadece mavinin altında oldugu zaman calısacak nihayetinde.
flat koşulu mavi yi aşağı kırınca calısacak maviyi aşağı kırmış ve yeşili yukarı kırmışsa a2y nin görevi biticek
HHVde problem yok herşey tamam
sorun surada
x1[i] =
a1[i-1] > x10[i] && a1[i] < x10[i] && a1y[i] == 1 ? 1 :
a1[i-1] > x10[i] && a1[i] < x10[i] && a1y[i] == -1 ? -1 :
a1[i-1] > x10[i] && a1[i] < x10[i] && a1y[i] == 0 ? 0 :
a1[i] > x9[i] && a1[i] > x10[i] && a2y[i] == 1 ? 1 :
a1[i] > x9[i] && a1[i] > x10[i] && a2y[i] == -1 ? -1 :
a1[i] > x9[i] && a1[i] > x10[i] && a2y[i] == 0 ? 0 :
a1[i] > x10[i] && a2y[i] == 1 ? 1 :
a1[i] > x10[i] && a2y[i] == -1 ? -1 :
a1[i] > x10[i] && a2y[i] == 0 ? 0 :
x1[i-1] ;
Senin almaya cesaret edemediğin riskleri alanlar, senin yaşamak istediğin hayatı yaşarlar..
Sokrates twit @erhanacikgoz1
Senin almaya cesaret edemediğin riskleri alanlar, senin yaşamak istediğin hayatı yaşarlar..
Sokrates twit @erhanacikgoz1
Erhan hocam yoğun mesai yapmışsın kolay gelsin..
Sn. Erhan merhaba.
Yapmaya çalıştığınız şeyi anlamak pek kolay değil ancak "Equity Curve Trading" (örnek makale) denen yaklaşımı uygulamaya çalıştığınızı düşünerek bir sistem yazdım:
Yukarıdaki kodda buy ve sell diye belirttiğim alanda birkaç kombinasyon denedim. Verilen sistemin getiri eğrisinin ortalaması yaklaşımını da test ettim ancak hiçbiri algoritmanın kendi getirisine yaklaşamadı.Kod:var P = Sistem.GrafikVerileri; var C = Sistem.GrafikFiyatOku(P, "Kapanis"); var sys = Sistem.SistemGetir("DEMA5_MAV5", "VIP'VIP-X030", Sistem.Periyot); if (sys == null) throw new ArgumentNullException("DEMA5_MAV5"); sys.GetiriHesapla("01/01/2000", 0.0f); var sysCurve = sys.GetiriKZ; var sysCurveHH = Sistem.HHV(50, sysCurve); var sysCurveLL = Sistem.ListeFark(sysCurveHH, Sistem.Liste(3f)); var sysCurveAvgFast = Sistem.MA(sysCurve, "Simple", 3); var sysCurveAvgSlow = Sistem.MA(sysCurve, "Simple", 100); var sysCurveDiff = Sistem.ListeFark(sysCurveAvgFast, sysCurveAvgSlow); var sysPos = "F"; var take = 3.0f; var stop = 3.0f; var pos = "F"; var posPx = 0f; for (var i = 1; i < P.Count; i++) { var close = C[i]; if (sys.Yon[i] != "") sysPos = sys.Yon[i]; //var buy = sysCurveDiff[i] > 0 && sysPos == "A"; //var sell = sysCurveDiff[i] > 0 && sysPos == "S"; var buy = sysCurve[i] >= sysCurveLL[i] && sys.Yon[i] == "A"; var sell = sysCurve[i] >= sysCurveLL[i] && sys.Yon[i] == "S"; //var buy = sysCurve[i] >= sysCurveHH[i] && sysPos == "A"; //var sell = sysCurve[i] >= sysCurveHH[i] && sysPos == "S"; var posProfit = pos == "A" ? close - posPx : pos == "S" ? posPx - close : 0f; var hasTakeProfit = posProfit >= take; var hasStopLoss = posProfit <= -stop; var flat = hasTakeProfit || hasStopLoss || sysCurve[i] <= sysCurveLL[i]; if ((pos == "A" || pos == "S") && flat) { Sistem.Yon[i] = pos = "F"; posPx = 0f; } else if (pos != "A" && buy) { Sistem.Yon[i] = pos = "A"; posPx = close; } else if (pos != "S" && sell) { Sistem.Yon[i] = pos = "S"; posPx = close; } } Sistem.GetiriHesapla("01/01/2000", 0.0f); Sistem.Cizgiler[0].Deger = sysCurveHH; Sistem.Cizgiler[1].Deger = sysCurve; Sistem.Cizgiler[2].Deger = sysCurveLL; Sistem.Cizgiler[3].Deger = Sistem.GetiriKZ; Sistem.Cizgiler[4].Deger = Sistem.GetiriKZAy;
take, stop, HHV içinde kullandığım 50 barlık değer vs gibi parametrelerle oynayıp test edebilirsiniz. Örnek olarak kullandığım sistem "DEMA5_MAV5" zaten iDeal'in içinde olan bir sistem, dolayısıya kodun direk çalışmasını bekliyorum.
Umarım istediğiniz yaklaşıma örnek olmuştur.
Senin almaya cesaret edemediğin riskleri alanlar, senin yaşamak istediğin hayatı yaşarlar..
Sokrates twit @erhanacikgoz1
Yer İmleri