0 beğenilme 0 beğenilmeme
597 kez görüntülendi
Merhabalar, öncelikle emeklerinizden ve ortaya çıkardığınız bu üründen dolayı tüm matriks ekibini tebrik ediyorum.

Benim sorum şu; Saatlik periyotta çalışan bir stratejide saat 18 de tetiklenme sonucu oluşan alım ve satımlarda  "SendMarketOrder()" emri iletiliyor fakat piyasdan emir olduğu için sanırım iptal ediliyor. Seans içinde sorun olmuyor ama saat 18 barının kapanmasından sonra tetiklendiği için emir iptali oluyor. Bunun çözümü konusunda yardımlarınızı talep ediyorum. Teşekkür Ederim.
Algoritmik Trading kategorisinde (82 puan) tarafından | 597 kez görüntülendi
0 0
Emir aracı kuruluş tarafından saat 18:00 dan sonra iptal ediliyor olabilir. Emir gönderildikten hemen sonra mı kontrol ediyorsunuz yoksa 15 20 dakika sonra mı?

1 cevap

0 beğenilme 0 beğenilmeme
Merhaba,

Hisse tarafında, son barlar sorunludur. O bar içinde üretilen emir, sonraki bir fiyat hareketi olduğu anda gönderileceği için, kapanış seansının bitiminde gönderilir.

Bu durumda, eğer alıcılar fazla ise, emriniz pasife kalacak ya da iptal edilecektir.

Buna pratik 2 çözümdem birisi şudur:

Emrin geçici sinyal ile 18 barı kapanmadan biraz önce gönderilmesi ya da, sabaha bırakılacak iekilde zamansal sınır konulması.

Kod yazarak halledilmesi gerektiği için, zaman alacak bir işlevdir.

Siz, dilerseniz üzerinde çalışın.

Arkadaşlar da, örnek bir strateji hazırlayacaklar.

İyi çalışmalar
(12,790 puan) tarafından
0 0
Cevabınız için teşekkür ederim, Peki gün boyu saat başı alınan sinyal ile işlem yapılıyor iken saat 17:55 de geçici sinyal ile bir emri göndermek istersem ek olarak nasıl bir kod yazmam gerekir.
2 0

Strateji içinde değişken tanımlamaların olduğu bölüme:

bool isFired = false;

OnInit bloğu içine:

SetTimerInterval(10); // **** Timer 10 saniyelik periyotlarda tetikleniyor.

OnTimer bloğu:

public override void OnTimer()
{
    if (!isFired && DateTime.Now.Hour == 17 && DateTime.Now.Minute >= 55) {
        // 17:55'ten sonra tetiklenir.
        SendMarketOrder(Symbol, 1, OrderSide.Buy);
        isFired = true;
    }
}

Strateji her gün durdurulup çalıştırılıyor ise uygundur. Backtest yapılamaz.

Açıkçası üzerine biraz daha düşülürse seans kapanmadan 5-10 saniye öncesine kadar iletim sağlanabilir.

2 0

Cevap için teşekkürler. Programı çok kasmak istemiyorum Timer ile. Fakat bu gün kapanışta çözümün aslında çok basit olduğunu gördüm . saat 18 den sonraki alım ve satımları

SendMarketOrder(HisseAdi, Position, (OrderSide.Buy));

Yerine 

SendLimitOrder(HisseAdi, Position, (OrderSide.Buy), HisseninAnlikFiyati);

Şeklinde gönderildiğinde işlemde sorun çıkmıyor. 

SendMarketOrder piyasadan gönderdiği için  kapanış tavan fiyatında kalıp iptal ediliyordu.

0 0
Merhaba, bu çözüm sorunu çözdü mü? Bu satır haricinde anlık fiyat vs için kod içine başka ne yazmalıyız?
7,509 soru
7,511 cevap
4,405 yorum
8,750 kullanıcı