
Originally Posted by
sonli
Bence oldu

Bir kontrol edin bakalým..
PHP Code:
var bars = 500;//son kaç barý takip edecek
var puan = 2000f;//kaç puanda flat olacak
int p1=10; //ma kýsa
int p2=20; //ma uzun
var C = Sistem.GrafikFiyatSec("Kapanis");
var H = Sistem.GrafikFiyatSec("Yuksek");
var L = Sistem.GrafikFiyatSec("Dusuk");
var a = Sistem.Liste(0);
var b = Sistem.Liste(0);
var m1 = Sistem.MA(p1, "Exp", "Kapanis");
var m2 = Sistem.MA(p2, "Exp", "Kapanis");
var SonYon = "";
for (int i = Sistem.BarSayisi-bars; i < Sistem.BarSayisi; i++)
{
//alýþta deðilse, bir önceki bar m1 > m2 ve ondan önceki barda da m1<m2 mi? aksi durumda m1>m2 iken flat olursa hemen yine alýr..
if ( m1[i-1]>m2[i-1] && m1[i-2]<m2[i-2] && SonYon!="A")
{
SonYon = Sistem.Yon[i] = "A";
a[i]=C[i];//H[i];
}
if ( m1[i-1]<m2[i-1] && m1[i-2]>m2[i-2] && SonYon!="S")
{
SonYon = Sistem.Yon[i] = "S";
b[i] =C[i];//L[i];
}
if ( SonYon=="A") {
if (H[i-1]>a[i-1]) a[i] =H[i-1];
else a[i]=a[i-1];
}
if ( SonYon=="S") {
if (L[i-1]<b[i-1] || b[i-1]==0) b[i] =L[i-1];
else b[i]=b[i-1];
}
if (SonYon=="A" && C[i]<(a[i]-puan) ) {
SonYon = Sistem.Yon[i] = "F"; // alýþtan flat
}
if (SonYon=="S" && C[i]>(b[i]+puan) ) {
SonYon = Sistem.Yon[i] = "F"; // satýþtan flat
}
}//for son
if ( SonYon=="A") Sistem.ZeminYazisiEkle("FLAT SEVÝYESÝ = "+(a[Sistem.BarSayisi-1]-puan), 1, 200, 50, Color.Cyan, "Tahoma", 23);
if ( SonYon=="S") Sistem.ZeminYazisiEkle("FLAT SEVÝYESÝ = "+(b[Sistem.BarSayisi-1]+puan), 1, 200, 50, Color.Red, "Tahoma", 23);
Sistem.Cizgiler[0].Deger = a;
Sistem.Cizgiler[1].Deger = b;
Sistem.Cizgiler[2].Deger = m1;
Sistem.Cizgiler[3].Deger = m2;
PHP Code:
var bars = 500;//son kaç barý takip edecek
var puan = 2.000f;//kaç puanda flat olacak
int p1=50; //ma kýsa
int p2=100; //ma uzun
var V = Sistem.GrafikVerileri ;
var C = Sistem.GrafikFiyatSec("Kapanis");
var H = Sistem.GrafikFiyatSec("Yuksek");
var L = Sistem.GrafikFiyatSec("Dusuk");
var a = Sistem.Liste(0);
var b = Sistem.Liste(0);
var m1 = Sistem.MA(p1, "Exp", "Kapanis");
var m2 = Sistem.MA(p2, "Exp", "Kapanis");
var SonYon = "";
//for (int i = Sistem.BarSayisi-bars; i < Sistem.BarSayisi; i++) // SON 500 BAR
for (int i = 1; i<V.Count; i++) // TÜM BARLAR ÝÇÝN
{
//alýþta deðilse, bir önceki bar m1 > m2 ve ondan önceki barda da m1<m2 mi? aksi durumda m1>m2 iken flat olursa hemen yine alýr..
if ( m1[i-1]>m2[i-1] && m1[i-2]<m2[i-2] && SonYon!="A")
{
SonYon = Sistem.Yon[i] = "A";
a[i]=C[i];//H[i];
}
if ( m1[i-1]<m2[i-1] && m1[i-2]>m2[i-2] && SonYon!="S")
{
SonYon = Sistem.Yon[i] = "S";
b[i] =C[i];//L[i];
}
if ( SonYon=="A") // SON YÖN ALDA ÝSE
{
if (H[i-1]>a[i-1]) // YÜKSEK , KAPANIÞTAN BÜYÜKSE
a[i] =H[i-1]; // a ‘ ya YÜKSEK degerini ata
else a[i]=a[i-1]; // YÜKSEK , KAPANIÞTAN küçükse a’ yý kapanýþa eþitle
}
if ( SonYon=="S") // Aldaki mantýgýn aynýsý
{
if (L[i-1]<b[i-1] || b[i-1]==0)
b[i] =L[i-1];
else b[i]=b[i-1];
}
if (SonYon=="A" && C[i]<(a[i]-puan) ) // alýþtan flat
{
Sistem.Yon[i] = "F";
SonYon = Sistem.Yon[i];
}
if (SonYon=="S" && C[i]>(b[i]+puan) ) // satýþtan flat
{
Sistem.Yon[i] = "F";
SonYon = Sistem.Yon[i];
}
}
if ( SonYon=="A") Sistem.ZeminYazisiEkle("FLAT SEVÝYESÝ = "+(a[Sistem.BarSayisi-1]-puan), 1, 200, 50, Color.Cyan, "Tahoma", 23);
if ( SonYon=="S") Sistem.ZeminYazisiEkle("FLAT SEVÝYESÝ = "+(b[Sistem.BarSayisi-1]+puan), 1, 200, 50, Color.Red, "Tahoma", 23);
Sistem.Cizgiler[0].Deger = a; // EN YÜKSEK DEGER
Sistem.Cizgiler[1].Deger = b; // EN DÜÞÜK DEÐER
Sistem.Cizgiler[2].Deger = m1; // MA 1
Sistem.Cizgiler[3].Deger = m2; // MA 2
Sayýn sonli teþekür ederim bir kaç deðiþiklik yaparak formül çalýþtý, istedigimde oldu.
a : en yüksek degeri gösterdiði gibi , hem de en yüksekten seçilen puan kadar düþünce flata geçiyor.
b : tam tersi
Sayýn 3c1a nýn yazmýþ oldugu formülde oldu. Ayný iþlemi yapýyor.
Yardýmlarýnýz için teþekür ederim sonli ce 3c 1a
Bu formüldeki bu yapýyý sisteminin içine gömecegim. Flata geçtiði noktalarda baþka bir bir sistem çalýþacak.
Baþarýlý olurmu bilmiyorum ama denemeler yapmam gerek.
Bu formüller sayesinde idealde baþka yapýlarý öðrenmiþ oldum.
Yer Ýmleri