
Originally Posted by
atakanözbaki
Optimizasyon formülü yazmaya çalışıyorum. Bir çok farklı kombinasyon denedim. Fakat hesaplatmayı yapan bir formül yazamadım. Üsteki formülde derleme kısmında hata vermiyor. Fakat optimizasyon kısmında hesaplama yapmıyor. Hatanın nerede oldugu bir türlü bulamadım. EMA ile TOMA yazan optimize edilmeyen kısım fakat optimize edilecek bunun kısım bunu kesişim şartına bağlı .
Bear abi formül örnegi için teşekür ederim. Yeni başlayan biri için epey üst düzey bir örnek olmuş. Fakat optimizasyon kısmını anlaya bildim. Benzer şekilde üsteki formülü yazdım olmadı.
Kurgu Toma 30,5 ve Ema 5 altında şu parametrelerle üstünde farklı parametrelerle çalışsın. Buna Segmentasyon diyorlar sanırım.
Erhan hocanın ödevlerindeki mantık ile yapıldı.
Öncelikle bu gönderiyi okuyalım. Repaint yapabilir. https://www.hisse.net/topluluk/showt...91#post3622591
Sistem Kodu:
Kod:
var V = Sistem.GrafikFiyatSec("Kapanis");
var P = Sistem.Parametreler[0]; // P = 30
var Y = Sistem.Parametreler[1]; // Y = 5
var TOMA = Sistem.TOMA(P, Y);
var EMA = Sistem.MA(V, "Exp", P);
var EMA1 = Sistem.MA(V, "Exp",4);
var EMA2 = Sistem.MA(V, "Exp",5);
var TOMA1 = Sistem.TOMA(9, 0.4);
var TOMA2 = Sistem.TOMA(3, 0.3);
//Degiskenler
var Eb1 = Sistem.Liste(0);
var T1A = Sistem.Liste(0);
var T2A = Sistem.Liste(0);
var X1 = Sistem.Liste(0);
var SonYon = "";
for (int i = 2; i < V.Count; i++) // Her barı tek tek tararken
{
// Hesaplamalar
Eb1[i] =
EMA[i] > TOMA[i] ? 1 : EMA[i] < TOMA[i] ? 2 :
Eb1[i] ;
T1A[i] =
EMA1[i] > TOMA1[i] ? 3 : EMA1[i] < TOMA1[i] ? 5 :
T1A[i] ;
T2A[i] =
EMA2[i] > TOMA2[i] ? 7 : EMA2[i] < TOMA2[i] ? 11 :
T2A[i] ;
X1[i] = Eb1[i] == 1 ? (Eb1[i] * T1A[i]): Eb1[i] == 2 ? (Eb1[i] * T2A[i]):
X1[i];
//Sistem
if ( (X1[i] == 3 || X1[i] == 14) && SonYon != "A")
{
Sistem.Yon[i] = "A";
SonYon = Sistem.Yon[i];
}
if ( (X1[i] == 5 || X1[i] == 22) && SonYon != "S")
{
Sistem.Yon[i] = "S";
SonYon = Sistem.Yon[i];
}
}
Sistem.GetiriHesapla("31/12/2004", 0.025 ); // Şu tarihten başlayarak kz hesapla ve her işlemin kaymasına bu puanı düş.
var KarZarar = Sistem.GetiriKZ;// ortaya çıkacak kz eğrisine KarZarar isimli değişkene ata
Sistem.Cizgiler[0].Deger = Eb1; //Panel2
Sistem.Cizgiler[1].Deger = T1A; //Panel2
Sistem.Cizgiler[2].Deger = T2A; //Panel2
Sistem.Cizgiler[3].Deger = TOMA; //Panel1
Sistem.Cizgiler[4].Deger = EMA; //Panel1
Sistem.Cizgiler[5].Deger = X1; //Panel2
Sistem.Cizgiler[6].Deger = KarZarar; //Panel3
OPT Kodu:
Kod:
var V = Sistem.GrafikFiyatSec("Kapanis");
var TOMA = Sistem.TOMA(30, 5);
var EMA = Sistem.MA(V, "Exp", 30);
//Degiskenler
var Eb1 = Sistem.Liste(0); // x1 isminde boş bir liste oluştur.
var T1A = Sistem.Liste(0);
// var T2B = Sistem.Liste(0);
var T2A = Sistem.Liste(0);
// var T2B = Sistem.Liste(0);
var X1 = Sistem.Liste(0);
var SonYon = "";
//Optimizasyon-----------------------------------------------------------------------------------------
for(int P1 = 4 ; P1 <10; P1++) {
var EMA1 = Sistem.MA(V, "Exp",P1);
for (int P2 = 2 ; P2 <10 ; P2++) {
var EMA2 = Sistem.MA(V, "Exp",P2);
for (double P4 = 2; P4< 10; P4+=1) {
for (double P5 = 0.1; P5< 0.7; P5+=0.1) {
var TOMA1 = Sistem.TOMA(P4, P5);
for (double P6 = 2;P6< 10; P6+=1) {
for (double P7 = 0.1; P7< 0.5; P7+=0.1) {
var TOMA2 = Sistem.TOMA(P6, P7);
// önceki taramadaki pozisyonları temizle
for (int i = 1; i<V.Count; i++)
Sistem.Yon[i] = "";
// strateji
for (int i = 1; i < V.Count; i++) // Her barı tek tek tararken
{
// Hesaplamalar
Eb1[i] =
EMA[i] > TOMA[i] ? 1 : EMA[i] < TOMA[i] ? 2 :
Eb1[i] ;
T1A[i] =
EMA1[i] > TOMA1[i] ? 3 : EMA1[i] < TOMA1[i] ? 5 :
T1A[i] ;
T2A[i] =
EMA2[i] > TOMA2[i] ? 7 : EMA2[i] < TOMA2[i] ? 11 :
T2A[i] ;
X1[i] = Eb1[i] == 1 ? (Eb1[i] * T1A[i]): Eb1[i] == 2 ? (Eb1[i] * T2A[i]):
X1[i];
//Sistem
if ( (X1[i] == 3 || X1[i] == 14) && SonYon != "A")
{
Sistem.Yon[i] = "A";
SonYon = Sistem.Yon[i];
}
if ( (X1[i] == 5 || X1[i] == 22) && SonYon != "S")
{
Sistem.Yon[i] = "S";
SonYon = Sistem.Yon[i];
}
}
Sistem.Optimizasyon("E1 E2 T1 T1Y T2 T2Y", P1,P2,P4,P5,P6,P7);
}
}
}
}
}
}
Yer İmleri