https://i.hizliresim.com/ly5qjky.png
Printable View
Aynı veri sizde de var. %200
Teşekkürler.
Sabah Emir toplama ve eşleştirme sonucu oluşan denge fiyatını 10:00 barına dahil etmeyişleri, periyoda göre değişik zamanlara sahip bir; 10:00 barından önce yer alan; öncü bir bar olarak değişkenlerde yer alması
ve de
akşam kapanış eşleştirmesinde oluşan denge fiyatını 18:00 barı olarak; ayrı bir bar verisi şeklinde; değişkenlere atamaları..
bu durum tüm gösterge hesaplamalarına da yansıyor.
Bu ne kadar doğru? Ya da yanlış değil?
https://i.hizliresim.com/iewtotg.png
https://i.hizliresim.com/6i91gv6.png
8 saatte 10 adet 60 dakikalık bar var örneğin, bar kapanışına göre hareket eden stratejilerde sorun çıkartmasın diye mi böyle tasarlandı, 18:00 barı kapanışına göre nasıl hareket edecek bu sistem, emir ertesi günün, 10:00 barından önce oluşan bara mı kayıyor? Sabahki o barda, akşamdan kalma sinyal oldu ama işlem olamaz, 10:00 barında işleme girmesi lazım. Ya da eskiden çift seanslı günlerde, açılış, kapanış, karanlık oda uygulamalarının farklı olduğu günlerde.. bilemedim.
Sistemini anlık veriye göre; işlem seviyesi değişkenini set ederek; yapmaya çalışan algoritmaların da işi zor. Akşam 18:05:00 öncesinde henüz kesinleşmemiş olan denge fiyatından emir göndermek de sözleşmeye bağlı zannedersem. karanlık odada stoploss fiyatının altına düştü, ya da alım seviyesinin üzerine çıktı.. ertesi güne kalıyor işlemler. Ertesi gün sabah işlemler başlamadan arada bir bar verisi daha var..
Düzgün bir sistem kurmaya çalışıyorum, verilerdeki aksaklıklar ve bilgi eksiklerim zorluyor. Saldım Çayıra Mevlam Kayıra sistemi olmasın ismi.
Merhaba İdeal Sakinleri,
Buradaki arkadaşlaa şöyle bir sorum olacaktı.
VIOP - Endeks kontratında algo-robot çalıştırıyorum. Robot bar kapanışından 2 saniye önce emri iletiyor.
Limitli emir gönderdiğimiz için bazen hızlı yukarı veya aşağı hareketlerde gönderilen emir karşıda eşleşemediği için sistem askıda kalıyor.
Bu kalma probleminin çözümü için USER.DLL kullanarak Sistem.EmirDuzelt veya Sistem.EmirSil kullanılabiliyor mu? (Sistem.EmirDuzelt veya Sistem.EmirSil için referans numaralarını takip edilmesi gerektiğin biliyorum.)veya başka bir yol var mıdır ?
Sistem.EmirDuzelt veya Sistem.EmirSil i Visual Studio'da görebilirsiniz fakat İdeal kendi compilerında için kullanmaya izin vermiyor.
Bu eşleşmeme sorunu otomatik çözmek gerekli diye düşünüyorum.
Yoksa telegram botunu devreye alıp, gerçek pozisyon ile teorik pozisyonu karşılaştan bir yapı oluşturup, manuel işlemle düzeltme yapacağım. Bu da çok istediğim bir yapı olmayacak.
Eminim aynı sorunu yaşayan arkadaşlar vardır.
PHP Code:
public void EmirDuzelt(string emirRefNo, double yeniFiyat, double yeniMiktar, double eskiFiyat, double eskiMiktar);
public void EmirSil(string emirRefNo);
PHP Code:
cxPortfolio.BistRobotHesapClass BistHesap = Sistem.BistHesapOku();
List<ImkbOrderRecord> GerceklesenEmirler = BistHesap.GerceklesenEmirler;
List<ImkbOrderRecord> BekleyenEmirler = BistHesap.BekleyenEmirler;
/*
public string LongAccountName;
public string AmendPermit;
public string ImprovePermit;
public string OneSessionPermit;
public string OrderRef;
public string OrderSessionNo;
public string ZincirRef;
public string Note;
public string Validity;
public string SatisTip;
public string GSaat;
public int EmirUpdateNum;
public int SiraNo;
public int MaxZincirSiraNo;
public string RefNo;
public string SessionName;
public string ExecutionStatus;
public byte Selected;
public string CancelPermit;
public string OrderType;
public string OrderEndDate;
public double GPrice;
public string OrderNo;
public string Symbol;
public string BuySell;
public double Amount;
public double AmountShowing;
public double GAmount;
public double Balance;
public string OrderUpdateDate;
public double Price;
public double Total;
public double GTotal;
public string ValorDate;
public string Status;
public string StatusCode;
public string Session;
public string OrderPermit;
public string OrderDate;
public string AccountNo;
public string AccountName;
public string OrderNoString { get; }
*/
Merhaba, EmirDuzelt ve EmirSil çalışmıyor mu?Alıntı:
Sistem.EmirDuzelt veya Sistem.EmirSil i Visual Studio'da görebilirsiniz fakat İdeal kendi compilerında için kullanmaya izin vermiyor.
// Eskiz kodlar
dynamic BistHesap = Sistem.BistHesapOku(); // var
List<dynamic> BekleyenEmirler = BistHesap.BekleyenEmirler; // var ya da List<dynamic>
foreach (BekleyenEmir in BekleyenEmirler)
{
string _refNo = BekleyenEmir.RefNo;
...
..
if(_condition) Sistem.EmirSil(_refNo);
}
İlave:
İyiymiş.. neden koyulmuş o metotlar o zaman?
"Merhabalar
Kodlama yaparak emir iptal ve iyileştirme yapabilme imkânı maalesef bulunmamaktadır.
İyi çalışmalar dileriz"
Bu cevap da algo@idealdata.com.tr'den aldığım cevap.
Bunun otomatikleştirebilmesi lazım bence.
İş Yatırım sitesinden indirdiğim csv dosyadaki tarih bilgilerini kullanacağım.
Robot kodlarına hisse için sermaye değişiminin olacağı tarihten önceki
son işlem gününde yeni pozisyon açmaması ve de
17:55:00 sonrası; varsa; mevcut pozisyonu kapatması yönünde metotlar ilave edeceğim.
Robot temettüyü ne yapsın, komisyon ödeyecek boş yere ayrıca işlem limitleri, portföy değeri, hisse bazlı kar zarar hesapları pek çok veriyi sermaye değişimleri etkisini göz önünde bulundurarak güncellemek lazım.
Eskidendi o.. ehtiyarladım. :ok:
O günün son kapanış bilgisi muhafaza edilecek.
Sonrası.. ??
Sonrasındaki işlem zamanlarında iDeal'in kendi bar verisini güncelleyip güncellemediğini sermaye değişiminin olduğu günün tarihi bilgisini kullanarak; o tarihli barın bir öncesindeki bardan veri alarak; ve de daha önce muhafaza edilmiş kapanış değeri ile farklı olup olmadığını kontrol ederek .. ancak. Bar verisi güncel değilse al sat sinyaline yönelik hesaplamalar da yana yatar, batar.
İDeal ilk açılışında Lib sınıfının constructor metodu içinde kontroller yapılır.
https://i.hizliresim.com/h7jq617.png
Bir sonraki işlem gününde hissede sermaye değişimi olup olmadığını kontrol etme yöntemi..
Topikte daha önceki gönderilerde resmi tatiller dosyasının oluşturulması ve okunmasına yönelik kodlarım mevcut, benzer mantıkla HisseSermayeDeğişimleri.csv dosyasından veriler okunuyor ve takip edilen hisseler için oluşturulan sınıf List'i içindeki veri set edilip gereken yerde kullanılıyor.
(public bool boolSürekliİşlemlerBitimindenÖncePozisyonKapat { get; set; } vb. opsiyonlar devreye alınabilir)
boolBirSonrakiİşlemGünündeSermayeDeğişimiOlacak = true olduğu durumda gün sonu fiyatının oluşmasının ardındanPHP Code:
public bool boolBirSonrakiİşlemGünündeSermayeDeğişimiOlacak { get; set; }
public float SermayeDeğişimiÖncesiSonKapanışFiyatı { get; set; }
public DateTime SermayeDeğişimiÖncesiSonKapanışFiyatıTarihVeSaati { get; set; }
public bool boolSermayeDeğişimiSonrasındaIDEALVerileriGüncellendi { get; set; }
SermayeDeğişimiÖncesiSonKapanışFiyatı
SermayeDeğişimiÖncesiSonKapanışFiyatıTarihVeSaati
boolSermayeDeğişimiSonrasındaIDEALVerileriGüncelle ndi = false yapılarak
değişkenleri takip hisselerine ait veri dosyasına kaydediliyor.
Sonraki işlem gününde ya da günlerinde
SermayeDeğişimiÖncesiSonKapanışFiyatıTarihVeSaati
zamanı ile çakışan bardaki değişiklikler rutin olarak kontrol edilip iDeal'in verisini güncelleyip güncellemediği belirleniyor.
https://i.hizliresim.com/pds0ma5.png
https://i.hizliresim.com/r1k01dw.png
PHP Code:
#region GÜNLÜK DEĞİŞİM
SORGUFORMU.KolonEkle(oSistem, colID++, "Günlük\nDeğişim", 50, 2, oPV.FiyatDeğişimYüzdesi_GÜN(), SORGUFORMU.BarArtanAzalan);
SORGUFORMU.KolonEkle(oSistem, colID++, "Fark\nGün", 50, 2, oSistem.FarkGun(oSistem.Sembol), SORGUFORMU.BarArtanAzalan); //SEANS BAŞLAMADAN ÖNCE ÇALIŞTIR
SORGUFORMU.KolonEkle(oSistem, colID++, "Yüzde\nGün", 50, 2, oSistem.YuzdeGun(oSistem.Sembol), SORGUFORMU.BarArtanAzalan); //SEANS BAŞLAMADAN ÖNCE ÇALIŞTIR
#endregion
https://i.hizliresim.com/axo4am1.png
Sistem.YuzdeGun(Sistem.Sembol);
ile seans başlangıcından önce sermaye değişimi bilgisi geliyor..
Bir zamanların efsanesi Keçi nikli arkadaş kutsal kaseyi bulup kayboldu :) Gün için robot ile işlemlerde başarılı olan var mı ? Hisse tarafı
Merhaba.
Henüz gerçek işlem yapan robotum yok.
Sanal robot çalıştırıyorum.
Geçen hafta başında 250 hisseyi her birine 2 bin TL başlangıç sermayesi atayıp takibe başlayan,
hafta boyu sürekli 160 - 200 adet aralığında hissede pozisyonda kalarak
5,5 milyon TL civarı işlem hacmi ile 13,5 bin TL maksimum zarar değerine inip
haftayı ~9 bin TL zararla kapatan,
bugün de ~1,5 milyon TL işlem hacmiyle ~5 bin TL geri alan bir performans oldu.
Sanalda hisse sürüsü gütmeye çalışıyor robot.. :)
Ağır Abi Sistemcilere soru:
iDeal kullanıcı sistem penceresinden Lib sınıfı içinde bulunan public bir metotu çağırırken dynamic parametre olarak tanımlı Sistem değişkenini Lib sınıfına aktarabiliyorum. Sıkıntı yok.
Lib sınıfına ait constructor metoduna Sistem değişkenini parametre olarak ya da başka bir yöntemle atamanın bir yolu var mı?
iDeal ilk çalıştığında ya da Lib.cs dosyası compile edildiğinde Sistem değişkeni içeri düşsün kendiliğinden?
Her döngüde daha doğrusu Sistem'in her çağırılışında farklı HashCode değerlere sahip nesneler üretiliyor.
Bunlar muhtemelen garbage özellikli bir dictionary ya da List, Collection vb. bir yapıda saklanıyor, tekrar ihtiyaç olduğunda; tabii halen hayattaysa kullanılıyor. Bu şekilde olmayabilir de tam çözemedim. Hisseye ait bir grafiği ve hissenin yer aldığı bir sorguyu aynı zamanda çalıştırdığımda bazı sıkıntılar yaşamıştım. Onun için clsHisse sınıfını yazdım ve sorgu için ayrı, grafik için ayrı nesneler yaratarak o sıkıntıları aşmıştım.
Lib() constructor metodu için bir override yöntemi bulamadım, Sistem değişkenini compile sonrası ya da iDeal'in ilk başlangıcında lib.cs dosyasındaki sınıflarda kullanmak istedim, olmadı. Yani; her zaman açık kalacak bir grafiğe sahip pencere düzeni oluşturup grafiğin sistem metodundan Lib içindeki sınıflara Sistem değişkenini göndermek mümkün ama iDeal UI buna çoğu zaman izin vermiyor. Laptoptan monitörleri sök ve git başka bir yerde çalışmak iste.. pencere düzenindeki monitörlere dağıtılmış formların hiç birine; açık olmalarına rağmen; ulaşamıyorsun. Left Top değerlerini bırakmıyorlar. Başka bir pencere düzenine geçmen lazım..
Dolayısıyla "Lib.cs dosyası compile edildiğinde Sistem değişkeni içeri düşsün kendiliğinden.." suya düştü.. gibi.
Selam Sayın 26, :) dediğiniz türden işlemlerim var fazlasıyla. O türden parametre ya da veriler değil, Sistem değişkeninin kendisi lazım bana. Yani hiç bir grafik açmadan, manuel olarak bir kod çalıştırmadan iDeal açılır açılmaz Lib.cs içindeki diğer sınıflarda kullanabileceğim Sistem değişkenine ihtiyacım var. dynamic olacak tabii. ideal.cxSistem zaten kullanılamıyor Lib.cs yapısında. Constructor metod içinden dynamic olarak Sistem'i kullanmak istiyorum. :ok:
Robot sözleşmem olmadığı halde "Program açıldığında robot gerçek modda çalışsın" seçeneğini aktif ettiğimde Gerçek Aksiyon disabled durumdan enabled duruma geçiyor.. :oleyo: bu da işimi görür aslında. :one:
Sağolun sayın dostum, aslında ücretsiz de değil. Mesela veri paketi için 3 milyon TL aylık işlem hacmi, robot kullanımı için de 5 milyon işlem hacmini geçince ücret ödemiyorsun. 3'ü geçemezsen 850 TL ücreti var verinin. Her halde robotla 5'i geçemezsen de 1500 TL civarıdır, tam bilmiyorum. Teşekkürler.
Hocam yanlışın var.Hangi kurum ile çalışıyorsun bilmiyorum ama ben trive ile çalışıyorum.
Veri paketinin 4 katı komisyon bırakırsam ücret almıyorlar (Kullandığım paket 470 TL içeriği ise sadece Pc 1 KADEME derinlik ve endeks datası)
Robot ücreti diye birşey yok.Onu sana kim dediyse ya bilmiyor veya sizi kandırıyorlar.Eğer öyleyse acilen aracı kurumunuzu değiştirmeni tavsiye ediyorum.
iDeal sitesindeki fiyatlara göre benim paket;
PC uygulaması + Hisse Düzey 2 + BIST Endeks için; toplam 790 TL.
Aracı kuruma 850 TL veriyorum 3 Milyon TL işlem hacmini geçersem ücret yok. :ok:
O kadar önemli de değil.. Dost işi.. :yes:
Ama 470 TL iyi fiyatmış, yaklaşık 1900 TL komisyon bırakırsanız ücret ödemiyorsunuz.
Komisyon oranı kaç (hisse için) sakıncası yoksa?
https://i.hizliresim.com/1i2565j.png
veri paketini kendin satın alabilirsin. kurumdan bağımsız. kuruma tanımlatırsın. kuruma sadece komisyonun bedelini ödersin.
istersen hiç işlem yapma.
ideali kendin cebinden ödersin. diye biliyorum.
osmanlı menkulde böyle mesela. diğer kurumlarda nasıl değişebilir.
ben hisse için hepsi dahil onbinde 1,26 ödüyorum. tüm bsmv bilmem ne içinde.
Merhabalar. İdealde ekranda iki grafik açıkken bu iki grafik içinde iki farklı sembol listesinin zamana bağlı olarak döngüye girmesi mümkün müdür?
Örneğin listeler şu şekilde olsun
LIST1 içeriği
IMKBH'YKBNK
IMKBH'ISCTR
LIST2 içeriği
IMKBH'THYAO
IMKBH'PGSUS
Soldaki grafikte LIST1 10saniye
Sağdaki grafikte LIST2 10saniye
Döngü oluşturmak mümkün mü?
Sayın dostum merhaba.
iDeal'in normal kullanımda döngü periyodu özelliği var. Tek bir listedeki sembolleri döngüye sokabiliyorsunuz, bildiğiniz üzere.
Biraz uğraştım, farklı listeleri farklı grafiklerde döngüye sokabilir miyim diye..
Yanlış ve hatalı bir gözlem ve bilgi olabilir ama;
grafiklere atanan Sistem nesnesi (statik değil) sabit kalmıyor, bir grafik oluştuktan sonra peş peşe 2-3 defa farklı Sistem nesneleri yaratılıyor ve akabinde yine farklı nesneler oluşturmaya devam ediyor iDeal. Grafiğin en son oluşturduğu nesnedeki Sistem.Sembol ve Sistem.Periyot değişkenlerini değiştirseniz de grafiğe yansımıyor bu değişiklik. Eski bir nesneyi de grafiğe tekrar atayamıyorsunuz, grafiği refresh edecek bir metot da yok. (Özel oluşturulan (custom) semboller için bir yöntem var ama.. farklı bir kullanım amacı var galiba, onu test etmedim)
Yani özel bir timer yaratarak grafiğe belirli aralıklarla Sistem.Sembol değişikliklerini değiştirme yöntemini denedim ama olmadı. Zaten timer nesnesini işi bitince disabled yapmak, grafiği oluşturan metodun zaman içinde oluşturacağı yeni timer nesnelerini kontrol etmek de oldukça zahmetli. Belki de mümkün değil.
Sorunuzun cevabı: yapamadım. :)
Bugün seans sonuna doğru makinaya bakayım dedim saat 17:30 dan sonraydı sanırım portföy bağlantısı yeşil olarak gözükse de portföy bilgileri ideal de gözükmüyordu, robotta yeni sinyal olmadığı için sorun olmadı ama yeniden login olmaya çalışsam da sms talep et butonu işlevsel değildi, kurumun kendi ekranına giriş yapıp sms talep edebildim ve login olabildim ama idealde böyle bir sıkıntı yaşadım.
Bu sorunu yaşayan oldu mu bugün ?
Hala da login olamıyorum.
İlgilendiğiniz için teşekkür ederim Sayın Inventor. Bilinen yöntemlerle sistem yazarak ekrandaki grafiği değiştirme yönteminin çalışmadığının uzun yıllardır farkındayım. Bunu yapan metotlar illaki vardır. Dll kullanarak cx kütüphanerinden erişilerek yapılabileceğini düşünüyorum. Bilen arkadaşlar varsa kodu paylaşmalarını rica edeceğim. Böyle basit bir özelliğin ideal grafiğine dahil edilmesi lazım. Grafiğe istenen takip listesi döngü şeklinde eklenebilmeli. Kullanıcılara takla attırmanın anlamı yok.
En sonunda kac yildir calistigim araci kurumu degistirdim. Info Yatirima gectim. Yuksek hacimli islemler yapan birisiyim. Bazi gunler 100lerce endeks vadeli alip sattigim oluyor. Oran eski kurumla ayni. Hersey dahil 100binde14 gibi (10binde1 + BSMV + Viop&Takasbank paylari) birsey. Ama en azindan SMS girmek derdini ortadan kaldirmislar. Kendi applikasyonundan sifre giriyorsunuz SMS yerine. Hergun islem yaptiginiz surece hafta boyunca IDEAL sistemi disina atmiyor dediler. Ben gene de hergun sistem acik olmasina ragmen tekrar giris yapiyorum ne olur olmaz diye. Sanki islemlerdeki pasife dusen emir sayisi azaldi ve robot sistemleri daha verimli calismaya basladi. SImdilik yeni araci kurumdan memnunum. SMS girme derdini kalkinca bayagi rahatladim. Tavsiye ederim. Baska INFO kullanicilari varsa ve HFT islemler yapiyorsa tanismak isterim. Kolokasyon ve server kiralama ile ilgili sorularim var.
Bugün; daha önceden rastlamadığım; bir kaç hata mesajı vardı.
Birincisi 30 dakika aralıklarla gerçekleşmiş; bunu merak ettim
11:31:05 2 defa,
11:31:35 2 defa,
11:32:05 2 defa,
11:32:35 2 defa
Sadece iki kayıt var dosyada.Kod:04.09.2024 11:31:05
Message : System error: Bilinen böyle bir ana bilgisayar yok
Source : nsoftware.IPWorks
StackTrace : konum: nsoftware.IPWorks.Ipport.Connect(String host, Int32 port)
konum: NEB4n71wpcf5y2nbTBJ.vvcrRKfjT(Object , String , Int32 , NEB4n71wpcf5y2nbTBJ )
konum: ideal.cxReceiver.<>c__DisplayClass24_1.<ConnectPort2ToScm>b__0()
Satır No : 0
Alıntı:
BaglantiGozlem.Txt
Port 1
Saat : 04.09.2024 11:31:05
OK
Port 2
Saat : 04.09.2024 11:31:05
OK
Düzensiz aralıklarla 8 - 10 defa:
Kod:04.09.2024 13:10:40
Message : Dizin aralık dışındaydı. Negatif bir değer olmamalı ve koleksiyonun boyutundan daha küçük olmalıdır.
Parametre adı: index
Source : mscorlib
StackTrace : konum: System.ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument argument, ExceptionResource resource)
konum: System.Collections.Generic.List`1.get_Item(Int32 index)
konum: ideal.ChartControl.DrawAll(Boolean calculaterangeX, Boolean calculateindicatorX, Int32 invalidateX)
Satır No : 0
Üst üste aynı saniyede 2 defa, bu da ciddi bir mesaj gibi.. 32 GByte bellek var makinede.
Kod:04.09.2024 13:10:57
Message : Bellek yetersiz.
Source : System.Drawing
StackTrace : konum: System.Drawing.Drawing2D.LinearGradientBrush..ctor(RectangleF rect, Color color1, Color color2, LinearGradientMode linearGradientMode)
konum: ideal.ChartControl.DrawSistem(Graphics graph, Int32 frameNo)
Satır No : 0
Çağırdığınız bir elemanın listenin aralığı dışında olması durumudur. Örneğin listenizde 100 eleman var ama siz 105.yi çağırıyorsunuzdur. Bu hatayı çok işlemin olduğu tahtalarda sık görüyorum. Genelde anlık veri okuma sırasında oluşan eksik verilerden yada hatalardan kaynaklanır.
Başınız ağrıtan sorunlara sebep oluyorsa try - catch betiği kullanmanız bu hataları anlık olarak görmenizi sağlar.
Grafik üzerinde çalışan kodlarınız için aşağıdaki yöntemi kullanabilirsiniz.
try{
// Kodlama başlar
//Kodlama biter
}catch (Exception hata){Sistem.Mesaj(hata.ToString()); }
Yok sayın dostum bunlar olduğu gibi iDeal'in kendi executable kodlarının verdiği hatalar. Config klasörü altındaki HataTerminal.log dosyasının içine yazılmış.
Yaklaşık 15000 satırlık Lib.cs dosyam var, tüm hata yaratabilecek kodların exception'larını ayrı bir errorlog dosyasına yönlendiriyorum, bahsettiğiniz yöntemlere fazlasıyla hakimim, sağolun. :ok:
Hata yakalama ve dosyaya yazdırma örneği
Örnek kullanım:PHP Code:
public class Dosya
{
public static Encoding anEncoding = Encoding.GetEncoding("windows-1254"); // Windows Türkçe
// D:\BORSA 2024\iDeal\TRADE klasörü mevcut olmalı
private static string HataLogDosyası { get { return "D:\\BORSA 2024\\iDeal\\TRADE\\RunTimeErrorLog." + DateTime.Now.ToString("yyyyMMdd") + ".txt"; } }
public static string TradeLogSeperator = "".PadRight(22) + "~~~~~~~~~~~~~~~~~~~~~~~~~~~~";
public static void RunTimeErrorLog(string Mesaj)
{
try
{
string VeriDosyası = HataLogDosyası;
using (FileStream fs = new FileStream(VeriDosyası, FileMode.Append, FileAccess.Write))
{
using (StreamWriter Writer = new StreamWriter(fs, anEncoding))
{
string TarihliMesaj = DateTime.Now.ToString("HH:mm:ss.ffffff").PadRight(22) + Mesaj + " // iDeal";
Writer.WriteLine(TarihliMesaj);
}
}
}
catch { return; }
}
public static void RunTimeErrorLog(Exception Ex, string Mesaj)
{
try
{
string VeriDosyası = HataLogDosyası;
using (FileStream fs = new FileStream(VeriDosyası, FileMode.Append, FileAccess.Write))
{
using (StreamWriter Writer = new StreamWriter(fs, anEncoding))
{
Mesaj = DateTime.Now.ToString("HH:mm:ss.ffffff").PadRight(22) + Mesaj;
Mesaj += "\nException Message".PadRight(22) + ": " + Ex.Message;
Mesaj += "\nException Source".PadRight(22) + ": " + Ex.Source;
Mesaj += "\nException StackTrace".PadRight(22) + ": " + Ex.StackTrace;
Writer.WriteLine(Mesaj);
Writer.WriteLine(TradeLogSeperator);
}
}
}
catch { return; }
}
}
PHP Code:
public static bool VirgüldenSonrakiBasamaklarınaKadarAynıMı(float Değer1, float Değer2, int VirgüldenSonrakiBasamakAdeti = 2)
{
try
{
float Faktör = (float)Math.Pow(10, VirgüldenSonrakiBasamakAdeti);
return Math.Truncate(Değer1 * Faktör) == Math.Truncate(Değer2 * Faktör);
}
catch (System.Threading.ThreadAbortException)
{
Dosya.RunTimeErrorLog("0007 VirgüldenSonrakiBasamaklarınaKadarAynıMı");
return false;
}
catch (Exception Ex)
{
Dosya.RunTimeErrorLog(Ex, "0007 VirgüldenSonrakiBasamaklarınaKadarAynıMı");
return false;
}
}
Hali hazırda Lib.cs (sürüm 1.0 olsun) dosyanız mevcut ve iDeal'i çalıştırdınız.
Lib sınıfının constructor metodu devreye giriyor.
iDeal'i kapattınız; destructor metod devreye giriyor.
iDeal'i tekrar çalıştırdınız. Lib.cs (sürüm 1.0) dosyasındaki Lib sınıfının constructor metodu devreye giriyor.
iDeal açık durumda..
Lib.cs içerisinde değişiklik yaptınız (sürüm 2.0 olsun) ve kaydettiniz.
Bu yeni sürümü derlemeniz lazım.
Derleyebilmek için de mutlaka bir grafik formu açık olmalı. Başka yerden derleyemiyorsunuz.
S menüsünden "Lib.cs Dosyasını Compile Et" satırı ile sürüm 2.0 içeriğini aktif hale getirmek istiyorsunuz.
iDeal; içeriğini değiştirdiğiniz dosyayı (sürüm 2.0); derliyor.
Bu dosyadaki Lib sınıfının constructor metodu devreye giriyor.
Sorun yok... değil aslında.
Yaklaşık bir dakika sonra eski (iDeal'i ilk açtığınızda yüklenen - derlenen sürüm 1.0 dosyasındaki) destructor devreye giriyor.
iDeal'i kapattınız; güncel olan (sürüm 2.0) Lib.cs dosyasındaki destructor devreye giriyor.
Her şey (...) bozuluyor.
Bence çok önemli bir konu atlanmış.
Farklı threatlerde yürütülülmüş işlemler.
Bence süreç şu şekilde olmalı..
S menüsünden "Lib.cs Dosyasını Compile Et" seçildiği zaman
ilk olarak (sürüm 1.0) hafızadaki dosyanın Lib sınıfına ait destructor metodu çalıştırılmalıdır.
Daha sonra yenilenen dosya (sürüm 2.0) derlenmelidir.
Yeni derleme (sürüm 2.0) sonrasında da eski (sürüm 1.0) sınıfa ait destructor çalıştırılmamalıdır.
Umarım iDeal yetkilileri bu konuyu ele alırlar.
https://i.hizliresim.com/apbkj69.pngKod:Constructor çalıştı
Sürüm 1.0
iDeal Lib.cs COMPILE
Constructor LIB
Uygulama Açılışı : 6 Eylül 2024 Cuma 01:35:35
Resmi Tatiller Dosyası Okundu / Kayıt Sayısı : 37
İşlem Yapılmayacak Günler Dosyası Okundu / Kayıt Sayısı : 2
Trade Hisseleri Dosyadan Okundu / Kayıt Sayısı : 300
Yasaklı Hisseler Dosyası Okundu / Kayıt Sayısı : 371
Uygulama Başlangıcında Trade Sembolleri İşlem Sayısı ve Kazanç/Kayıp Durumları
... // Diğer işlemlerle ilgili bilgi satırları - CONSTRUCTOR / Sürüm 1.0
~~~~~~~~~~
Constructor çalıştı
Sürüm 2.0
iDeal Lib.cs COMPILE
Constructor LIB
Uygulama Açılışı : 6 Eylül 2024 Cuma 01:37:10
Resmi Tatiller Dosyası Okundu / Kayıt Sayısı : 37
İşlem Yapılmayacak Günler Dosyası Okundu / Kayıt Sayısı : 2
Trade Hisseleri Dosyadan Okundu / Kayıt Sayısı : 300
Yasaklı Hisseler Dosyası Okundu / Kayıt Sayısı : 371
Uygulama Başlangıcında Trade Sembolleri İşlem Sayısı ve Kazanç/Kayıp Durumları
... // Diğer işlemlerle ilgili bilgi satırları - CONSTRUCTOR / Sürüm 2.0
~~~~~~~~~~
Destructor çalıştı
Sürüm 1.0
Uygulama Kapanışı : 6 Eylül 2024 Cuma 01:37:37
D:\BORSA 2024\iDeal\TRADE\ARŞİV\OnClose_20240906_TradeSembolleri.csv uygulama kapanış yedeklemesi yapıldı
Uygulama Kapanışında Trade Sembolleri İşlem Sayısı ve Kazanç/Kayıp Durumları
... // Diğer işlemlerle ilgili bilgi satırları - DESTRUCTOR / Sürüm 1.0
Destructor LIB
~~~~~~~~~~
Destructor çalıştı
Sürüm 2.0
Uygulama Kapanışı : 6 Eylül 2024 Cuma 01:37:54
D:\BORSA 2024\iDeal\TRADE\ARŞİV\OnClose_20240906_TradeSembolleri.csv uygulama kapanış yedeklemesi yapıldı
Uygulama Kapanışında Trade Sembolleri İşlem Sayısı ve Kazanç/Kayıp Durumları
... // Diğer işlemlerle ilgili bilgi satırları - DESTRUCTOR / Sürüm 2.0
Destructor LIB ~~~~~~~~~~
YV.PrevDatePHP Code:
var YV = oSistem.YuzeyselVeriOku(oSembol);
string SonİşlemGünüTarihi = YV.PrevDate;
float BölünmeÖncesiAğırlklıOrtalama = (float)YV.BolunmeOncesiWavr;
ve
YV.BolunmeOncesiWavr
değişkenlerinden hangi şartlar altında veri alınabiliyor, tecrübe eden var mı?
İşlem gününde sermaye değişikliği olan hisselerde; oturum başlamadan ya da başladıktan sonra BolunmeOncesiWavr değişkeninden veri alamıyorum.
Bir gün öncesinin kapanış saatinden sonra da aynı şekilde; bir sonraki işlem gününde sermaye değişikliği olacak hisselerden veri alamıyorum.
Kod:ACSEL ACIPAYAM SELULOZ Pazar : A Sektör : S_00050 Alt Market : 56 Son İşlem Günü Tarihi : Bölünme Öncesi WAvr : 0,00 Durum : 6
ADEL ADEL KALEMCILIK Pazar : Y Sektör : S_00030 Alt Market : 64 Son İşlem Günü Tarihi : Bölünme Öncesi WAvr : 0,00 Durum : 6
ADGYO ADRA GMYO Pazar : Y Sektör : S_00210 Alt Market : 64 Son İşlem Günü Tarihi : Bölünme Öncesi WAvr : 0,00 Durum : 6
AEFES ANADOLU EFES Pazar : Y Sektör : S_00010 Alt Market : 64 Son İşlem Günü Tarihi : Bölünme Öncesi WAvr : 0,00 Durum : 6
AFYON AFYON CIMENTO Pazar : Y Sektör : S_00060 Alt Market : 64 Son İşlem Günü Tarihi : Bölünme Öncesi WAvr : 0,00 Durum : 6
AGESA AGESA HAYAT EMEKLILIK Pazar : Y Sektör : S_00160 Alt Market : 64 Son İşlem Günü Tarihi : Bölünme Öncesi WAvr : 0,00 Durum : 6
İşlem gününde sermaye değişimi olan hissede oturum başlamadan önce;
Sistem.SonFiyat(Sembol) // Sermaye değişimi olan günün bir işlem günü öncesinin düzeltilmemiş kapanışını veriyor
Sistem.OncekiKapanisGun(Sembol) // Sermaye değişimi olan günün bir işlem günü öncesinin düzeltilmiş kapanışını veriyor
Bunu test etmedim;
Sistem.OrtalamaGun(Sembol) // Sermaye değişimi olmadan bir gün öncesinin düzeltilmemiş Ağırlıklı Ortalamasını verecek mi ?
Kod:KOD SD Tarihi Bedelli% Diğer Bedelsiz IK% Bedelsiz Temettü% Hisse Başı Brüt Açıklama
______ ___________ _________ _________ _____________ _________________ _______________________________________
GRTRK 13.09.2024 0,00 0,00 0,00 0,00 0,04 Temettünün tamamı nakit olarak dağıtılmakta
KRVGD 10.09.2024 0,00 0,00 0,00 0,00 0,03 Temettünün tamamı nakit olarak dağıtılmakta
PLTUR 10.09.2024 0,00 0,00 0,00 0,00 0,06 Temettünün tamamı nakit olarak dağıtılmakta
(B1) TS.oSembol IMKBH'PLTUR
(B2) oSistem.SonFiyat 26,76
(B3) oSistem.OrtalamaGun 0
(B4) oSistem.OncekiKapanisGun 26,7
(B5) oSistem YuzdeGun 0,2247171
Oturum başlamadan;PHP Code:
//Tarih;Kapanış(TL);Min(TL);Max(TL);AOF(TL)
9.09.2024 00:00:00;26,76;26,54;27,26;26,91
6.09.2024 00:00:00;26,96;26,12;27,22;26,74
5.09.2024 00:00:00;27,08;26,74;27,48;27,16
Sistem.OrtalamaGun(Sembol);
bir önceki işlem gününün ağırlıklı ortalama değerini vermiyor.
Sayın İnventor
15000 satır diyince aklıma 2013 yılında yazdığım bir program geldi.Satırlarını kontrol edeyim dedim 10000 satırı geçiyor.
O zamanlar hatırlıyorum bir programcı arkadaşıma göstermiştim o bile bu ne ya bu kadar çok satır var diye şaşırmıştı.
Şimdi o kadar satırı yazabilir miyim diye düşünüyorum.Ne günlermiş be :)