Originally Posted by
Santi78
Cevap icin cok sagolun. Istedigimi tam anlatamadim, eger hisse gunluk periyotta (ornegin 50-200 diyelim)iki hareketli ortalamanin kesismesi gerceklesirse otomatik olarak 30 dakikalik periyotta direnc cizdirip, direnci gectiginde alim yapmasi. Gunluk periyotta HO ortalamalarin kesisim olup olmadigini koda dokebiliriz ama kesisme olduysa nasil bir kodlama ile otomatik olarak 30 dakikalik periyotta direnc cizdirebiliriz? 1.eylem gerceklesince 2.eyleme nasil bir komut ile bunu yap diyebiliriz?
Aşağıdaki sistem; günlük MA1, günlük MA2 den büyükse ve baktığınız periyottaki fiyat trendin üzerindeyse alım yapar..Fiyat MA2 yi aşağı kırdığında satar. Trendi ve fiyatı, grafiğe baktığınız periyoda göre kullanır (ortalamalar günlük olduğundan günlük ve tüm alt periyotlarda çalışır). Koddaki trend son 20 barı dikkate almadan 300 bara bakıyor.
Trendi kesişim esnasında çizdirmenize gerek yok; trend her zaman olur ama sistem ma1>ma2 + fiyat>trend olduğunda işleme girer. Ancak trendin otomatik çizilmesi önceki tepelerin durumuna göre sağlıklı çalışmayacaktır. Sistem anlık dediğim gibi çalışsa da, trend şartından dolayı grafik üzerinde geçmişte yaptığı ya da yapmadığı alımları hatalı gösterir.
PHP Code:
int p1=5;
int p2=21;
var Veriler = Sistem.GrafikVerileri;
var C = Sistem.GrafikFiyatOku(Veriler,"Kapanis");
var gn = Sistem.GrafikVerileriniOku(Sistem.Sembol, "G");
var kgn = Sistem.GrafikFiyatOku(gn, "Kapanis");
var m1 = Sistem.MA(kgn, "Simple", p1 );
m1 =Sistem.DonemCevir(Sistem.GrafikVerileri, gn , m1 );
var m2 = Sistem.MA(kgn, "Simple", p2 );
m2 =Sistem.DonemCevir(Sistem.GrafikVerileri, gn , m2 );
var T = Sistem.OtoTrendDusen(Veriler, 300, 20);
//kesişim şartı
//if (m50[i]>m100[i] && m50[i-1]<m100[i-1])
var SonYon = "";
for (int i=2; i < Sistem.BarSayisi; i++)
{
if (SonYon != "A" && m1[i]>m2[i] && C[i]>T[i] )
{
SonYon = Sistem.Yon[i] = "A";
Sistem.Mesaj("Trend Yukarı Kırıldı");
}
else if (SonYon != "S" && C[i]<m2[i] )
{
SonYon = Sistem.Yon[i] = "S";
Sistem.Mesaj("Satıldı..");
}
}
//ekranda çizgi olarak göster
Sistem.Cizgiler[0].Deger = m1;
Sistem.Cizgiler[1].Deger = m2;
Sistem.Cizgiler[2].Deger = T;
Yer İmleri