
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