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