Stratejim 60 dakikalık barda çalışıyor. Sinyal oluştuğunda emir ilk olarak limitli olarak gönderiliyor, 10 dakika içinde gerçekleşmezse kalan miktar piyasa emrine çevriliyor. Yani teoride olması gereken bu. Fakat on order update fonksiyonu limitli emrin gerçekleştiğini viopda yakalayamıyor (bitmexde yakalıyor) ve emir aslında gerçekleşmiş olmasına rağmen 10 dakika sonra tekrar gönderiyor. Bu da aynı yöne iki kat fazla pozisyon açmama neden oluyor.
Konuyla ilgili olabilicek şeyleri aşağıya ekledim.
Stratejide ilgili bölümler:
//kalan, global değişken olarak tanımlı.
public override void OnDataUpdate(BarDataCurrentValues barDataCurrentValues)
//// işlemler
Task.Run(async () =>
{
await Task.Delay(TimeSpan.FromMinutes(Bekleme_Dakika));
if (kalan > 0)
{
SendCancelOrder(orderID);
SendMarketOrder(Symbol, kalan, OrderSide.Sell);
Debug("Piyasa fiyatindan gonderilen miktar : " + kalan);
}
});
Debug("Bardata Kalan : " + kalan);
public override void OnOrderUpdate(IOrder order)
{
kalan = order.LeavesQty;
Debug("Onupdate Kalan : " + kalan);
}
Debug alanındaki yazılar:
5.11.2020 09:30:00.516 :Bardata Kalan : 0
5.11.2020 10:00:00.396 :Bardata Kalan : 0
5.11.2020 11:00:00.539 :00000063740170800411 id'li 1289,75 fiyattan 2 adet alış emri gönderildi. 10 dakika icerisinde gerceklesmeyen miktar PIYASA emrine donusturulecektir.
5.11.2020 11:00:00.563 :Bardata Kalan : 0
5.11.2020 11:00:05.058 :Onupdate Kalan : 2
5.11.2020 11:00:06.407 :Onupdate Kalan : 2
5.11.2020 11:10:00.523 :Piyasa fiyatindan gonderilen miktar : 2
5.11.2020 11:10:00.952 :Onupdate Kalan : 2
5.11.2020 11:10:02.040 :Onupdate Kalan : 0
5.11.2020 11:10:02.059 :Onupdate Kalan : 0
5.11.2020 12:00:00.005 :Bardata Kalan : 0
5.11.2020 13:00:01.011 :Bardata Kalan : 0
Log ekranında yazanlar:
5.11.2020 00:24:59 :Strateji calistirildi
5.11.2020 11:00:00 :Fonksiyon ismi : OnOrderUpdate, Detay : Emir Gönderildi!
Hesap : Yön : 1 Emir Tipi : LMT
Sembol : FXU030N1 Adet : 2 Fiyat : 1289,75 Emir Id :
5.11.2020 11:00:05 :Fonksiyon ismi : OnOrderUpdate, Detay : Emir Durumu Değişti!
Hesap : Yön : 1 Emir Tipi : LMT Emir Durumu : İletilmeyi Bekliyor
Sembol : FXU030N1 Adet : 2 Fiyat : 1289.75 Emir Id : 73562777
5.11.2020 11:00:06 :Fonksiyon ismi : OnOrderUpdate, Detay : Emir Durumu Değişti!
Hesap : Yön : 1 Emir Tipi : LMT Emir Durumu : Bekliyor //Tam bu noktada emir gerçekleşmiş
Sembol : FXU030N1 Adet : 2 Fiyat : 1289.75 Emir Id : 73562777
5.11.2020 11:10:00 :Fonksiyon ismi : OnOrderUpdate, Detay : İptal Emri Gönderildi!
Hesap : Yön : 1 Emir Tipi : LMT Sembol : FXU030N1 Adet : 2 Fiyat : 1289,75 Emir Id : 73562777 ClOrdOd : 00000063740170800411
5.11.2020 11:10:00 :Fonksiyon ismi : OnOrderUpdate, Detay : Emir Gönderildi!
Hesap : Yön : 1 Emir Tipi : PYS
Sembol : FXU030N1 Adet : 2 Fiyat : 0 Emir Id :
5.11.2020 11:10:00 :Fonksiyon ismi : OnOrderUpdate, Detay : Emir Durumu Değişti!
Hesap : Yön : 1 Emir Tipi : PYS Emir Durumu : İletilmeyi Bekliyor
Sembol : FXU030N1 Adet : 2 Fiyat : Emir Id : 73563056
5.11.2020 11:10:02 :Fonksiyon ismi : OnOrderUpdate, Detay : Emir Durumu Değişti!
Hesap : Yön : 1 Emir Tipi : PYS Emir Durumu : Gerçekleşti
Sembol : FXU030N1 Adet : 2 Fiyat : Emir Id : 73563056
5.11.2020 11:10:02 :Fonksiyon ismi : OnOrderUpdate, Detay : Emir Durumu Değişti!
Hesap : Yön : 1 Emir Tipi : LMT Emir Durumu : Gerçekleşti //Piyasa emri gerçekleşince limitli emrinde gerçekleştiğini burada farkediyor.
Sembol : FXU030N1 Adet : 2 Fiyat : 1289.75 Emir Id : 73562777
Hesap gerçekleşen işlemler ekran görüntüsü:
Limitli emir 11.00.06 da gerçekleşmiş. Aracı kurumumu arayıp, oradan da teyit ettim.
Viopda limitli emirin verilen süre içinde gerçekleşip gerçekleşmediğini, gerçekleşmediyse kalan miktarı nasıl öğrenebilirim?