0 beğenilme 0 beğenilmeme
891 kez görüntülendi
Merhabalar ,sormak istediğim soru ,Matriks IQ strateji oluştururken mevcut bakiyenin belli bir yüzde azalması sonucu stratejiyi durdurma gibi bir komut nasıl yazılabilir acaba yardımcı olabilir misiniz ?

Mesela, bakiye yapılan işlemler sonucunda %10 aşağıya geldiğinde sistem emirleri durdursun ve açık pozisyonları kapatsın. Tekrar stratejiyi başlatana kadar emir iletimi yapmasın .

Böyle bir ihtiyacı karşılayacak kod-komut yazılabilir mi acaba ?

Saygılarımla,
Algoritmik Trading kategorisinde (44 puan) tarafından | 891 kez görüntülendi

2 Cevaplar

3 beğenilme 0 beğenilmeme

Başlangıç bakiyeniz ile GetOverall() değerinizi kıyaslayarak istediğiniz seviyede aksiyon oluşturabilirsiniz.

(63 puan) tarafından
0 0
Teşekkür eder ,İyi çalışmalar Dilerim.
3 beğenilme 0 beğenilmeme

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.

(8,035 puan) tarafından
tarafından yeniden gösterildi
1 0
Çok Teşekkür ederim cevabınız için .
7,696 soru
7,682 cevap
4,466 yorum
11,378 kullanıcı