0 beğenilme 0 beğenilmeme
677 kez görüntülendi
IQ dokümanında ve intellisense içinde bulamadım başlıkta belirttiğimi. Alım emrini verdikten 2 saat sonra emir gerçekleşmezse iptal edilmesini istiyorum bunu kodlamak mümkün mü? Mümkünse nasıl? Şimdiden teşekkürler.
Algoritmik Trading kategorisinde (250 puan) tarafından | 677 kez görüntülendi

1 cevap

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

Merhaba, evet kurum ve borsa kabul ettigi surece mumkun, yalniz saatlik degil gunluk yapilabiliyor bildigim kadariyla.

Saatlik iptal islemini kodlayarak yapabilirsiniz.

Bunu 2 saat icinde iptal edilmesini istediginiz emrin OrderID'sini tutarak yapabilrsiniz.

Emrin OrderID'sini almak icin ornek:

OrderID = SendLimitOrder(Symbol, Quantity, OrderSide.Buy, Price);

id'sini aldiginiz emri iptal etmek icin:

SendCancelOrder(OrderID);

Geriye sadece sure tutmak kaliyor, bunu timespan (C# timespan diye search ederseniz web'de genis bilgi bulunmakta) ile de yapabilirsiniz asagida yazdigim sekilde de:

TimeStamp = DateTime.Now.TimeOfDay.Hours * 3600 + DateTime.Now.TimeOfDay.Minutes * 60 + DateTime.Now.TimeOfDay.Seconds;

Bu satiri emri gonderdiginiz satirin hemen altina yazin, emrin gonderildigi zamani tutacaktir.

Daha sonra 2 saat gecti mi diye kontrol edip, gectiyse iptal etmek icin(gun degisiminde calismayacaktir):

if ((DateTime.Now.TimeOfDay.Hours * 3600 + DateTime.Now.TimeOfDay.Minutes * 60 + DateTime.Now.TimeOfDay.Seconds) >= (TimeStamp + 2*60*60))
SendCancelOrder(OrderID);

Emir gerceklestiyse zaten bu OrderID'yi bulamayacagindan iptal edemeyecektir. (kesin emin olmak isterim derseniz o zaman emrin gerceklesip gerceklesmedigini de OnOrderUpdate fonksiyonu icerisinden takip etmeniz gerekir)

(8,035 puan) tarafından
tarafından seçilmiş
8,636 soru
8,590 cevap
4,821 yorum
19,785 kullanıcı