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