Merhaba, portfolio'yu strateji icerisinden canli olarak takip etmek saglikli olmayacagindan simdilik bunu tavsiye etmiyoruz. Kurumlardan bize sunulan baglanti yavas ve minimum dakikada bir update edebiliyoruz. Bu sizin icin sorun teskil etmiyorsa Bakiyenizi asagidaki sekilde takip edebilirsiniz.
var overall = GetOverall(); //Islem limiti
var para1 = BistOverall; //Hesaptaki toplam para(hesap Overall)
var para = BistAvailableMargin; //Margin trading hesabi varsa
Bahsettiginiz takibi en saglikli ve guvenilir olarak strateji icerisinden yapabilirsiniz, ornegin baslangic bakiyesi manuel olarak belirleyip sonra stratejinizde yaptiginiz islemleri canli takip edebilir, bu sekilde de baslangic bakiyenizi strateji icerisinde guncelleyerek canli takip edebilirsiniz.
Islemleri canli takip edebilmek icin OnDataupdate fonksiyonu icerisinde (ya da orn. OnTimer) asagidaki kodu kullanabilirsiniz. inAlgoQuantity, strateji calismaya basladigindan itibaren portolio'da belirtilen sembolden net kac adet oldugunu takip edecektir.
IDictionary<string, decimal> portfolio = GetPortfolio();
var positionflag = portfolio.ContainsKey(Symbol) && portfolio[Symbol] != 0;
if (positionflag)
{
inAlgoQuantity = portfolio[Symbol];
}
Asagidaki kod ile ise gercek zamanli emir/pozisyon takibi yapabilirsiniz
public override void OnOrderUpdate(IOrder order)
{
//Gercek zamanli pozisyon takibi
if (order.OrdStatus.Obj == OrdStatus.Filled && order.Side.Obj == Side.Buy)
{
var positionChange = order.OrderQty;
realposition += (int) positionChange;
Debug("[ONORDERUPDATE]: Pozisyon = " + realposition);
}
if (order.OrdStatus.Obj == OrdStatus.Filled && order.Side.Obj == Side.Sell)
{
var positionChange = order.OrderQty;
realposition -= (int) positionChange;
Debug("[ONORDERUPDATE]: Pozisyon = " + realposition);
}
}
Sadece Son yazdigim kod kullanilarak bahsettiginiz takibi emirlerin gerceklesme fiyatlarindan toplam kar/zararinizi hesaplayip %10 dusus varsa stratejiyi durduracak bir flag olusturabilirsiniz. Yazdiklarima bir bakin daha fazla yardima ihtiyaciniz olursa tekrar yazabilirsiniz.