View Full Version : Ideal Formül Yazımında Karşılaşılan Hatalar ve Çözümleri
thebaboli
21-01-2016, 15:24
Bu başlıkta formülleri oluştururken aldığımız hataları ve bu hataları nasıl çözdüğümüzü paylaşarak diğer kullanıcıların olası bu hatalar karşısında neler yapması gerektiğini yazalım. Genel konular için Ideal (http://www.hisse.net/forum/showthread.php?t=112740) konusunu kullanalım.
volkan...
21-01-2016, 16:50
Merhaba kullandığım stratejiyi optimize etmek için aşağıdaki kodu yazmaya çalıştım ama "error CS0019: '&&' işleci 'bool' ve 'string' türündeki işlenenlere uygulanamaz" hatasını veriyor. Stratejiyi optimize etmek için kod nasıl olmalı
var V = Sistem.GrafikVerileri;
var C = Sistem.GrafikFiyatOku(V, "Kapanis") ;
var TOMA1 = Sistem.TOMA(3, 2);
var TOMA2 = Sistem.TOMA(2, 1);
var MA1 = Sistem.MA(10, "Simple", "Kapanis");
var MA2 = Sistem.MA(50, "Simple", "Kapanis");
var MA3 = Sistem.MA(10, "Exp", "Kapanis");
var MA4 = Sistem.MA(50, "Exp", "Kapanis");
var PAR1 = Sistem.Parabolic(0.02, 0.2);
var PAR2 = Sistem.Parabolic(0.01, 0.1);
var Metodlar = new List<string>();
Metodlar.Add("TOMA11");
Metodlar.Add("TOMA22");
Metodlar.Add("MA12");
Metodlar.Add("MA34");
Metodlar.Add("PAR11");
Metodlar.Add("PAR22");
for (int P = 0 ; P < Metodlar.Count; P+=1)
{
//strateji
for (int i = 1; i < C.Count; i++)
Sistem.Yon[i] = "";
var SonYon = "";
for (int i = 1; i<C.Count; i++)
{
var TOMA11 = C[i] > TOMA1[i];
var TOMA22 = C[i] > TOMA2[i];
var MA12 = MA1 [i] > MA2[i];
var MA34 = MA3[i] > MA4[i];
var PAR11 = C[i] > PAR1[i];
var PAR22 = C[i] > PAR2[i];
if ( SonYon != "A" && Metodlar[P] ) // AL
{
Sistem.Yon[i] = "A"; // alış
SonYon = Sistem.Yon[i];
}
else if ( SonYon != "S" && C[i] < TOMA1[i] ) // SAT
{
Sistem.Yon[i] = "S"; // alış
SonYon = Sistem.Yon[i];
}
}
Sistem.Optimizasyon("Metodlar", Metodlar[P]);
}
belki cevap gelir :yes:
Sayın thebaboli,
ilgine çok teşekkür ederim. Hemen aksiyon aldınız.
http://i.hizliresim.com/vnaOWp.png (http://hizliresim.com/vnaOWp)
benimde sorum şu olacaktı.
d7 değerini hesaplatıyorum ve bu değer 200'den yukarı çıkmıyor. ama d7 float değerini int'e çevirmem gerekli ki işlemi yaptırabileyim.
Nasıl bir yol izlemem gerekli?
şimdiden teşekkürler.
erhanacikgoz1
21-01-2016, 18:48
Sayın thebaboli,
ilgine çok teşekkür ederim. Hemen aksiyon aldınız.
http://i.hizliresim.com/vnaOWp.png (http://hizliresim.com/vnaOWp)
benimde sorum şu olacaktı.
d7 değerini hesaplatıyorum ve bu değer 200'den yukarı çıkmıyor. ama d7 float değerini int'e çevirmem gerekli ki işlemi yaptırabileyim.
Nasıl bir yol izlemem gerekli?
şimdiden teşekkürler.
i-d7 ne anlamda orada anlamadım
i-d7 ne anlamda orada anlamadım
Selam Erhan Bey,
yapmak istediğim şu aslında,
2 tane Ma değerim var.
Bunlardan biri son bardaki MA değeri diğeri
Diğeri d7 hesap sonucunda çıkan (200 tam sayısını geçmiyor) değişken değer kadar önceki MA değeri.
d7 değişkenini tam sayı yaparsam geriye dönük MA değerini hesaplatabilirim diye düşündüm.
Kafam ancak buna yetti.
yanlış düşünmüş olabilirim :he:
Saygılarımla,
erhanacikgoz1
21-01-2016, 19:22
Selam Erhan Bey,
yapmak istediğim şu aslında,
2 tane Ma değerim var.
Bunlardan biri son bardaki MA değeri diğeri
Diğeri d7 hesap sonucunda çıkan (200 tam sayısını geçmiyor) değişken değer kadar önceki MA değeri.
d7 değişkenini tam sayı yaparsam geriye dönük MA değerini hesaplatabilirim diye düşündüm.
Kafam ancak buna yetti.
yanlış düşünmüş olabilirim :he:
Saygılarımla,
olur olmaz bilmiyorum denersin
for (int i = 1; i < Sistem.BarSayisi; i++)
tamd7[i]=Sistem.SayiYuvarla(d7[i],0.025);
ondalık kısmı tamamen atar.
for (int i = 1; i < Sistem.BarSayisi; i++)
tamd7[i] = Math.Truncate(d7[i]);
Round fonksiyonu işini görebilir.
ondalık basamak sayısını kendin girersin.
örnekte noktadan sonra 2 basamak bırakır.
for (int i = 1; i < Sistem.BarSayisi; i++)
tamd7[i] = Math.Round(d7[i], 2);
KAYNAK:http://www.hisse.net/forum/showthread.php?t=116174&page=12&p=12352041#post12352041
olur olmaz bilmiyorum denersin
for (int i = 1; i < Sistem.BarSayisi; i++)
tamd7[i]=Sistem.SayiYuvarla(d7[i],0.025);
ondalık kısmı tamamen atar.
for (int i = 1; i < Sistem.BarSayisi; i++)
tamd7[i] = Math.Truncate(d7[i]);
Round fonksiyonu işini görebilir.
ondalık basamak sayısını kendin girersin.
örnekte noktadan sonra 2 basamak bırakır.
for (int i = 1; i < Sistem.BarSayisi; i++)
tamd7[i] = Math.Round(d7[i], 2);
KAYNAK:http://www.hisse.net/forum/showthread.php?t=116174&page=12&p=12352041#post12352041
ilgine teşekkürler, biraz kurcalayayım.
Tiberius
21-01-2016, 19:48
i-d7 ne anlamda orada anlamadım
liste sayı olarak kullanılmış.
aşağıdaki gibi bir yazım çözüm olabilir.
for ...
{
int per = (int)d7[i];
a1[i] = VeriMA2[i] -VeriMA1[i - per];
}
Sezai KILIÇ
21-01-2016, 22:45
belki cevap gelir :yes:
Kodunuzun tamamında başka hata var mı bilemiyorum.
Ama verdiği hata mesajı şu satırla alakalı
if ( SonYon != "A" && Metodlar[P] ) // AL
&& ile bağladığınız ikinci ifade eksik.
mesela şöyle olmalı:
if ( SonYon != "A" && Metodlar[P] == x ) // A
volkan...
21-01-2016, 23:50
Kodunuzun tamamında başka hata var mı bilemiyorum.
Ama verdiği hata mesajı şu satırla alakalı
if ( SonYon != "A" && Metodlar[P] ) // AL
&& ile bağladığınız ikinci ifade eksik.
mesela şöyle olmalı:
if ( SonYon != "A" && Metodlar[P] == x ) // A
x yerine ne koymam gerekir anlamadım
optimizasyon için yazmaya çalıştığım kodu aşağıdaki gibi değiştirince normal al sat şeklinde çalışıyor
var V = Sistem.GrafikVerileri;
var C = Sistem.GrafikFiyatOku(V, "Kapanis") ;
var H = Sistem.GrafikFiyatOku(V, "Yuksek") ;
var L = Sistem.GrafikFiyatOku(V, "Dusuk") ;
var TOMA1 = Sistem.TOMA(3, 2);
var TOMA2 = Sistem.TOMA(2, 1);
var MA1 = Sistem.MA(10, "Simple", "Kapanis");
var MA2 = Sistem.MA(50, "Simple", "Kapanis");
var MA3 = Sistem.MA(10, "Exp", "Kapanis");
var MA4 = Sistem.MA(50, "Exp", "Kapanis");
var PAR1 = Sistem.Parabolic(0.02, 0.2);
var PAR2 = Sistem.Parabolic(0.01, 0.1);
//strateji
for (int i = 1; i < C.Count; i++)
Sistem.Yon[i] = "";
var SonYon = "";
for (int i = 1; i<C.Count; i++)
{
var TOMA11 = C[i] > TOMA1[i];
var TOMA22 = C[i] > TOMA2[i];
var MA12 = MA1 [i] > MA2[i];
var MA34 = MA3[i] > MA4[i];
var PAR11 = C[i] > PAR1[i];
var PAR22 = C[i] > PAR2[i];
if ( SonYon != "A" && TOMA11 ) // AL
{
Sistem.Yon[i] = "A"; // alış
SonYon = Sistem.Yon[i];
}
else if ( SonYon != "S" && C[i] < TOMA1[i] ) // SAT
{
Sistem.Yon[i] = "S"; // alış
SonYon = Sistem.Yon[i];
}
}
optimizasyon kodunu yazmaya çalışırken düşüncem "var Metodlar = new List<string>();" ile liste oluşturup optimizasyon ile sırayla bu listedeki yazanların stratejideki "Metodlar[P]" kısmına denenmesini sağlamaktı
Sezai KILIÇ
22-01-2016, 00:19
x yerine ne koymam gerekir anlamadım
optimizasyon için yazmaya çalıştığım kodu aşağıdaki gibi değiştirince normal al sat şeklinde çalışıyor
var V = Sistem.GrafikVerileri;
var C = Sistem.GrafikFiyatOku(V, "Kapanis") ;
var H = Sistem.GrafikFiyatOku(V, "Yuksek") ;
var L = Sistem.GrafikFiyatOku(V, "Dusuk") ;
var TOMA1 = Sistem.TOMA(3, 2);
var TOMA2 = Sistem.TOMA(2, 1);
var MA1 = Sistem.MA(10, "Simple", "Kapanis");
var MA2 = Sistem.MA(50, "Simple", "Kapanis");
var MA3 = Sistem.MA(10, "Exp", "Kapanis");
var MA4 = Sistem.MA(50, "Exp", "Kapanis");
var PAR1 = Sistem.Parabolic(0.02, 0.2);
var PAR2 = Sistem.Parabolic(0.01, 0.1);
//strateji
for (int i = 1; i < C.Count; i++)
Sistem.Yon[i] = "";
var SonYon = "";
for (int i = 1; i<C.Count; i++)
{
var TOMA11 = C[i] > TOMA1[i];
var TOMA22 = C[i] > TOMA2[i];
var MA12 = MA1 [i] > MA2[i];
var MA34 = MA3[i] > MA4[i];
var PAR11 = C[i] > PAR1[i];
var PAR22 = C[i] > PAR2[i];
if ( SonYon != "A" && TOMA11 ) // AL
{
Sistem.Yon[i] = "A"; // alış
SonYon = Sistem.Yon[i];
}
else if ( SonYon != "S" && C[i] < TOMA1[i] ) // SAT
{
Sistem.Yon[i] = "S"; // alış
SonYon = Sistem.Yon[i];
}
}
optimizasyon kodunu yazmaya çalışırken düşüncem "var Metodlar = new List<string>();" ile liste oluşturup optimizasyon ile sırayla bu listedeki yazanların stratejideki "Metodlar[P]" kısmına denenmesini sağlamaktı
Volkan Bey merhaba
Formülde 2 Toma, 2 MA ve 2 Parabolic var ama strateji sadece fiyatla bir TOMA arasında kurulmuş.
Siz stratejininin tam olarak uygulandığı çalışan sistem kodunu yazın, optimizasyon kodu için gerekli eklemeler konusunda yardımcı oluruz.
volkan...
22-01-2016, 00:29
Volkan Bey merhaba
Formülde 2 Toma, 2 MA ve 2 Parabolic var ama strateji sadece fiyatla bir TOMA arasında kurulmuş.
Siz stratejininin tam olarak uygulandığı çalışan sistem kodunu yazın, optimizasyon kodu için gerekli eklemeler konusunda yardımcı oluruz.
zaten stratejiyi optimize etmek istiyorum
amacım strateji olarak alım için
TOMA1 in kapanıştan küçük olmasını mı
TOMA2 nin kapanıştan küçük olmasını mı
PAR1 in kapanıştan küçük olmasını mı
PAR2 nin kapanıştan küçük olmasını mı
MA1 in MA2 den büyük olmasını mı
yoksa MA3 ün MA4 den büyük olmasını mı kullanmalıyım
hangisi daha yüksek getiri sağlıyor bunu bulmak için optimize etmek istiyorum
erhanacikgoz1
22-01-2016, 01:10
zaten stratejiyi optimize etmek istiyorum
amacım strateji olarak alım için
TOMA1 in kapanıştan küçük olmasını mı
TOMA2 nin kapanıştan küçük olmasını mı
PAR1 in kapanıştan küçük olmasını mı
PAR2 nin kapanıştan küçük olmasını mı
MA1 in MA2 den büyük olmasını mı
yoksa MA3 ün MA4 den büyük olmasını mı kullanmalıyım
hangisi daha yüksek getiri sağlıyor bunu bulmak için optimize etmek istiyorum
her birini birden fazla pencerede tek tek optımıze edebilirsin.
volkan...
22-01-2016, 01:15
her birini birden fazla pencerede tek tek optımıze edebilirsin.
TOMA PAR ya da MA nın parametrelerini optimize etmek istemiyorum ( böyle düşündüğünüzü anladım )
TOMA mı kullanayım PAR mı MA mı hangisi yüksek getiri sağlayacak bunu optimize etmek istiyorum
Sezai KILIÇ
22-01-2016, 01:19
TOMA PAR ya da MA nın parametrelerini optimize etmek istemiyorum ( böyle düşündüğünüzü anladım )
TOMA mı kullanayım PAR mı MA mı hangisi yüksek getiri sağlayacak bunu optimize etmek istiyorum
Bunlar için var olan (opt kodunda da yazılmış olmak durumunda olan) sistemleri/stratejileri Sistem Kıyasla penceresinde görmek istediğinizi sunuyor zaten?
http://i.hizliresim.com/yLjEOL.png (http://hizliresim.com/yLjEOL)
erhanacikgoz1
22-01-2016, 01:22
TOMA PAR ya da MA nın parametrelerini optimize etmek istemiyorum ( böyle düşündüğünüzü anladım )
TOMA mı kullanayım PAR mı MA mı hangisi yüksek getiri sağlayacak bunu optimize etmek istiyorum
soyledıgın hıcbırsey anlamadım desem volkancım :D
tomanın hangi parametresi ma nın hangi parametresi parın hangi parametresi ile kıyaslama yapacaksın ki ?
ornegın TOMA 1,1
MA 1 5
PAR 001,001 bunları belırledın.
SOnra dedın kı hangisi yüksek getiri cıkartacak test et dedin.
Bunun optımızasyonla alakası ne grafiğe koydugunda zaten hangisinin yüksek getiri cıkarttıgını göreceksin.
bir kere bu 3 indikatorunde tek basına hangi parametresinin yüksek kar ettiğini optimize ettirmen lazım.
onda sonra 3 indikator içinde en yüksek cıkanlardan hangisi daha da yüksek kar ettirmiş ona bakarsın zaten.
liste sayı olarak kullanılmış.
aşağıdaki gibi bir yazım çözüm olabilir.
for ...
{
int per = (int)d7[i];
a1[i] = VeriMA2[i] -VeriMA1[i - per];
}
Tiberius Usta,
İstediğim gibi oldu, teşekkür ederim. (çevirmelerden birini daha öğrendim :)
Saygılarımla,
volkan...
22-01-2016, 16:52
Bunlar için var olan (opt kodunda da yazılmış olmak durumunda olan) sistemleri/stratejileri Sistem Kıyasla penceresinde görmek istediğinizi sunuyor zaten?
http://i.hizliresim.com/yLjEOL.png (http://hizliresim.com/yLjEOL)
SOnra dedın kı hangisi yüksek getiri cıkartacak test et dedin.
Bunun optımızasyonla alakası ne grafiğe koydugunda zaten hangisinin yüksek getiri cıkarttıgını göreceksin.
bir kere bu 3 indikatorunde tek basına hangi parametresinin yüksek kar ettiğini optimize ettirmen lazım.
onda sonra 3 indikator içinde en yüksek cıkanlardan hangisi daha da yüksek kar ettirmiş ona bakarsın zaten.
Öncelikle geç yazabildim sebebini yazayım arkadaşın biri benim hesabıma girmeye çalışmış hem dün gece hem de bu mesajı yazarken giriş yapmaya çalıştığımda 15 dakika beklemem gerektiği mesajı ile karşılaştım
burada 6 tane ihtimal yazınca elle deneyebilirsiniz
ben ne yapmak istediğimi anlatırken fazla yazmamak için
kısa yoldan anlatabilmek için böyle 6 tane yazdım
aşağıdaki gibi al ve sat şartı için daha önceden periyodunu ve
şartlarını belirlediğim (örnekte RSI 50 den küçükse AL işlemlerini görmeyecek)
2 şer tane toplamda 4 tane filtre kullanılacak al şartı için kullanılacak filtreler
örnek veriyorum 20 tane filtrenin içinden seçilecek al için 20*20 den 400 farklı ihtimal var
sat içinde ayrı bi 20 lik listeden seçilecek oradan da 400 faklı ihtimal var
hangi filtrenin daha az işlem sayısı ve maxdd
vereceğini görmek için optimize etmek istiyorum
böyle bi senaryoda elle teker teker işlem yapmak zor olacak çünkü
kabaca yanlış hesaplamadıysam 400*400 den 160 bin ihtimal var
//strateji
for (int i = 1; i < C.Count; i++)
Sistem.Yon[i] = "";
var SonYon = "";
for (int i = 1; i<C.Count; i++)
{
var FILTREa = RSI[i] > 50 ;
var FILTREb = RSI[i] < 50;
var FILTREc = ......... ;
var FILTREd = ......... ;
..........
..........
..........
böyle 20 tane filtre denemek istiyorum
if ( SonYon != "A" && (Sistemin al şartı burası daha önceden sisteme yazılmış olacak )&& FİLTRE1 && FİLTRE2) // AL
{
Sistem.Yon[i] = "A"; // alış
SonYon = Sistem.Yon[i];
}
else if ( SonYon != "S" && (Sistemin sat şartı burası daha önceden sisteme yazılmış olacak ) && FİLTRE3 && FİLTRE4) // SAT
{
Sistem.Yon[i] = "S"; // alış
SonYon = Sistem.Yon[i];
}
}
erhanacikgoz1
25-01-2016, 22:12
volkan ben pes ettim dediğini nasıl yapılır bılmıyom..
volkan...
25-01-2016, 22:21
volkan ben pes ettim dediğini nasıl yapılır bılmıyom..
eyvallah abi yapmaya çalıştığım mantıklı ama değil mi
erhanacikgoz1
25-01-2016, 22:46
eyvallah abi yapmaya çalıştığım mantıklı ama değil mi
aslında tek tek yine yazılır da
sen hepsını bırarada degıstırerek gıtsın ıstıyorsun.
Mantıklı canım sıkıntı yok!!!
erhanacikgoz1
09-02-2016, 21:52
yenilere lazım!!!!
Arkadaşlar slm, strateji kısmındaki koyu renkli kısımları [i-1] veya [i-2] yaptığımızda ne anlama geliyor?
Örn; [i-1] yapınca repaint yapma ihtimali artar mı, azalır mı?
// strateji
var SonYon = "";
for (int i = 1; i < V.Count; i++)
{
if ( MA1[i] > MA2[i] && SonYon != "A" ) //
{
Şunun Türkçesi tam olarak nedir acaba?
for (int i = 1; i<Sistem.BarSayisi; i++)
{
if (MA1[i-1] < MA2[i-1] && MA1[i] >= MA2[i] && SonYon != "A") // AL
{
Sistem.Yon[i] = "A"; // alış
SonYon = Sistem.Yon[i];
Fiyat = C[i];
}
else if (MA1[i-1] > MA2[i-1] && MA1[i] <= MA2[i] && SonYon != "S") // SAT
{
i-1 bir önceki bar,
i-2 iki önceki bar,
i ise anlik bar demek oluyor.
Repainti "i" kullanırsanız yapar. Çünkü borsa açıkken her değişen fiyatın kapanışı olduğu için for döngüsündeki i'ye sürekli değişen kapanış yazılır. Bu nedenle repaint yapar. Fakat i-1 ve ya i-2 derseniz kapanmış bar üzerinden işlem yapacağı için repaint yapmayacaktır.
Yani MA1[i] > MA2[i] satırında anlık olarak değişen fiyatları kullanan hareketli ortalama hesapladığı için repaint yapacaktır.
Alttaki koda gelince :
Eğer MA1'in bir önceki değeri MA2'nin bir önceki değerinden küçük ama anlik olarak MA1'in değeri MA2'nin üzerine çıkmışsa ve SonYon değişkeni "A" değil ise
{
Sistemin yönünü "A" yap.
SonYon değişkeni de Sistemin Yönüne eşit olsun (Yani "A")
Fiyat değişkeni de alım yapıldığı andaki kapanışa eşit olsun.
}
Jarmenkell
10-02-2016, 20:46
http://i.hizliresim.com/jVZv3g.jpg (http://hizliresim.com/jVZv3g)
http://i.hizliresim.com/28AYj0.jpg (http://hizliresim.com/28AYj0)
Arkadaşlar bu nedir? Robotun pozisyon kontrol sekmesinden pozisyon ekleye girip, elimde olan lot sayısını yazıyorum düzeltiyor sonra sanal veya gerçek moda alınca sapıtıyor, arka arkaya seri işlemler açıyor ilkinde gerçeğe almıştım, Allahtan piyasa kapalıydı şimdi göstermek için sanal modda yaptım, daha başlar başlamaz yüzlerce işlem açıyor
Pozisyonu nasıl düzeltcem?
Jarmenkell
10-02-2016, 21:23
Tamam buldum, yazdıgım koddan alakalıymış, teşekkürler
Arkadaşlar şu formülü sistem tanımlarında indikatör olarak nasıl Yazarım Yardımcı olur musunuz?
IF((ADX(14) > 20 AND ( Mov(C,15,S) > Mov(C,30,S)) AND ( Mov(C,5,S) > Mov(C,30,S)) AND Stoch(5,3) < 30 AND Ref(Stoch(5,3) ,-1) >=30),1,0)
Sezai KILIÇ
02-03-2016, 21:58
Arkadaşlar şu formülü sistem tanımlarında indikatör olarak nasıl Yazarım Yardımcı olur musunuz?
IF((ADX(14) > 20 AND ( Mov(C,15,S) > Mov(C,30,S)) AND ( Mov(C,5,S) > Mov(C,30,S)) AND Stoch(5,3) < 30 AND Ref(Stoch(5,3) ,-1) >=30),1,0)
Buyrun
var C = Sistem.GrafikFiyatSec("Kapanis");
var ADX = Sistem.ADX(14);
var Mov5 = Sistem.MA(C, "Simple", 5);
var Mov15 = Sistem.MA(C, "Simple", 15);
var Mov30 = Sistem.MA(C, "Simple", 30);
var Stoch = Sistem.StochasticOsc(5, 3);
var IND = Sistem.Liste(0);
for (int i=1; i < Sistem.BarSayisi; i++)
{
if (ADX[i] > 20 && Mov15[i] > Mov30[i] && Mov5[i] > Mov30[i] && Stoch[i-1] < 30 && Stoch[i] >= 30)
IND[i] = 1;
else
IND[i] = 0;
}
Sistem.Cizgiler[0].Deger = IND; // Panal2
http://i.hizliresim.com/WkEGZq.png (http://hizliresim.com/WkEGZq)
wolvorine
02-03-2016, 22:07
herkese iyi aksamlar
asagıdaki sistemi robota yazdırdım hata veriyor hata nerde acaba ?
yardımcı olabilir misiniz?
şimdiden teşekkürler
var V = Sistem.GrafikVerileri ;
// hesapla
var Veriler = Sistem.GrafikFiyatsec("Kapanis"); // kapanıs barları oku
var RSI = Sistem.RSI(40);
var yetmis = Sistem.MA(RSI, "Simple", 40);
var x1 = Sistem.Liste(V.Count, 0);
for (int i = 1; i < V.Count; i++)
x1[i] = RSI[i] < yetmis[i] ? -1 : RSI[i]> yetmis[i] ? 1 : x1[i-1] ;
// sistem
var SonYon = "";
for (int i = 1; i<V.Count; i++)
{
if ( x1[i] == 1 && SonYon != "A" ) // AL
{
Sistem.Yon[i] = "A";
SonYon = Sistem.Yon[i];
}
else if ( x1[i] == -1 && SonYon != "F" ) // SAT
{
Sistem.Yon[i] = "F";
SonYon = Sistem.Yon[i];
}
else if ( x1[i] == 0 && (SonYon == "A" || SonYon == "S") ) // FLAT
{
Sistem.Yon[i] = "F";
SonYon = Sistem.Yon[i];
}
}
==========
robot tek satır ise
var Islem =Sistem.RobotViopAktif("SISTEM1", "IMKBH'FMIZP", "IMKBH'FMIZP","5",1);
Sezai KILIÇ
02-03-2016, 22:46
herkese iyi aksamlar
asagıdaki sistemi robota yazdırdım hata veriyor hata nerde acaba ?
yardımcı olabilir misiniz?
şimdiden teşekkürler
var V = Sistem.GrafikVerileri ;
// hesapla
var Veriler = Sistem.GrafikFiyatSec("Kapanis"); // kapanıs barları oku
==========
Sistem kodunda 1 küçük hata vardı. Yukarıdaki alıntıda kırmızı yaptığım "s" harfi Büyük "S" olmalı.
Tek Satır Robot fonksiyonunuz hatalı.
Adından da anlaşılacağı gibi (RobotVIOPAktif) Bu fonksiyon VIOP emir gönderim parametrelerini içerir.
Hisse için iki ayrı (Açığa Satış Var Yok) fonksiyon var.
Sisteminizden anladığım AL/KAPAT, AL/KAPAT şeklinde stratejiniz var. O halde AÇIĞA SATIŞ YAPMAYAN TEK SATIR robot kullanacaksınız,
Örnek:
var Islem = Sistem.RobotHisseAktifAcigaYok("SISTEM1", "IMKBH'FMIZP", "IMKBH'FMIZP", "5", 1);
Buyrun
var C = Sistem.GrafikFiyatSec("Kapanis");
var ADX = Sistem.ADX(14);
var Mov5 = Sistem.MA(C, "Simple", 5);
var Mov15 = Sistem.MA(C, "Simple", 15);
var Mov30 = Sistem.MA(C, "Simple", 30);
var Stoch = Sistem.StochasticOsc(5, 3);
var IND = Sistem.Liste(0);
for (int i=1; i < Sistem.BarSayisi; i++)
{
if (ADX[i] > 20 && Mov15[i] > Mov30[i] && Mov5[i] > Mov30[i] && Stoch[i-1] < 30 && Stoch[i] >= 30)
IND[i] = 1;
else
IND[i] = 0;
}
Sistem.Cizgiler[0].Deger = IND; // Panal2
http://i.hizliresim.com/WkEGZq.png (http://hizliresim.com/WkEGZq)
Çok teşekkür ederim.
wolvorine
03-03-2016, 14:40
Sistem kodunda 1 küçük hata vardı. Yukarıdaki alıntıda kırmızı yaptığım "s" harfi Büyük "S" olmalı.
Tek Satır Robot fonksiyonunuz hatalı.
Adından da anlaşılacağı gibi (RobotVIOPAktif) Bu fonksiyon VIOP emir gönderim parametrelerini içerir.
Hisse için iki ayrı (Açığa Satış Var Yok) fonksiyon var.
Sisteminizden anladığım AL/KAPAT, AL/KAPAT şeklinde stratejiniz var. O halde AÇIĞA SATIŞ YAPMAYAN TEK SATIR robot kullanacaksınız,
Örnek:
var Islem = Sistem.RobotHisseAktifAcigaYok("SISTEM1", "IMKBH'FMIZP", "IMKBH'FMIZP", "5", 1);
sagolun çok teşekkurler Sezai hocam
bu arada altına belirlediğimiz tarihten itibaren başlayan kar-zarar grafiğini nasıl çizdirebiliriz diğer orneklerden aldım tam çalıştıramadım altına nasıl ekliyebiliriz?
çok teşekkurler şimdiden
saygılarımla
thebaboli
03-03-2016, 15:50
sagolun çok teşekkurler Sezai hocam
bu arada altına belirlediğimiz tarihten itibaren başlayan kar-zarar grafiğini nasıl çizdirebiliriz diğer orneklerden aldım tam çalıştıramadım altına nasıl ekliyebiliriz?
çok teşekkurler şimdiden
saygılarımla
Sistem.GetiriHesapla("01/01/2016", 0.00);
var KarZarar = Sistem.GetiriKZ;
Sistem.Cizgiler[0].Deger = KarZarar;
Bu formülü düzeltebilirmisiniz? Hata veriyor :(
//+------------------------------------------------------------------+
//| LSMA in Color |
//| Copyright © 2004, MetaQuotes Software Corp. |
//| http://www.metaquotes.net/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2005, FX Sniper "
#property link "http://www.metaquotes.net/"
//---- indicator settings
#property indicator_chart_window
#property indicator_buffers 3
#property indicator_color1 Yellow
#property indicator_color2 Green
#property indicator_color3 Red
//---- buffers
double ExtMapBuffer1[];
double ExtMapBuffer2[];
double ExtMapBuffer3[];
int width;
//----
extern int Rperiod=34;
extern int Draw4HowLongg=1500;
int Draw4HowLong;
int shift;
int i;
int loopbegin;
double sum[];
int length;
double lengthvar;
double tmp ;
double wt[];
int c;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- 2 additional buffers are used for counting.
IndicatorBuffers(5);
//---- drawing settings
SetIndexBuffer(2,ExtMapBuffer1);
SetIndexBuffer(1,ExtMapBuffer2);
SetIndexBuffer(0,ExtMapBuffer3);
SetIndexBuffer(3,sum);
SetIndexBuffer(4,wt);
SetIndexStyle(2,DRAW_LINE,STYLE_SOLID,2);
SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,2);
SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,2);
//---- initialization done
return(0);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int start()
{
Draw4HowLong=Bars-Rperiod - 5;
length=Rperiod;
loopbegin=Draw4HowLong - length - 1;
//----
for(shift=loopbegin; shift>=0; shift--)
{
sum[1]=0;
for(i=length; i>=1 ;i--)
{
lengthvar=length + 1;
lengthvar/=3;
tmp=0;
tmp =(i - lengthvar)*Close[length-i+shift];
sum[1]+=tmp;
}
wt[shift]=sum[1]*6/(length*(length+1));
//---- COLOR CODING
ExtMapBuffer3[shift]=wt[shift]; //red
ExtMapBuffer2[shift]=wt[shift]; //green
ExtMapBuffer1[shift]=wt[shift]; //yellow
// for(c=loopbegin;c==shift;c++)
// {
if (wt[shift+1] > wt[shift])
{
ExtMapBuffer2[shift+1]=EMPTY_VALUE;
// ObjectCreate("smiley_face", OBJ_ARROW, 0, Time[shift], Low[shift]-Point*20);
// Print("time= ",Time[shift]);
// ObjectSet("smiley_face", OBJPROP_ARROWCODE, 242);
// ObjectSet("smiley_face", OBJPROP_COLOR , Red);
// ObjectSet("smiley_face", OBJPROP_WIDTH , 1);
// ObjectsRedraw();
//ExtMapBuffer3[shift+1] = EMPTY_VALUE;
//ExtMapBuffer3[shift+1] = EMPTY_VALUE;
}
else if (wt[shift+1] < wt[shift])
{
ExtMapBuffer1[shift+1]=EMPTY_VALUE; //-1 red/greem tight
//ExtMapBuffer3[shift+1] = EMPTY_VALUE;
}
else
{
ExtMapBuffer1[shift+1]=CLR_NONE;//EMPTY_VALUE;
ExtMapBuffer2[shift+1]=CLR_NONE;//EMPTY_VALUE;
}
}
return(0);
}
//+------------------------------------------------------------------+
mav 5 e 20 al sat kurduk diyelim.piyasa yataya girince aldığı yerden satıyor sattığı yerden alıyor dolayısı ile zarar ettiriyor. piyasanın yatay olduğunu gören bunu engelleyen indikatör hangisidir.teşekkürler
thebaboli
19-02-2017, 23:11
Forumumuz yeni adresinde eski gelenek ve kurallarıyla yoluna devam edecektir. Lütfen üyelik kaydınızı yapınız:
http://www.hisse.net/topluluk/register.php
ŞU AN OKUMAKTA OLDUĞUNUZ ESKİ FORUM YAZMAYA KAPANACAK, SADECE ESKİ YAZILAR OKUNABİLECEKTİR.
Powered by vBulletin® Version 4.2.3 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.