pozisyon binde 8 zarar ettiğinde FLAT duruma geçer ve 1200 bar dinlendirir.
Kod:var V = Sistem.GrafikVerileri; var C = Sistem.GrafikFiyatOku(V, "Kapanis"); // strateji var SonYon = ""; var Sinyal = ""; double SonFiyat = 0.0; var BarNo = 0; for (int i = 300; i < V.Count; i++) { Sinyal = ""; if (i < BarNo + 1200) { } else { if (SonYon == "A" && C[i] < SonFiyat * 0.992) Sinyal = "F"; else if (SonYon == "S" && C[i] > SonFiyat * 1.008) Sinyal = "F"; else { // ORIJINAL SISTEM KODU } } // Yön Kalıbı if (Sinyal == "A" && SonYon != "A") { Sistem.Yon[i] = "A"; SonYon = Sistem.Yon[i]; SonFiyat = V[i].Close; } if (Sinyal == "S" && SonYon != "S") { Sistem.Yon[i] = "S"; SonYon = Sistem.Yon[i]; SonFiyat = V[i].Close; } if (Sinyal == "F" && SonYon != "F") { Sistem.Yon[i] = "F"; SonYon = Sistem.Yon[i]; SonFiyat = V[i].Close; BarNo = i; } }
vahap beyaz, ahmet çakar ....
PHP Code:
var SistemAdi = "Sistemim";
var V = Sistem.GrafikVerileri;
var OrjinalSistem = Sistem.SistemGetir(SistemAdi, Sistem.Sembol, Sistem.Periyot);
var Getiriler = OrjinalSistem.GetiriKZ;
var Seviyeler=OrjinalSistem.Seviye;
var Yonler= OrjinalSistem.Yon;
var getirikzpoz=OrjinalSistem.GetiriKZPoz;
var maxdd_poz=Sistem.Liste(0);
var sev_max=Sistem.Liste(0);
for (int i = 1; i < V.Count; i++)
{
if (getirikzpoz[i] >sev_max[i-1]) sev_max[i]=getirikzpoz[i]; else sev_max[i]= sev_max[i-1];
maxdd_poz[i]=sev_max[i]-getirikzpoz[i];
}
var bs_dinlenecek=1;
var dinlen=false;
double sev_maxdd=5.0;
int barno=0;
string SonYon = ""; string YeniYon="";
for (int i = 1; i < V.Count; i++)
{
YeniYon=Yonler[i];
if (maxdd_poz[i]>=sev_maxdd) dinlen=true;
else if (i<(barno+bs_dinlenecek)) dinlen=true;
else dinlen=false;
if (SonYon != "A" && YeniYon=="A" && dinlen==false )
{
Sistem.Yon[i] = "A";
SonYon = Sistem.Yon[i];
if(Seviyeler[i]!=null) Sistem.Seviye[i] = Seviyeler[i];
}
else if (SonYon != "S" && YeniYon=="S" && dinlen==false )
{
Sistem.Yon[i] = "S";
SonYon = Sistem.Yon[i];
if(Seviyeler[i]!=null) Sistem.Seviye[i] = Seviyeler[i];
}
else if (SonYon != "F" && YeniYon=="F" && dinlen==false)
{
Sistem.Yon[i] = "F";
SonYon = Sistem.Yon[i];
if(Seviyeler[i]!=null) Sistem.Seviye[i] = Seviyeler[i];
}
else if (SonYon != "F" && dinlen==true)
{
Sistem.Yon[i] = "F";
SonYon = Sistem.Yon[i];
if(Seviyeler[i]!=null) Sistem.Seviye[i] = Seviyeler[i];
barno=i;
}
}
Sistem.Cizgiler[0].Deger = Getiriler;
Sistem.Cizgiler[1].Deger = getirikzpoz;
Sistem.Cizgiler[2].Deger = maxdd_poz;
Hızlıca yazdım. Hata varsa düzeltilir. Tiberius un yazdığı dinlendiriciye benzer bir dinlendirici. Pozizyonlardan doğan getiriler belli bir zarar seviyenin üstünde ise istediğiniz bar kadar flat kalıyor.
Bizim sistemlerde getiri eğrisi veya türevleriyle yapılan stratejiler işe yaramıyor. Bizim sistemler uzaydan geldi sanırım.
bu zararda belli süre bekleme yöntemi data ile destekleniyosa backtestte olumlu sonuç üretiyosa faydalı olabilir. onun dışında klasik borsacının hırs-korku uçlarında gezmesini sistematize etmekten başka bir işe yaramaz
cevaplanması gereken soru şu ; son trade performansının /son x trade performansının/son x bar sayısındaki performansın
bir sonraki trade karlılığıyla ilgisi varmı
bunun için bir korelasyon hesabı yapılmalı , excelde kolayca yapabilirsiniz
correl(a:a,b:b) a sutunundaki değerlerin b ile korelasyonunu verir
resmi yükleyebildiysem, aşağıda bir trend sisteminin 750 işleminde yapılan hesaplamayı görüyosunuz
a kolonunda son 3 trade toplamı , b kolonunda son trade c kolonunda trade sonuçları var
korelasyon gördüğünüz gibi son 3 trade için 0.03 son trade için 0.01 . bu sistemin sonuçları için her iki korelasyonda yok demek,
ciddiye alabilmek sistem durdurmak için 0.30 üstünde (yada -0.30) olması gerek
f,g,h kolonları ise , rakamlar negatifse -1 pozitifse 1 şekline döndürülmüş hali
burada da aynı şekilde korelasyon yok sonuçu çıkıyor.
tabi bu sitem için, bu dönem için . Belki gelecekte farklı olur , sizin sistemlerinizde farklı olur. Ancak bu standart bir trend sistemidir , genelleme yapmak yanlış olmaz.
corr.jpg
Yer İmleri