Teşekkür ederim repaint yaptırmadan multi time frame işlemler yapmak istiyorum. Robot için sadece 1dk lık veri kullanmak istiyorum Sistem.DonemCevir üzerinde biraz çalışmam lazım anlaşılan.
Printable View
Teşekkür ederim repaint yaptırmadan multi time frame işlemler yapmak istiyorum. Robot için sadece 1dk lık veri kullanmak istiyorum Sistem.DonemCevir üzerinde biraz çalışmam lazım anlaşılan.
Kütüphane şurada:
http://www.directfn.com.tr/idealsistem/
Örnek için paylaşılan sistemler burada:
http://www.directfn.com.tr/sistemler/
İdealGo yardım hesabı şurada:
https://twitter.com/Algoyardim
Üstadlar burada(kendimden söz etmiyorum yanlış anlaşılmaya)... :notr:
Başarılar, bol kazançlar dilerim. :ok:
Maalesef Sistem.DonemCevir işimi görmüyor, çünkü çevrilecek üst dönem verilerine ihtiyaç duyuyor.
Sistem.DonemCevir(Veriler, UstDonemVerileri, UstDonemCevrilecekData)
Bende üst dönem verileri yok sadece 1dk veriler var. Sadece 1dk lık verileri kullanarak 5, 15,60 ve günlük verileri hesaplamak istiyorum. Bütün periyotlarda ait verileri temin etmek çok zahmetli ve sorunlu bir iş. Bu nedenle dönem çevir metodu işimi görmez. Farklı bir önerisi olan var mı?
Üstadım... Elinizde 1 dakikalık veri varsa... Diğer tümü de var demektir.
Asıl zor olan 1 dakikalık verileri indirmek, tutmak işlemek... Bir şeyleri kaçırıyorsunuz kanımca.
Başka veri terminallerinden sonra İdeal adaptasyonu zor olabiliyor. Şöyle düşünürseniz belki daha kolay olur... :
Veriler=Elinizdeki 1 dakikalık veriler.
UstDonemVerileri = Örneğin "5 dakikalık veriler" olsun.
UstDonemCevrilecekData = Örneğin "Kapanış" olsun.
Bunu doğru biçimde yazdığınızda elinizde "5 dakikalık kapanış" verisi olacaktır.
Merhabalar herkese kolay gelsin aşağıdaki formülde işlem sayısını nasıl azaltabilirim yardımcı olursanız sevinirim
var V = Sistem.GrafikVerileri ;
var C = Sistem.GrafikFiyatSec("Kapanis");
var H = Sistem.GrafikFiyatOku(V, "Yuksek" ) ;
var L = Sistem.GrafikFiyatOku(V, "Dusuk" ) ;
var Us = Sistem.Liste(0); //Up swing
var Ds = Sistem.Liste(0); // Down Swing
var Dsa = new List<int>();
var Usa = new List<int>();
var Lsx = Sistem.Liste(0); //LovestSince Listesi
var Hsx = Sistem.Liste(0); //HighestSince Listesi
var Sd1 = Sistem.Liste(0);
var Sd2 = Sistem.Liste(0);
var BarNo1 = 0; //Barsince US için
var BarNo2 = 0; //BarSince DS için
var BarNo3 = 0; //Barsince SD=1 için
var BarNo4 = 0; //BarSince SD=-1 için
var BS1 = Sistem.Liste(0); //BarSince SD=1 Listesi
var BS_1 = Sistem.Liste(0); //BarSince SD=-1 Listesi
var Td1 = Sistem.Liste(0);
for (int i=3; i<V.Count; i++)
{
if ( H[i] > H[i-1] && H[i-1] > H[i-2] && H[i-2] > H[i-3])
BarNo1 = i;
if (BarNo1 > 0)
Us[i] = i - BarNo1;
if ( L[i] < L[i-1] && L[i-1] < L[i-2] && L[i-2] < L[i-3])
BarNo2 = i;
if (BarNo2 > 0)
Ds[i] = i - BarNo2;
if (Ds[i] == 0 )
Dsa.Add(i);
if (Us[i] == 0 )
Usa.Add(i);
if(Dsa.Count > 1)
{
var y = new List<float>();
for(int k = Dsa[Dsa.Count-1]; k<i+1; k++)
y.Add(L[k]);
Lsx[i] = y.Min();
y.Clear();
}
if(Usa.Count > 1)
{
var y = new List<float>();
for(int k = Dsa[Dsa.Count-1]; k<i+1; k++)
y.Add(H[k]);
Hsx[i] = y.Max();
y.Clear();
}
if(Us[i] == 0 && L[i-1] != Lsx[i] )
Sd1[i] = 1;
else if(Ds[i] == 0 && H[i-1] != Hsx[i] )
Sd1[i] = -1;
else
Sd1[i] = 0;
if ( Sd1[i] == 1)
BarNo3 = i;
if (BarNo3 > 0)
BS1[i] = i - BarNo3;
if ( Sd1[i] == -1)
BarNo4 = i;
if (BarNo4 > 0)
BS_1[i] = i - BarNo4;
if(Sd1[i] == 1 && BS1[i-1] > BS_1[i-1] )
Sd2[i] = 1;
else if(Sd1[i] == -1 && BS1[i-1] < BS_1[i-1] )
Sd2[i] = -1;
else
Sd2[i] = 0;
if(Sd2[i] != 0)
Td1[i] = Sd2[i];
else
Td1[i] = Td1[i-1];
}
Sistem.Cizgiler[2].Deger = Td1;
var Sonyon = "" ;
float Fiyat = 0.0F ;
var Sinyal = "";
//sistem kalıp
for (int i = 20; i < Sistem.BarSayisi; i++)
{
if ( Td1[i] > 0 && Sonyon != "A" )
{
Sistem.Yon[i] = "A";
Sonyon = "A";
Fiyat = C[i];
}
else if (Td1[i] < 0 && Sonyon != "S" )
{
Sistem.Yon[i] = "S";
Sonyon = "S";
Fiyat = C[i];
}
}
Sistem.GetiriHesapla("01/08/1990", 0.0);
Sistem.GetiriMaxDDHesapla("01/01/1990", "01/01/2030");
double KarCount = 0;
double ZararCount = 0;
int PrevBarNo = 0;
var PrevYon = "";
for (int i = 0; i < V.Count; i++)
{
if (PrevBarNo > 0)
{
if (PrevYon == "A" && (Sistem.Yon[i] == "F" || Sistem.Yon[i] == "S"))
{
if (C[i] > C[PrevBarNo]) KarCount++;
if (C[i] < C[PrevBarNo]) ZararCount++;
}
if (PrevYon == "S" && (Sistem.Yon[i] == "F" || Sistem.Yon[i] == "A"))
{
if (C[i] < C[PrevBarNo]) KarCount++;
if (C[i] > C[PrevBarNo]) ZararCount++;
}
}
if (Sistem.Yon[i] != "")
{
PrevYon = Sistem.Yon[i];
PrevBarNo = i;
}
}
double Oran = 100 * KarCount / (KarCount + ZararCount);
var Sure = (DateTime.Now - V[0].Date).TotalDays / 30.4;
var gunkz = Sistem.GetiriKZGunSonu[Sistem.GetiriKZGunSonu.Count - 1] - Sistem.GetiriKZGun[Sistem.GetiriKZGun.Count - 1];
var Date2Ay = DateTime.Now.AddDays(-60);
var Date2AyBarNo = 0;
for (int i = V.Count - 1; i > 0; i--)
{
if (V[i].Date <= Date2Ay)
{
Date2AyBarNo = i;
break;
}
}
var Getiri2Ay = Sistem.GetiriKZ[Sistem.GetiriKZ.Count - 1] - Sistem.GetiriKZ[Date2AyBarNo];
var Date3Ay = DateTime.Now.AddDays(-90);
var Date3AyBarNo = 0;
for (int i = V.Count - 1; i > 0; i--)
{
if (V[i].Date <= Date3Ay)
{
Date3AyBarNo = i;
break;
}
}
var Getiri3Ay = Sistem.GetiriKZ[Sistem.GetiriKZ.Count - 1] - Sistem.GetiriKZ[Date3AyBarNo];
var Date6Ay = DateTime.Now.AddDays(-180);
var Date6AyBarNo = 0;
for (int i = V.Count - 1; i > 0; i--)
{
if (V[i].Date <= Date6Ay)
{
Date6AyBarNo = i;
break;
}
}
var Getiri6Ay = Sistem.GetiriKZ[Sistem.GetiriKZ.Count - 1] - Sistem.GetiriKZ[Date6AyBarNo];
Sistem.Dortgen(2, 10, 20, 230, 220, Color.Black, Color.Black, Color.Silver);
Sistem.GradientYaziEkle(Sure.ToString("0.0") + " Ay", 2, 20, 20, Color.Silver, Color.Silver, "Tahoma", 12);
Sistem.GradientYaziEkle(Sistem.GetiriKZ[Sistem.GetiriKZ.Count - 1].ToString("0.000"), 2, 150, 20, Sistem.GetiriKZ[Sistem.GetiriKZ.Count - 1] > 0 ? Color.Lime: Color.Red, Sistem.GetiriKZ[Sistem.GetiriKZ.Count - 1] > 0 ? Color.Lime: Color.Red, "Tahoma", 12);
Sistem.GradientYaziEkle("1 Ay", 2, 20, 40, Color.Silver, Color.Silver, "Tahoma", 12);
Sistem.GradientYaziEkle(Sistem.GetiriBirAy.ToStrin g("0.000"), 2, 150, 40, Sistem.GetiriBirAy > 0 ? Color.Lime: Color.Red, Sistem.GetiriBirAy > 0 ? Color.Lime: Color.Red, "Tahoma", 12);
Sistem.GradientYaziEkle("3 Ay", 2, 20, 60, Color.Silver, Color.Silver, "Tahoma", 12);
Sistem.GradientYaziEkle(Getiri3Ay.ToString("0.000" ), 2, 150, 60, Getiri3Ay > 0 ? Color.Lime: Color.Lime, Getiri3Ay > 0 ? Color.Lime: Color.Lime, "Tahoma", 12);
Sistem.GradientYaziEkle("6 Ay", 2, 20, 80, Color.Silver, Color.Silver, "Tahoma", 12);
Sistem.GradientYaziEkle(Getiri6Ay.ToString("0.000" ), 2, 150, 80, Getiri6Ay > 0 ? Color.Lime: Color.Red, Getiri6Ay > 0 ? Color.Lime: Color.Red, "Tahoma", 12);
Sistem.GradientYaziEkle("Bu Gün", 2, 20, 200, Color.Silver, Color.Silver, "Tahoma", 12);
Sistem.GradientYaziEkle(gunkz.ToString("0.000"), 2, 150, 200,gunkz > 0 ? Color.Lime: Color.Red, gunkz > 0 ? Color.Lime: Color.Red, "Tahoma", 12);
Sistem.GradientYaziEkle("İşlem Sayısı", 2, 20, 120, Color.Silver, Color.Silver, "Tahoma", 12);
Sistem.GradientYaziEkle(Sistem.GetiriIslemSayisiPo z[V.Count - 1].ToString("0"), 2, 150, 120, Color.Gold, Color.Gold, "Tahoma", 12);
Sistem.GradientYaziEkle("Ortalama", 2, 20, 140, Color.Silver, Color.Silver, "Tahoma", 12);
Sistem.GradientYaziEkle((Sistem.GetiriIslemSayisiP oz[V.Count - 1] / Sure).ToString("0"), 2, 150, 140, Color.Gold, Color.Gold, "Tahoma", 12);
Sistem.GradientYaziEkle("Karlılık", 2, 20, 160, Color.Silver, Color.Silver, "Tahoma", 12);
Sistem.GradientYaziEkle("% " + Sistem.GetiriKarIslemOran.ToString("0.00"), 2, 150, 160, Color.Gold, Color.Gold, "Tahoma", 12);
Sistem.GradientYaziEkle("Profit Fact.",2, 20, 180, Color.Silver, Color.Silver, "Tahoma", 12);
Sistem.GradientYaziEkle(Sistem.ProfitFactor.ToStri ng("0.00"), 2, 150, 180, Color.Gold, Color.Gold, "Calibri", 12);
Sistem.GradientYaziEkle("Max DD",2, 20, 100, Color.Red, Color.Red, "Tahoma", 14);
Sistem.GradientYaziEkle(Sistem.GetiriMaxDD.ToStrin g("0.000"), 2, 150, 100, Color.Red, Color.Red, "Tahoma", 12);
Sistem.DolguEkle(0, 1, Color.FromArgb(120, 0, 255, 0), Color.FromArgb(120, 255, 0, 0));
//string syspertrh = "01/01/2007"; //
//if ( syspertrh != "" )
//{ Sistem.GetiriHesapla( syspertrh , 0.012);
//var KarZarar = Sistem.GetiriKZ;
//Sistem.Cizgiler[5].Deger = KarZarar;
//Sistem.Cizgiler[5].Stil=5;
//Sistem.Cizgiler[5].Panel = 4;
//Sistem.Cizgiler[5].Aciklama = "NET_K/Z";
//Sistem.Cizgiler[5].ActiveBool = true;
var KZYuzde = Sistem.Liste(0);
float TopTeminat = 430;
float Teminat = 215;
float Kaldıraç = 6.97f;
for (int i = 1; i < Sistem.BarSayisi; i++)
{
//KZYuzde[i] = ( Sistem.GetiriKZGun[i] * (Kaldıraç * Teminat) / TopTeminat) * Kaldıraç ;
KZYuzde[i] = ( Sistem.GetiriKZGun[i] * 10000 / TopTeminat ) ;
}
Sistem.Cizgiler[6].Deger = KZYuzde ;
Sistem.Cizgiler[6].Stil=1;
Sistem.Cizgiler[6].Panel=2;
Sistem.Cizgiler[6].Aciklama = "NET_K/Z_Yüzde";
//Sistem.Cizgiler[6].ActiveBool = true;
//Sistem.GradientYaziEkle("NET_K/Z_Yüzde", 2, 20, 220, Color.Silver, Color.Silver, "Tahoma", 11);
//Sistem.GradientYaziEkle((Sistem.GetiriKZGun * 10000 / TopTeminat).ToString("0.000"), 2, 150, 220, Color.Gold, Color.Gold, "Tahoma", 12);
Sistem.Cizgiler[0].Deger = Sistem.GetiriKZGunSonu;
Sistem.Cizgiler[1].Deger = Sistem.GetiriKZGun;
float gun_kapanis =0;
var gunluk_kapanislar = Sistem.Liste(0);
float saat_kapanis =0;
var saatlik_kapanislar = Sistem.Liste(0);
float dk_30_kapanis =0;
var dk_30_kapanislar = Sistem.Liste(0);
for (int i = 5 ; i < V.Count; i++)
{
if ( V[i-1].Date.Day!= V[i].Date.Day ) // Gün periyot kapanışları
gun_kapanis=C[i-1];
gunluk_kapanislar[i]=gun_kapanis;
if ( V[i].Date.Day % 10== 0 ) // 10 dk periyot kapanışları
saat_kapanis=C[i-1];
saatlik_kapanislar[i]=saat_kapanis;
if ( V[i].Date.Minute % 5==0 ) // 5dk periyot kapanışları
dk_30_kapanis=C[i-1];
dk_30_kapanislar[i]=dk_30_kapanis;
}
belki işini görebilir
var SonYon = "";
double SonFiyat = 0.0;
var Sinyal = "";
var izleyen = 0F;
int BarNo = 0;
for (int i=13; i < Sistem.BarSayisi; i++)
{
if (i >= BarNo + 48)
if (Sinyal != SonYon && Sinyal != "")
{
SonYon = Sinyal;
Sistem.Yon[i] = SonYon;
SonFiyat = V[i].Close;
if ( SonYon == "F")
{
BarNo = i;
}
}
}