Veri güncellemeyle ilgili sorunları aşamadım bir türlü..
Sorgu kodlarında bir sembolün bir periyodu için hesaplama yaparken
eğer o sembol için grafik daha önceden ekrana çizilmemişse;
sorgu sonucunda göstergeler için hesaplanan sonuçlar ile
sembolün grafiğini ekrana çizdirdiğim zaman güncellenen barlar nedeniyle
değişen gösterge değerleri; haliyle; birbirinden farklı çıkıyor.
(Sembol grafiği seçili periyotta ekrana çizilince veriler güncelliyor; hop.. bir kaç bar daha ekleniyor grafiğe, dolayısıyla sorguda hesaplanan değerler değişiyor)
Bu verinin sonradan; grafiği çizilince; güncellenmesi seans saatleri içinde de oluyor mu onu tespit edemedim.
Sorgu öncesi iDeal menüsünden güncellemeyi yapıyorum. Bazen veri indiriyor, bazen veriler güncel olduğu için indirmiyor.
Sistem değil.. Sorgularda yaşıyorum bu problemi.. sistem için de aynı şey oluyor ama amaç sorgu sinyalini kaçırmamak.
Sorgu gerçekleşiyor.. algoritmaya göre (custom) AL-SAT vb. sinyaller üretiliyor..
Sembolün grafiğini açtığımda bir bakıyorum beş altı bar ekleniyor grafiğe ve sorgunun ürettiği sinyalle alakası olmayan bir durumla karşılaşıyorum.
Çözemedim bu işi. Bu konuda yanlış olan, ya da yanlış- eksik yaptığım bir şeyler var. Yardım edebilecek var mı?
Sorgu kodlarında
aşağıdaki şekilde veri okutuyorum.
PHP Code:
string Periyot = Sistem.Periyot;
Sistem.GrafikVerisiIndir(Sistem.Sembol, Periyot);//ardarda 1 saat geçmeden kullanamazsınız
//Sistem.YuzeyselGuncelle(Sistem.Sembol); //Verileri sıfırlıyor, hesaplama yapılamıyor
//Sistem.GrafikGuncelle(Sistem.Sembol); //Kullanıcı tanımlı semboller için
var Veriler = Sistem.GrafikVerileriniOku(Sistem.Sembol, Periyot);
var BarYüksek = Sistem.GrafikFiyatOku(Veriler, "Yuksek");
var BarDüşük = Sistem.GrafikFiyatOku(Veriler, "Dusuk");
var BarPIVOT = Sistem.GrafikFiyatOku(Veriler, "OHLC/4");
//Bazı periyotlarda barların ağırlıklı ortalamasını veri olarak alamıyorsun..
//var BarYüksek = Sistem.GrafikFiyatSec("Yuksek");
//var BarDüşük = Sistem.GrafikFiyatSec("Dusuk");
//var BarPIVOT = Sistem.GrafikFiyatSec("OHLC/4");
var V_240 = Sistem.GrafikVerileriniOku(Sistem.Sembol, "240", "OHLC/4");
var V_60 = Sistem.GrafikVerileriniOku(Sistem.Sembol, "60", "OHLC/4");
Verileri tamamlasın diye bazen aşağıdaki sorguyu kullanıyorum.. kullandığım bütün periyotları işaretleyip bu sorguyu çalıştırıyorum yine de ekrana grafik çizilmeden bir türlü şu veriyi tamamlatamadım. Karanlık oda verisinin de hangi periyotta hangi bara eklendiği konusu da soru işareti.. G ve 240 dakikalık barlara ekleniyor, fakat diğer periyotlarda ayrı bir bar olarak sona ekleniyor.. yanlış yaptığım bir şeyler var.
Önce tüm sembollerde ekrana grafik çizdirilecek.. sorgu tekrar çalıştırılacak.. o zaman sorun yok.
PHP Code:
public void QUERY_COMPLETE_DATA()
{
//Senetler
Sistem.SorguAciklamaGenislik = 150;
Sistem.SorguSutunGenislik[0] = 50;
Sistem.SorguBaslik[0] = "SEMBOL";
Sistem.SorguSutunTip[0] = "YAZI";
Sistem.SorguSutunHizala[0] = "SOL";
var Symbol = (Sistem.Sembol.Contains("IMKBH'") ? Sistem.Sembol.Replace("IMKBH'", "") : Sistem.Sembol);
Sistem.SorguDeger[0] = Symbol;
var Yuzeysel = Sistem.YuzeyselVeriOku(Sistem.Sembol);//Etkisiz
var SonFiyat = Sistem.SonFiyat(Sistem.Sembol);
if (SonFiyat > 0)
{
try
{
int colID = 1;
Sistem.SorguSutunGenislik[colID] = 60;
Sistem.SorguOndalik[colID] = 2;
Sistem.SorguBaslik[colID] = "(SonFiyat) KAPANIŞ";
Sistem.SorguDeger[colID] = SonFiyat;
colID++;
Sistem.SorguSutunGenislik[colID] = 110;
Sistem.SorguOndalik[colID] = 2;
Sistem.SorguBaslik[colID] = "(OncekiKapanisGun) Önceki Kapanış";
var OncekiKapanisGun = Sistem.OncekiKapanisGun(Sistem.Sembol);
Sistem.SorguDeger[colID] = OncekiKapanisGun;
colID++;
Sistem.SorguSutunGenislik[colID] = 80;
Sistem.SorguOndalik[colID] = 0;
Sistem.SorguBaslik[colID] = "(SonHacim) SON HACİM";
var SonHacim = Sistem.SonHacim(Sistem.Sembol);
Sistem.SorguDeger[colID] = SonHacim;
colID++;
Sistem.SorguSutunGenislik[colID] = 20;
Sistem.SorguBaslik[colID] = "-";
Sistem.SorguSutunHizala[colID] = "ORTA";
Sistem.SorguDeger[colID] = "";
string Periyot = Sistem.Periyot;
Sistem.GrafikVerisiIndir(Sistem.Sembol, Periyot);
//Sembol ve Periyot
int _Periyot = 0;
int.TryParse(Periyot, out _Periyot);
string PeriodValue = Symbol + " " + (_Periyot == 0 ? Periyot : _Periyot.ToString("000"));
colID++;
Sistem.SorguSutunGenislik[colID] = 70;
Sistem.SorguBaslik[colID] = "Sembol & Periyot"; //Periyot
Sistem.SorguSutunHizala[colID] = "SOL";
Sistem.SorguSutunTip[colID] = "YAZI";
Sistem.SorguDeger[colID] = PeriodValue;
//Sistem Bar Sayısı
colID++;
Sistem.SorguSutunGenislik[colID] = 60;
Sistem.SorguBaslik[colID] = "Sistem Bar Sayısı";
Sistem.SorguOndalik[colID] = 0;
Sistem.SorguDeger[colID] = Sistem.BarSayisi;
// GRAFİK VERİLERİNİ OKU
var Barlar = Sistem.GrafikVerileriniOku(Sistem.Sembol, Periyot);
//Grafik Verilerini Oku : Bar Sayısı
int Barlar_Count = Barlar.Count;
colID++;
Sistem.SorguSutunGenislik[colID] = 60;
Sistem.SorguBaslik[colID] = "(GVO) Bar Sayısı";
Sistem.SorguOndalik[colID] = 0;
Sistem.SorguDeger[colID] = Barlar_Count;
//Grafik Verilerini Oku : Önceki Bar Kapanış Saati
colID++;
Sistem.SorguSutunGenislik[colID] = 85;
Sistem.SorguBaslik[colID] = "(GVO) Önceki Bar Zamanı";
Sistem.SorguSutunTip[colID] = "YAZI";
Sistem.SorguDeger[colID] = Barlar[Barlar.Count - 2].Date.ToLongTimeString();
//Grafik Verilerini Oku : Son Bar Kapanış Saati
colID++;
Sistem.SorguSutunGenislik[colID] = 80;
Sistem.SorguBaslik[colID] = "(GVO) Son Bar Zamanı";
Sistem.SorguSutunTip[colID] = "YAZI";
Sistem.SorguDeger[colID] = Barlar[Barlar.Count - 1].Date.ToLongTimeString();
//Grafik Verilerini Oku : Önceki Bar Kapanış
colID++;
Sistem.SorguSutunGenislik[colID] = 85;
Sistem.SorguBaslik[colID] = "(GVO) Önceki Bar Kapanış";
Sistem.SorguOndalik[colID] = 2;
Sistem.SorguDeger[colID] = Barlar[Barlar.Count - 2].Close;
//Grafik Verilerini Oku : Son Bar Kapanış
colID++;
Sistem.SorguSutunGenislik[colID] = 80;
Sistem.SorguBaslik[colID] = "(GVO) Son Bar Kapanış";
Sistem.SorguOndalik[colID] = 2;
Sistem.SorguDeger[colID] = Barlar[Barlar.Count - 1].Close;
// GRAFİK FİYAT OKU
var GFO_Close = Sistem.GrafikFiyatOku(Barlar, "Kapanis");
//Grafik Fiyat Oku : Önceki Bar Kapanış
var GFO_Close_Prev = GFO_Close[GFO_Close.Count - 2];
colID++;
Sistem.SorguSutunGenislik[colID] = 70;
Sistem.SorguBaslik[colID] = "(GFO) Önceki Kapanış";
Sistem.SorguOndalik[colID] = 2;
Sistem.SorguDeger[colID] = GFO_Close_Prev;
//Grafik Fiyat Oku : Son Bar Kapanış
var GFO_Close_Last = GFO_Close[GFO_Close.Count - 1];
colID++;
Sistem.SorguSutunGenislik[colID] = 65;
Sistem.SorguBaslik[colID] = "(GFO) Son Kapanış";
Sistem.SorguOndalik[colID] = 2;
Sistem.SorguDeger[colID] = GFO_Close_Last;
var GFO_Volume = Sistem.GrafikFiyatOku(Barlar, "Hacim");
//Grafik Fiyat Oku : Önceki Bar Hacim
var GFO_Volume_Prev = GFO_Volume[GFO_Volume.Count - 2];
colID++;
Sistem.SorguSutunGenislik[colID] = 100;
Sistem.SorguBaslik[colID] = "(GFO) Önceki Hacim";
Sistem.SorguOndalik[colID] = 0;
Sistem.SorguDeger[colID] = GFO_Volume_Prev;
//Grafik Fiyat Oku : Son Bar Hacim
var GFO_Volume_Last = GFO_Volume[GFO_Volume.Count - 1];
colID++;
Sistem.SorguSutunGenislik[colID] = 100;
Sistem.SorguBaslik[colID] = "(GFO) Son Hacim";
Sistem.SorguOndalik[colID] = 0;
Sistem.SorguDeger[colID] = GFO_Volume_Last;
// GRAFİK VERİLERİ
//Grafik Verileri : Önceki Bar Tarihi
string GV_Date_Prev = Sistem.GrafikVerileri[Sistem.BarSayisi - 2].Date.ToString("dd/MM/yyyy HH:mm:ss.ff");
colID++;
Sistem.SorguSutunGenislik[colID] = 130;
Sistem.SorguBaslik[colID] = "(GV) Önceki Veri Tarih";
Sistem.SorguSutunTip[colID] = "YAZI";
Sistem.SorguDeger[colID] = GV_Date_Prev;
//Grafik Verileri : Son Bar Tarihi
string GV_Date_Last = Sistem.GrafikVerileri[Sistem.BarSayisi - 1].Date.ToString("dd/MM/yyyy HH:mm:ss.ff");
colID++;
Sistem.SorguSutunGenislik[colID] = 130;
Sistem.SorguBaslik[colID] = "(GV) Son Veri Tarih";
Sistem.SorguSutunTip[colID] = "YAZI";
Sistem.SorguDeger[colID] = GV_Date_Last;
//Grafik Verileri : Önceki Bar Kapanış
float GV_Close_Prev = Sistem.GrafikVerileri[Sistem.BarSayisi - 2].Close;
colID++;
Sistem.SorguSutunGenislik[colID] = 80;
Sistem.SorguBaslik[colID] = "(GV) Önceki Veri Kapanış";
Sistem.SorguOndalik[colID] = 2;
Sistem.SorguDeger[colID] = GV_Close_Prev;
//Grafik Verileri : Son Bar Kapanış
float GV_Close_Last = Sistem.GrafikVerileri[Sistem.BarSayisi - 1].Close;
colID++;
Sistem.SorguSutunGenislik[colID] = 80;
Sistem.SorguBaslik[colID] = "(GV) Son Veri Kapanış";
Sistem.SorguOndalik[colID] = 2;
Sistem.SorguDeger[colID] = GV_Close_Last;
//Grafik Verileri : Önceki Bar Kapanış
float GV_Vol_Prev = Sistem.GrafikVerileri[Sistem.BarSayisi - 2].Vol;
colID++;
Sistem.SorguSutunGenislik[colID] = 80;
Sistem.SorguBaslik[colID] = "(GV) Önceki Veri Hacim";
Sistem.SorguOndalik[colID] = 0;
Sistem.SorguDeger[colID] = GV_Vol_Prev;
//Grafik Verileri : Son Bar Kapanış
float GV_Vol_Last = Sistem.GrafikVerileri[Sistem.BarSayisi - 1].Vol;
colID++;
Sistem.SorguSutunGenislik[colID] = 80;
Sistem.SorguBaslik[colID] = "(GV) Son Veri Hacim";
Sistem.SorguOndalik[colID] = 0;
Sistem.SorguDeger[colID] = GV_Vol_Last;
Sistem.SorguAciklama = "Periyot: " + Periyot + " için değerler";
Sistem.SorguEkle();
}
catch (Exception Ex)
{
string errorline = "Message : " + Ex.Message + " Source : " + Ex.Source + " StackTrace : " + Ex.StackTrace;
Sistem.SorguAciklama = errorline;
Sistem.SorguEkle();
}
}
else
{
Sistem.SorguAciklama = "!!* Veri Alınamadı *!!";
Sistem.SorguEkle();
}
}
(Uygulama güzel. Çok emek var.
Ama bir kaç eleştiri:
üstelik WPF bile değil yani.., uygulamanın UI özellikleri umarım daha da geliştirilecek)
Yer İmleri