MatriksIQ Destek
Matriks Destek
Matriks Web Destek
Matriks Mobile Destek
0 beğenilme 0 beğenilmeme
53 kez görüntülendi
Merhaba

SendMarketOrder(Symbol, SellOrderQuantity, (OrderSide.Sell));

kodu sırasında SellOrderQuantity yi input olarak değil de "O sırada hesapta bulunan o symbol'e ait tüm hisseleri sat" şeklinde vermek istiyorum.

Nasıl yapabilirim?
Algoritmik Trading kategorisinde (40 puan) tarafından | 53 kez görüntülendi

1 cevap

1 beğenilme 0 beğenilmeme

Merhaba, kurumlar portfoy bilgisini anlik olarak veremedikleri icin portfoy'de bulunan butun hisseleri sat islemini algo icerisinden yapamiyoruz.

Fakat bir hisse algo icerisinde kac kere alinmis bunu takip edip, sonra butun alinanlari tek seferde rahatlikla satabilirsiniz.

Bu manuel olarak da yapilabilir ornegin islem yapildikca OnOrderUpdate fonksiyonu ile pozisyonumuzu guncel olarak takip edebiliriz.

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 (realposition == 0)
		{
			SystemPosition = 0;
			Debug("Kar AL / Zarar Durdur tetiklendi");
		}
	}
	if (order.OrdStatus.Obj == OrdStatus.Filled && order.Side.Obj == Side.Sell)
	{
		var positionChange = order.OrderQty;
		realposition -= (int) positionChange;
		Debug("[ONORDERUPDATE]: Pozisyon = " + realposition);
		if (realposition == 0)
		{
			SystemPosition = 0;
			Debug("Kar AL / Zarar Durdur tetiklendi");
		}
	}
}

Ayrica GetPortfolio() fonksiyonu da algo icerisinde yapilan islemleri otomatik olarak tutmaktadir, bu fonksiyonu da kullanabiliriz:

---------------------------------GetPortfolio()---------------------------------
//Algo icerisinde net portfolio durumunu gosterir

IDictionary<string, decimal> portfolio = GetPortfolio();

var positionflag = portfolio.ContainsKey(Symbol) && portfolio[Symbol] != 0;
Debug("current position flag = " + positionflag);
var miktar = portfolio[Symbol];
Debug("miktar " + miktar);

//var manyshares = portfolio.Keys.Count(Symbol);

 

Calisan ornek strateji icin KADEMELI isimli stratejiye bakabilirsiniz.

(2,105 puan) tarafından
166 soru
181 cevap
193 yorum
130 kullanıcı