var ATT = Sistem.TOMA(C, 1, 0.015);
var TOMA = Sistem.TOMA(ATT, 20, 0.5);
Sistem.Cizgiler[1].Deger = TOMA;
var SonYon = "";
var Sinyal = "";
double SonFiyat = 0.0;
for (int i = 100; i < V.Count; i++)
{
// Strateji
if ( ATT[i+1] >TOMA[i+1]) Sinyal = "A";
else if (ATT[i+1] < TOMA[i+1]) Sinyal = "S";
yukarıdaki sistemi örnek amaçlı yazdım strateji kısmını bu şekilde kullanan var mı yada kullanılması sonucu ne olabilir ?
cevaplarınınız için şimdiden Tesekkür Ederim.
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.
Merhaba,kodun icinde grafigin calistigi para birimini alabilecegim bir method var midir?
// 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.
Bence Algo stratejiye hic kafa yormaniza gerek yok. Bildigim kadariyla Sistem.AlgoIslem sartlar gerceklestiginde sadece 1 kereligine al ya da sat yapilmasi icin kullanilan bir fonsiyon. Her iki kodda da "Sistem.KesismeTara" ayni islevi goruyor. Matrikste "cross" ile yukari / asagi kesisim taramasi burada tek bir fonsiyon ile yapilabiliyor diyebiliriz. Bu fonsiyonun yaptigini "Sistem.YukariKestiyse / Sistem.AsagiKestiyse" fonsiyonlarini ayri ayri kullanarakta yapabilirsiniz.
Hazir fonsiyonlari kullanmadan, dongu icerisinde "TOMA[i]>EMA[i] and TOMA[i-1]<=EMA[i-1]" gibi bir "if" satiri "Sistem.YukariKestiyse" fonsiyonun yaptigina benzer seyi yapacaktir. Sistem fonsiyonlarini tanimli indikatorlerle kullanirsaniz ayrica dongu kosturmadan ve Sistem.Yon gibi fonsiyonlarina atama yapmadan kolayca grafik uzerinden Al / Sat oklarini gorebilir ve olsurturdugunuz sistemi daha sonra robota baglayabilirsiniz.
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