Merhaba,kodun icinde grafigin calistigi para birimini alabilecegim bir method var midir?
Merhaba,kodun icinde grafigin calistigi para birimini alabilecegim bir method var midir?
Erhan hocam,
//1 deki gibi yeni bir liste tanimlayip, //2 deki satiri dongu icersine ekleyip dener misiniz?
Bu yeni liste Sistem.Yon'deki A/S/F degisimlerini 1/-1/0 degerleri olarak tutuyor. Sistem.Yon listesi sadece yon degisimleri sirasinda deger aliyor yani yon degisimi disindaki herhangi baska bir anda ici bos gibi. Yeni liste ise tum barlar boyunca ekranda gordugumuz yone paralel 1/-1/0 degerleri atiyor.PHP Code:
//1
var SonYon_Liste = Sistem.Liste(0);
//2
SonYon_Liste[i]=Sistem.Yon[i]=="A"?1:Sistem.Yon[i]=="S"?-1:Sistem.Yon[i]=="F"?0:SonYon_Liste[i-1];
Not:Bu satirlari eski forumdan "anonim" arkadasimizin sistem birlestirme kodu icerisinde uyarladim.
Merhaba,
Benim gorebildigim kadariyla strateji kismindaki kodunuz gelecege bakip sinyal uretmek istiyor. Geriye donuk testlerde bir sekilde calistirabilseniz bile seans sirasinda bir sonraki bar (i+1) hicbir zaman olusmayacagi icin tutarli bir sinyal de uretmeyecektir diye dusunuyorum. Muhtemelen yeni bar olustuktan sonra sanki onceki barda sinyal vermis gibi yapacaktir.
Son düzenleme : 3c1a; 04-08-2019 saat: 12:35.
performans açýsýndan döngüye sokmadan bu iþi yapayým demiþtim.
Bir arayüz tasarlýyorum timer ile Sistem Getiri çalýþtýrýp sistemin yönlerini sürekli olarak çekiyorum. Yön çekildiði veya deðiþtiði andaki grafik fiyat verilerindeki son deðer neyse onu form uygulamama yazdýrmak istiyorum amacým bu.
-Sistem YÖnünü çekiyorum ve forma yazdýrabiliyorum PROBLEM YOK!
-Alýþ veya Satýþ fiyatýnýda çekiyorum forma yazdýrýyorum YÖN DEÐÝÞMESE BÝLE FÝYAT DEÐÝÞÝYOR. PROBLEM VAR!
BUradaki problem ana sebebi timer sürekli olarak okuma yapýyor haliyle koþul gerçekleþtiði içinde okumayý sürdürüyor. Buaya bir if bloðuyla son yön deðiþmiþse git fiyatlarý oku veya yansýt gibi birþey demem lazým ki sadece o anda fiyatý okusun. Bir önceki son yön deðiþmiþ ise git son fiyatý oku demek lazým fakat son yon bir liste deðil anladýgým kadarýyla.
Yonumuz diye bir deðiþken oluþturdum global alanda timer dýþýnda burayý kontrol ettireyim diyordum. Yanlýz Yonumuz adlý deðiþkeni tetikleyemiyorum. yine timer veya for gibi birþeylere giriþmek gerekiyormuþ gibi.
Aklýma gelen þey þu Yonumuz adlý global alandaki deðiþkeni bir listeye çeviremezmiyiz. Bunu bir liste halinde tutup bir önceki yonumuz þöyle þimdiki yönümüz böyle ise fiyatý o zaman oku gibi bir kurgu problemý cozermý yoksa liste sürekli olarak dolup þiþirirmi programý kafamda deli sorularKIT C# bilgisiyle :D
Kod:int Yonumuz; public void timer1_Tick(object sender, EventArgs e) //timer1 acýlýnca okunacak verýler { SistemAdi = textBoxsistemadi.Text; SembolAdi = textBoxsembol.Text; Periyot = textBoxperiyot.Text; var Sistemim = User.Sistem.SistemGetir(SistemAdi, SembolAdi, Periyot); if (Sistemim.SonYon == "A") { lblsistemyonu.Text = "LONG"; Yonumuz = 1; var S1 = User.Sistem.YuzeyselVeriOku(SembolAdi);//yüzeysel verileri oku float P1 = S1.LastPrice; //son fiyatý lblislemfiyat.Text = P1.ToString("0.0000"); //yazdýr } if (Sistemim.SonYon == "S") { lblsistemyonu.Text = "SHORT"; Yonumuz = -1; var S1 = User.Sistem.YuzeyselVeriOku(SembolAdi);//yüzeysel verileri oku float P1 = S1.LastPrice; //son fiyatý lblislemfiyat.Text = P1.ToString("0.0000"); //yazdýr } if (Sistemim.SonYon == "F") { lblsistemyonu.Text = "FLAT"; Yonumuz = 0; var S1 = User.Sistem.YuzeyselVeriOku(SembolAdi);//yüzeysel verileri oku float P1 = S1.LastPrice; //son fiyatý lblislemfiyat.Text = P1.ToString("0.0000"); //yazdýr } else if (Sistemim.SonYon == null) { MessageBox.Show("Sistem Bulunamadý!"); } }
Senin almaya cesaret edemediðin riskleri alanlar, senin yaþamak istediðin hayatý yaþarlar..
Sokrates twit @erhanacikgoz1
// hesapla
var DEMA1 = Sistem.DEMA(5);
var DEMA2 = Sistem.DEMA(21);
// hesaplanan verileri çizgilere aktar
Sistem.Cizgiler[0].Deger = DEMA1;
Sistem.Cizgiler[1].Deger = DEMA2;
// sistem strateji
Sistem.KesismeTara(DEMA1, DEMA2);
// algo strateji
if (Sistem.YukariKestiyse(DEMA1, DEMA2)) // alýþ
Sistem.AlgoIslem = "A";
if (Sistem.AsagiKestiyse(DEMA1, DEMA2)) // satýþ
Sistem.AlgoIslem = "S";
// algo açýklama
Sistem.AlgoAciklama = "DEMA1=" + DEMA1[Sistem.BarSayisi-1].ToString("0.00") + " " +
"DEMA2=" + DEMA2[Sistem.BarSayisi-1].ToString("0.00");
************************************************** ********
// parametreleri al
var Periyot = Sistem.Parametreler[0];
var Yuzde = Sistem.Parametreler[1];
// TOMA hesapla
var TOMA = Sistem.TOMA(Periyot, Yuzde);
// EMA hesapla
var Veriler = Sistem.GrafikFiyatSec("Kapanis");
var EMA = Sistem.MA(Veriler, "Exp", Periyot);
// hesaplanan verileri çizgilere aktar ve açýklama ekle
Sistem.Cizgiler[0].Deger = TOMA;
Sistem.Cizgiler[1].Deger = EMA;
// strateji
Sistem.KesismeTara(EMA, TOMA);
**************************************
Ýdealin demo verisyonunda üsteki dema5-dema21 formülünde siyah olarak belirttiðim yerde sistem strateji ve algo stratejisi varken Toma formül örneginde sadece strateji bölümü eklenmiþ, algo strateji eklenmemiþ.
dema örnegi algo örnegi iken, toma indikatör örnegimi oluyor. Fark bumdanmý kaynaklanýyor.
Problemi muhtemelen çözdüm Pazartesi deneyeceðim Ancak kurgulanan algorýtma doðru diye düþünüyorum.
Bilgi ve öðretme amaçlý buraya da yayýnlamýþ olayým.
a,s,f diye 0 deðerinde deðiþkenler oluþturdum global alanda.
Timerin tick olayýna yani her saniyede bir diyelim Sistemgetiri çalýþtýrýp sistemi çekiyor.
eðer sistemin son yonu A ise;
eðer a nýn deðeri de 0 a eþit ise;
Son fiyatý oku ve a nýn deðerini 1 arttýr s ve f yide 0 yap.
Böylece timer tekrar okuma yaptýgýnda a'nýn deðeri artýk 1 olacaðý için LONG yazmasýna veya son fiyatý okumasýna gerek kalmayacak bir kere long olmuþsa birdaha long olmuþ gibi davranmayacak.
Normalde her tickte yani her saniyede son yon kontrolunu saglayan if bloklarýný okuyup duruyordu bu sayede o bloklarýda atlayacak max performansla calýstýrmýþ olacagým
Ancak sistem getir acaba ne kadar yük bindiriyor makinaya onu ilerde ölçeceðim.
Kod:int a = 0; int s = 0; int f = 0; public void timer1_Tick(object sender, EventArgs e) //timer1 acýlýnca okunacak verýler { SistemAdi = textBoxsistemadi.Text; SembolAdi = textBoxsembol.Text; Periyot = textBoxperiyot.Text; var Sistemim = User.Sistem.SistemGetir(SistemAdi, SembolAdi, Periyot); if (Sistemim.SonYon == "A") { if (a==0) { lblsistemyonu.Text = "LONG"; var S1 = User.Sistem.YuzeyselVeriOku(SembolAdi);//yüzeysel verileri oku float P1 = S1.LastPrice; //son fiyatý lblislemfiyat.Text = P1.ToString("0.0000"); //yazdýr a++; s = 0; f = 0; } } else if (Sistemim.SonYon == "S") { if (s==0) { lblsistemyonu.Text = "SHORT"; var S1 = User.Sistem.YuzeyselVeriOku(SembolAdi);//yüzeysel verileri oku float P1 = S1.LastPrice; //son fiyatý lblislemfiyat.Text = P1.ToString("0.0000"); //yazdýr s++; a = 0; f = 0; } } else if (Sistemim.SonYon == "F") { if (f==0) { lblsistemyonu.Text = "FLAT"; var S1 = User.Sistem.YuzeyselVeriOku(SembolAdi);//yüzeysel verileri oku float P1 = S1.LastPrice; //son fiyatý lblislemfiyat.Text = P1.ToString("0.0000"); //yazdýr f++; s = 0; a = 0; } }
Senin almaya cesaret edemediðin riskleri alanlar, senin yaþamak istediðin hayatý yaþarlar..
Sokrates twit @erhanacikgoz1
Erhan aþaðýdaki kalýptan alacaðýn parça formül iþine yarayacaktýr.
grafiktekiPHP Code:var FIYATLIST = Sistem.Liste(0);
if (AlisSinyal && SonYon != "A" || SonYon == "F" && Flat_Al ) // alýþ sinyal
{
Miktar = -Pozisyon + LevelLot ;
MIKTARLIST[i] = Miktar;
FIYATLIST[i] = C[i];
AvrFiyat = C[i];
AVRFIYATLIST[i] = AvrFiyat;
izLIST[i] = (FIYATLIST[i] - izleyen ) ;
Pozisyon = LevelLot ;
POZLIST[i] = Pozisyon;
SonYon = "A";
Sistem.Yon[i] = SonYon;
}
else if (SatisSinyal && SonYon != "S" || SonYon == "F" && Flat_Sat ) // satýþ sinyal
{
Miktar = -Pozisyon - LevelLot ;
MIKTARLIST[i] = Miktar;
FIYATLIST[i] = C[i];
AvrFiyat = C[i];
AVRFIYATLIST[i] = AvrFiyat;
izLIST[i] = (FIYATLIST[i] + izleyen ) ;
Pozisyon = - LevelLot ;
POZLIST[i] = Pozisyon;
SonYon = "S";
Sistem.Yon[i] = SonYon;
}
Sistem.Cizgiler[2].Deger = FIYATLIST;
beyaz çizgi Ýþlem yerlerini ve o andaki fiyatý
Açýkmavi ortalama maliyeti
Sarý Ýzleyen stop deðerini gösterir
![]()
Bear_Bull
@BearBull26
Yer Ýmleri