0 beğenilme 0 beğenilmeme
504 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 (81 puan) tarafından | 504 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.

(8,035 puan) tarafından
8,636 soru
8,590 cevap
4,821 yorum
19,790 kullanıcı