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