PDA

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:

klozon
21-01-2016, 17:28
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

klozon
21-01-2016, 19:07
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

klozon
21-01-2016, 19:45
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.

klozon
22-01-2016, 12:16
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

ansist
02-03-2016, 21:34
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);

ansist
03-03-2016, 01:04
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;

ansist
14-03-2016, 04:09
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);
}
//+------------------------------------------------------------------+

mntgst
17-03-2016, 23:23
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.