Merhabalar;
if(Koşul)
{FX_Alis;}
else if (Koşul)
{FX_Satis;}
else if (Koşul)
{FX_AcigaSatis;}
else if (Koşul)
{FX_AcigaSatisKapama;}
şeklinde kurguladığım ve 1 Dakikalık barlarla çalıştırdığım bir stratejim var. SendOrderSequential - false; WorkWithPermanentSignal ise true durumda.
Burada temel olarak yapmak istediğim, her barda ifli koşulların sadece bir tanesinin tetiklenmesini ve dolayısıyla her barda tek bir FX'li fonksiyonun emir iletmesini sağlayabilmek. Çünkü hem FX fonksiyonlarının içinde hem de IOrderOrder altında, gönderilecek adet, işlem sonucu hesaplamaları ve stratejinin yönün tayin edecek başka kodlar var.
Sorun şu ki; canlı çalıştırdığım stratejinin debug'ını incelediğimde, koşulları birbirine else if ile bağlamış olsam da tek bir bar içerisinde 2 ayrı koşul için de emir gönderdiğini fark ettim:
https://drive.google.com/file/d/1CJjeK0yAaJ_NXEQwMGfMxytXdodI5ouv/view?usp=sharing
Yukarıdaki linkte görebileceğiniz gibi 11:04'te tetiklenen stratejim Long 2. Bölge Alış emriyle girmiş olduğu Short İşlem'i kapatmış. Fakat else if ile bağladığım Short 3. Bölge Açığa Satış Kapama fonksiyonu da aynı bar içerisinde hemen ardından tetiklenmiş. Tetiklenme koşulları doğru ancak bu barı es geçip bir sonraki bar tetiklenmesi gerekiyordu. Zira o zaman Short Satış emri değil, Long Alış emri gönderecek ve adet hesaplarını ona göre yapacaktı.
Bu yapıda nasıl bir yanlışlık yapıyorum? Acaba, emirleri koşullardan sonra başka bir fonksiyonun içinden verdiğim için mi geri dönüp stratejiyi tekrar yukarıdan aşağıya okumaya başlıyor? Ya da stratejinin içine başka bir kod mu eklemeliyim, ne yapmalıyım çözemedim :)
Özet geçmem gerekirse; aynı anda 2 koşul oluştuğunda strateji içindeki akışın şu şekilde olmasını istiyorum:
Koşul1 ----> Emir Gönderimi -----> IOrderOrder -------> Koşul2 --------> Emir Gönderimi --------> IOrderOrder
Teşekkürler..