1 beğenilme 0 beğenilmeme
1,169 kez görüntülendi
Selamlar;

Peki emir gerçekleşmezse aynı emri gerçekleşene kadar göndermesi için nasıl bir ekleme yapmak gerekiyor?

Daha detaylı sormak gerekirse; Binance Futures'ta çift yönlü işlem yapıyorum ve OnDataUptade bölümünde Short ya da Long işlemde olup olmadığını  boolean ile kontrol ediyorum. Yani herhangi bir yönde işlem yaparken, stop olmadan ters yöne bir sinyal gelirse işleme girmemesini sağlıyorum. Örneğin, Long Alış Emri gönderilirse Long = true, Long Satış Emri gönderilirse Long = false olarak değişiyor. Buraya kadar bir problemim yok.

Fakat bazen, "Timestamp for this request was 1000ms ahead of the server's time" diye bir hata alıyorum ve gönderilen emir gerçekleşmiyor.  Emir gerçekleşmese de benim doğrulama durumum false'a döndüğü için pozisyon hala açık olsa da algoritma kapattığını zannediyor ve işler karışıyor.

Bu durumda, vermiş olduğunuz kodu yazdıktan sonra, nasıl bir kod eklemeliyim ki mevcut sembolün pozisyon bilgilerini çeksin ve pozisyonu kapatsın. Pozisyon bilgilerinin nasıl çekileceğini de forumlardan buldum ancak açık olan pozisyonu nasıl kapattırabileceğim ile ilgili bir şey bulamadım. Umarım derdimi anlatabilmişimdir.

İyi çalışmalar..
bir cevap ile ilgili: Emir Reddedilmesi
Algoritmik Trading kategorisinde (271 puan) tarafından | 1,169 kez görüntülendi

1 cevap

2 beğenilme 0 beğenilmeme
En İyi Cevap

Merhaba,

İptal olana emri tekrar göndermek için aşağıdaki gibi bir yapı kurulabilir ancak şuna dikkat etmek gerekir üst üste çok emir göndermek Binance tarafından banlanmanıza sebep olabilir. Stratejiyi çalıştırırken Günlük Emir Gönderim Adedi belirlemeniz uygun olacaktır.

public override void OnOrderUpdate(IOrder order){

	if(order.OrdStatus.Obj== OrdStatus.Rejected){

		var adet=order.OrderQty;

		if(order.Side.Obj==Side.Buy){
			// Emirler sıralı gönderilmesi aktif ise tekrar alış göndermek için sıra değiştiriliyor.
			LastOrderSide.Obj=Side.Sell;
			SendMarketOrder(Symbol,adet,OrderSide.Buy);
			Debug("Alış emri tekrar gönderildi.");
		}else{
			LastOrderSide.Obj=Side.Buy;
			SendMarketOrder(Symbol,adet,OrderSide.Sell);
			Debug("Satış emri tekrar gönderildi.");
		}
	}

}

 

(15,892 puan) tarafından
tarafından seçilmiş
Hoş geldiniz, Matriks Destek Platformu sizlere sorularınızın hızlıca cevaplanması için bir ortam sağlar. 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.



8,636 soru
8,590 cevap
4,821 yorum
19,796 kullanıcı