Matriks Destek ve Yardım Platformu

Matriks Ürünleri ile ilgili tüm sorularınız için bizlere buradan ulaşabilirsiniz. Daha önce sorulan soruları ve verilen cevapları ilgili sekmelerden ve arama üzerinden inceleyebilirsiniz. Sağ taraftaki kategoriler üzerinden İlgilendiğiniz özelliklerle ilgili soruları filtreleyebilirsiniz. Soru ve cevapları sosyal medyada paylaşabilirsiniz. Sorduğunuz ve cevapladığınız soruların ve yorumlarınızın aldığı oylar üzerinden puan kazanırsınız. Puan sistemine bağlı kampanyamızla ücretsiz kullanım avantajlarından faydalanabilirsiniz.

1

FillorKill veya GoodTillCancel seçerken neye dikkat etmeliyiz

Soruldu
Görüntülenme
813 görüntülenme
Durum
Cevaplandı

Merhaba,

BuyLimit işlemlerinde Partial fill'ler algo robotlarının işlem yapması için ciddi sorun oluşturuyor. Zira siz 100 tane al diyorsunuz ve bundan sonraki işlemlerinizde (örneğin sat) bu miktar üzerinden olacak ama kısmi doldurma gerçekleşirse sistem hata veriyor.

İki şey sormak istiyorum birincisi. AlgoTrade eğitim PDF'inde SendLimitOrder fonksiyonu aşağıdaki şekilde geçiyor;

SendLimitOrder(Symbol, 100, (OrderSide.Buy), 11.88m, TimeInForce.GoodTillCancel, ChartIcon.Buy)

Ancak Gerçekte TimeInForce.GoodTillCancel yok. Bu çıkartıldı mı (ya da overloaded başka versiyonu var mı)?

İkincisi ise eğer halen kullanabiliyorsak hangisini seçmeliyiz FillorKill mi yoksa GoodTillCancel mı?

Zira FillorKill emri doldurursa sistem güzel ve sorunsuz çalışır. Ama dolduramazsa hiç bir şey olmaz.

GoodTillCancel ise en azınan kısmi alış sağlar ve hiç yoktan iyidir sonucu verir lakin şöyle bir sorun var eğer bu seçilirse bu emir doluncaya kadar bekleyeceğinden bu sırada satmayı gerektirecek bir fiyat değişimi olursa bu emir hali hazırda geçerli olduğundan sat emri devreye girmeyebilir.

 ( SendOrderSequential(true) kullanmak istediğim için GoodTillCancel beni endişelendiriyor )

Kısacası aşağıdaki senaryo için nasıl bir yol takip etmeliyim?

100 tane hisse al. Ama alamadın 50 oldu sorun değil aynı fiyattan başka alabiliyorsan devam et. Diyelim 10 tane daha aldı ve 60 oldu ama bu sırada fiyat değişti ve sat durumu oluştu bu durumda al emrini iptal et ve 60 taneyi satarak al sat döngüsünü bitir.

Paylaş
CevaplaBayrakladüzenlendi · fatihbarutfatihbarut81

1 Cevap

1

Merhaba TimeInForce cikartilmadi ama tanitilmasi gerekiyor, su sekilde yazabilirsiniz: 

SendLimitOrder(Symbol, 100, (OrderSide.Buy), 11.88m, new TimeInForce(TimeInForce.GoodTillCancel));

Calistiginiz kurumun ve borsa bu emir tiplerini destekledigi surece istediginiz sonuca ulasabilirsiniz. FillorKill dediginiz gibi cozum olur, en azindan tam fill alamiyorsa emir iptal edilir. GoodTillCancel ise cozum olmaz, bu daha cok emrin "tarihe kadar gecerli" kismini etkiler, gun sonunda emrin iptal olmamasini saglar.

Sizin bahsettiginiz soruna cozum icin OnOrderUpdate icerisinden miktar takibi yapmaniz gerekir. OnOrderUpdate fonksiyonu emirler her gerceklestiginde tetiklenen cok kullanisli bir fonksiyondur. 

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; //BURADA EMRIN NE KADARININ GERCEKLESTIGINI GOREBILIRIZ
		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");
		}
	}
}

var positionChange = order.OrderQty; satirinda emrin ne kadari gerceklesti gorebilir, bu gerceklesme durumunu strateji icerisinde kullanabiliriz. Ornegin alis yaptik, sizin dediginiz gibi 100 quantity'nin sadece 60'i alindi, bu durumda sat'a gecilirse sat emrini onceden belirlenmis bir rakam ile degil, yazdigim OnOrderUpdate fonksiyonu icerisinden gelen canli miktar ile degistirirsek pozisyonu duruma gore ayarlayabilirsiniz.

BağlantıBayraklaMatt RicksMatriks Destek8.033

Cevabınız

Cevap yazmak için giriş yapın.Giriş yapKayıt ol