
Originally Posted by
automatic
Hocam denedim bir yerde hata oldu vazgeçtim. O þekilde çözülür bencede henüz zaman ayýrmasam da ama bu þekilde ekstra yük biner sistemlere. Yýllardýr üzerinde durduðumuz sistemler çöp mü olacak eski sistemleri atýp yeni deðerlerle girsek bu da çok mantýklý ve rasyonel gözükmüyor. Kod yapýsýnda problem de yok sebebi bulup onu çözmek gerekiyor . Örnek bir sistem içerisinde kod paylaþýrsanýz daha güzel olabilir diye düþünüyorum.
Evet bu sekilde robotun donus suresi %30-50 uzuyor. Bar sayisi dusuk secildiginde hissedilir bir gecikme yaratmiyor. "float" sayi tipi kulanmayip diger sayi tiplerini denemek belki cozum olabilir. Daha once yazdigim gibi benim sadece 1 sistemim etkilendi. Belki de etkilenen sistemlerin onceki davranislari olmasi gerektigi gibi degildi. Puan bazli margin kullaniyorsaniz tekrar optimizasyon yapmak da bir cozum olabilir. Cok fazla sistem etkilenmemis gibi gorunuyor.
Twitterdaki ornegin "sistem" bolumu de eklenmis hali asagidadir. X, XX, Y, Z degerlerini girerseniz asagidaki kod bir al/sat sistemi olarak calisacaktir.
Kod:
var V = Sistem.GrafikVerileri ;
var C = Sistem.GrafikFiyatOku(V, "Kapanis");
var O = Sistem.GrafikFiyatOku(V, "Acilis");
var H = Sistem.GrafikFiyatOku(V, "Yuksek");
var L = Sistem.GrafikFiyatOku(V, "Dusuk");
var MA1 = Sistem.MA(C, "Exp", X);
var MA2 = Sistem.MA(C, "Exp", XX);
var TOMA = Sistem.TOMA(Z,Y);
var SonYon = "";
for (int i=1; i < V.Count ; i++) //VIOP verileri & indikatorleri sifiratma oncesi seviyeye ceker
{
C[i] = C[i]/10;
O[i] = O[i]/10;
H[i] = H[i]/10;
L[i] = L[i]/10;
MA1[i] = MA1[i]/10;
MA2[i] = MA2[i]/10;
TOMA[i] = TOMA[i]/10;
}
for (int i=3; i < V.Count ; i++)
{
if (MA1[i-1] < MA2[i-1] && MA1[i] >= MA2[i] && SonYon != "A") // AL
{
Sistem.Yon[i] = "A"; SonYon = Sistem.Yon[i];
}
else if (MA1[i-1] > MA2[i-1] && MA1[i] <= MA2[i] && SonYon != "S") // SAT
{
Sistem.Yon[i] = "S"; SonYon = Sistem.Yon[i];
}
else if ( (SonYon == "A" && C[i] < TOMA [i] && C[i-1]>TOMA[i-1] ) || (SonYon == "S" && C[i] > TOMA[i] && C[i-1]<TOMA[i-1]) ) // kar realizasyonu
{
Sistem.Yon[i] = "F"; SonYon = Sistem.Yon[i];
}
}
for (int i=1; i < V.Count ; i++) //VIOP verileri & indikatorleri sifiratma sonrasi seviyeye ceker
{
C[i] = C[i]*10;
O[i] = O[i]*10;
H[i] = H[i]*10;
L[i] = L[i]*10;
MA1[i] = MA1[i]*10;
MA2[i] = MA2[i]*10;
TOMA[i] = TOMA[i]*10;
}
Sistem.GetiriHesapla("01/01/2000", 0.00);
Sistem.Cizgiler[0].Deger = Sistem.GetiriKZ;
Yer Ýmleri