Originally Posted by
doan144
Vob grafiğinde gün içi maksimum işlem olan kademe ile minimum işlem olan kademeyi grafik üzerine yazdırabilirmiyiz.
Teşekkürler.
yapılabilir.
VIOP yuzeysel+ lisansı gerektirir.
gün içinde değer değişmeye devam edeceği için;
indikator olarak kullanılacaksa repaint yapar.
örnekte 5 dk grafik üzerine günlük kademe giydirilmiştir.
benzer şekilde;
5 dakikaya 60 dakikalık kademe
1 dakikaya 5 dakikalık kademe
etc
giydirilebilir.
Kod:
var V = Sistem.GrafikVerileri;
var KademeMaxFiyatDict = new Dictionary<string, float>();
var KademeMaxLotDict = new Dictionary<string, float>();
var BitisTarih = DateTime.Today;
var Tarih = BitisTarih.AddDays(-20);
while (Tarih < BitisTarih)
{
Tarih = Tarih.AddDays(1);
if (Tarih.DayOfWeek == DayOfWeek.Saturday || Tarih.DayOfWeek == DayOfWeek.Sunday) continue;
var TarihStr = Tarih.ToString("yyyyMMdd");
var IslemList = Sistem.SembolIslemleriniOku(Sistem.AktifViopKontrat, TarihStr);
var dict = new Dictionary<float, float>();
foreach (var islem in IslemList)
{
if (dict.ContainsKey(islem.Price) == false)
dict[islem.Price] = 0;
dict[islem.Price] += islem.Size;
}
dict = dict.OrderBy(x => x.Value).ToDictionary(x => x.Key, x => x.Value);
KademeMaxFiyatDict[Tarih.ToString("yyyyMMdd")] = dict.Last().Key;
KademeMaxLotDict[Tarih.ToString("yyyyMMdd")] = dict.Last().Value;
}
var KademeMaxLotList = Sistem.Liste(0);
var KademeMaxFiyatList = Sistem.Liste(0);
for (int i = V.Count - 1; i > V.Count - 2000; i--)
{
var key = V[i].Date.ToString("yyyyMMdd");
if (KademeMaxFiyatDict.ContainsKey(key))
KademeMaxFiyatList[i] = KademeMaxFiyatDict[key];
if (KademeMaxLotDict.ContainsKey(key))
KademeMaxLotList[i] = KademeMaxLotDict[key];
}
Sistem.Cizgiler[0].Deger = KademeMaxFiyatList;
Sistem.Cizgiler[1].Deger = KademeMaxLotList;
Sistem.GradientYaziEkle("Son Gün Kademe Max Fiyat = " + KademeMaxFiyatList[KademeMaxFiyatList.Count - 1].ToString("0.000"), 1, 10, 150, Color.Yellow, Color.Orange, "Tahoma", 20);
Sistem.GradientYaziEkle("Son Gün Kademe Max Lot = " + KademeMaxLotList[KademeMaxLotList.Count - 1].ToString("0"), 1, 10, 180, Color.Yellow, Color.Orange, "Tahoma", 20);