-
Aşağıdaki sistemle ilgili, ortalamanın kesişiminden çıkan alış ve satış sinyalini bir bar onceden nasıl verdirebilirim?
// kapanış fiyatlarını oku
var C = Sistem.GrafikFiyatSec("Kapanis");
var H = Sistem.GrafikFiyatSec("Yuksek");
var L = Sistem.GrafikFiyatSec("Dusuk");
// hareketli ortalamaları hesapla
var MA1 = Sistem.MA(C, "Exp", 50);
var MA2 = Sistem.MA(C, "Exp", 100);
// strateji
var SonYon = "";
double Fiyat = 0;
var IslemBarNo = 0;
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];
IslemBarNo = i;
}
else if (MA1[i-1] > MA2[i-1] && MA1[i] <= MA2[i] && SonYon != "S") // SAT
{
Sistem.Yon[i] = "S"; // satış
SonYon = Sistem.Yon[i];
Fiyat = C[i];
IslemBarNo = i;
}
else if (SonYon == "S") // satış pozisyonundayken FLAT
{
var LimitBarNo = 0;
var Seviye = 0.0;
for (int k = IslemBarNo; k < i; k++)
{
if (Fiyat - L[k] > 5)
{
if (Seviye == 0 || Seviye > L[k])
{
LimitBarNo = k;
Seviye = L[k];
}
}
}
if (LimitBarNo > 0)
{
if (C[i] - Seviye > 3)
{
Sistem.Yon[i] = "F"; // flat
SonYon = Sistem.Yon[i];
}
}
}
else if (SonYon == "A") // alış pozisyonundayken FLAT
{
var LimitBarNo = 0;
var Seviye = 0.0;
for (int k = IslemBarNo; k < i; k++)
{
if (H[k] - Fiyat > 5)
{
if (Seviye == 0 || Seviye < H[k])
{
LimitBarNo = k;
Seviye = H[k];
}
}
}
if (LimitBarNo > 0)
{
if (Seviye - C[i] > 3)
{
Sistem.Yon[i] = "F"; // flat
SonYon = Sistem.Yon[i];
}
}
}
}
// hesaplanan verileri çizgilere aktar ve açıklama ekle
Sistem.Cizgiler[0].Deger = MA1;
Sistem.Cizgiler[1].Deger = MA2;
-

Originally Posted by
burrn
Aşağıdaki sistemle ilgili, ortalamanın kesişiminden çıkan alış ve satış sinyalini bir bar onceden nasıl verdirebilirim?
// hareketli ortalamaları hesapla
var MA1 = Sistem.MA(C, "Exp", 48);
var MA2 = Sistem.MA(C, "Exp", 98);
olarak veya 49-99olarak deneyin
sistem içinden yapılamaz.
-
Teşekkür ederim sayın @Bear_Bull
peki Sistem.Yon[i-1] = "A"; // alış
yapsam tamamiyle hatalı olur değil mi?
Birde şöyle bir şey okumuştum ama, [IMG]
[/IMG]
buda işimi görmez değil mi?
-
yazınızda for döngüsü için resimde açıklaması yazılmış orası işinize yaramaz.
5000 bar varsa toplamda.
oraya 4500 dersiniz sistem son 500 bar için sinyal arar çok eski datalar ile uğraşmaz. 
if (MA1[i-1] < MA2[i-1] && MA1[i] >= MA2[i] && SonYon != "A") // AL
bu yukarıdakini ise aşağıdaki gibi değiştirirseniz 1 bar geriye değil üstüne 1 bar daha sinyali geciktirmiş olursunuz.
MA1[i-2] < MA2[i-2] && MA1[i] >= MA2[i]
-

Originally Posted by
Bear_Bull
yazınızda for döngüsü için resimde açıklaması yazılmış orası işinize yaramaz.
5000 bar varsa toplamda.
oraya 4500 dersiniz sistem son 500 bar için sinyal arar çok eski datalar ile uğraşmaz.
if (MA1[i-1] < MA2[i-1] && MA1[i] >= MA2[i] && SonYon != "A") // AL
bu yukarıdakini ise aşağıdaki gibi değiştirirseniz 1 bar geriye değil
üstüne 1 bar daha sinyali geciktirmiş olursunuz.
MA1[i-
2] < MA2[i-
2] && MA1[i] >= MA2[i]
evet ben sinyali erkene almak istediğimden imkansızı istemiş oluyorum ozaman.
çok uzuldum 
şunları denedim belki yaparım diye yine olmadı...
// parametreleri al
var Yontem = Sistem.Parametreler[0];
var Periyot1 = Sistem.Parametreler[1];
var Periyot2 = Sistem.Parametreler[2];
// kapanış fiyatlarını oku
var Veriler = Sistem.GrafikFiyatSec("Kapanis");
var Prev1 = Sistem.OncekiKapanisGun("MA1");
var Prev2 = Sistem.OncekiKapanisGun("MA2");
// hareketli ortalamaları hesapla
var MA1 = Sistem.MA(Veriler, Yontem, Periyot1);
var MA2 = Sistem.MA(Veriler, Yontem, Periyot2);
// hesaplanan verileri çizgilere aktar ve açıklama ekle
Sistem.Cizgiler[0].Deger = MA1;
Sistem.Cizgiler[0].Aciklama = "MA " + Periyot1;
Sistem.Cizgiler[1].Deger = MA2;
Sistem.Cizgiler[1].Aciklama = "MA " + Periyot2;
// strateji
for (int i = 2; i<Sistem.BarSayisi; i++)
{
Prev1 = MA1[i-1];
Prev2 = MA2[i-1];
if (MA1[i-1] < MA2[i-1] && MA1[i] > MA2[i])
Sistem.Yon[i] = "A"; // alış
if (MA1[i-1] > MA2[i-1] && MA1[i] < MA2[i]) // 1.ortalama 2.ortalamanın altına inerse
Sistem.Yon[i] = "F"; // satış
}
oysaki sinyali bir bar one ceksem çok harika olacaktı ya
-

Originally Posted by
burrn
evet ben sinyali erkene almak istediğimden imkansızı istemiş oluyorum ozaman.
çok uzuldum

oysaki sinyali bir bar one ceksem çok harika olacaktı ya
o zaman çözüm ilk cevabımda yazılıydı.
48-98
49-99 gibi kullanmanız 1 bar öncesine denk getirecektir.
kolay gelsin.
-

Originally Posted by
Bear_Bull
o zaman çözüm ilk cevabımda yazılıydı.
48-98
49-99 gibi kullanmanız 1 bar öncesine denk getirecektir.
kolay gelsin.
çok sağolun sayın Bear_Bull
İyi akşamlar
-
İDEAL veri terminalinde /Sistem/İndikatör/Robot
Sayin @Bear_Bull
MA5 ve MA22 kesisimli olan bir sistemde,
5-22 kesisiminde al veren ve sati sadece hisse senedi degeri MA22 yi asagi kesince sat veren bir sistem yapilabilir mi?
Satis kismina
If (sonfiyat[i-1]>MA2 )
Seklinde mi olur?
hisse.net kullanarak iPhone aracılığıyla gönderildi
Gönderi Kuralları
- Yeni konu açamazsınız
- Konulara cevap yazamazsınız
- Yazılara ek gönderemezsiniz
- Yazılarınızı değiştiremezsiniz
-
Forum Rules
Yer İmleri