Ben bunu denedim...
Straji içindeki "SendOrderSequential(true);" yerine "SendOrderSequential(true,true);" kullandım..
Dün gece tüm stratejileri (23 adet) durdurdum. Kodu düzenledim yeniden çalıştırdım.
Bu arada 23 hissede portföyümde vardı yani robotlar gündüzden almıştı..
Beklentimiz ne idi : Sabah kaldığı yerden devam edecekti. Eğer ki "sat" emri gelirse satacaktı.. Böylece takip edip manuel satmak zorunda kalmayacaktık..
Sorunumuz ne idi : Strateji durdurulup yeniden çalıştırıldığında "SendOrderSequential(true); kullanılırsa ilk emir "sat" olunca emir iletilmiyor "al" olunca iletiliyor. İlk emir "al" dahi olsa "sat" dahi olsa ne olursa olsun ilk önce hangi koşul gerçekleşirse borsaya emir iletilmesini istiyordum bu sayede elektrik kesintisinde yada kodu yeniden düzenlememiz gerekirse vs. durumlarında strateji kaldığı yerden devam etmeli diye düşünüyordum.
Ne oldu: Seans açılışında sabah saat 10:00 da 23 hisse zaten al pozisyonunun içinde olan tüm hisseleri yeniden satın aldı. Tek tek plan dışı aldıklarımı geri sattım. Sonra test için gün içinde zaten al pozisyonunun içinde olan başka bir hisseye backtest yapıp strateji oluşturdum çalıştır dedim 1 dk sonra al emri gönderdi.. :) Loglar aşağıdadır.
Olması gereken ne idi : Strateji ilk alım veya satım koşulunu beklemeliydi.
"Sat" koşulu gerçekleşirse borsaya emri iletecek, Portföyde satılacak hisse olmadığı için borsa red edecekti.
"al" koşulu gerçekleşirse de zaten alacaktı..
Ama kafadan pozisyon "al" da diye alım yapmamalıdır. (bu iyi mi kötü mü burası tartışılacak başka bir konudur)
Hem bir geri bildirim hem de durumun anlaşılabilir olması adına tane tane yazdım.. :)
Bunun bir çözümü varmı? Saygılarımla
Log:
5.02.2021 14:29:18 :Strateji calistirildi
5.02.2021 14:30:05 :Fonksiyon ismi : OnOrderUpdate, Detay : Emir Gönderildi!
Hesap : 0~00000 Yön : 1 Emir Tipi : PYS
Sembol : XXXX Adet : 160 Fiyat : 0 Emir Id :
5.02.2021 14:30:05 :Fonksiyon ismi : OnOrderUpdate, Detay : Emir Durumu Değişti!
Hesap : 0~00000 Yön : 1 Emir Tipi : PYS Emir Durumu : İletilmeyi Bekliyor
Sembol : XXXX Adet : 160 Fiyat : Emir Id : XXXXXXXXXXX
5.02.2021 14:30:06 :Fonksiyon ismi : OnOrderUpdate, Detay : Emir Durumu Değişti!
Hesap : 0~00000 Yön : 1 Emir Tipi : PYS Emir Durumu : Gerçekleşti
Sembol : XXXX Adet : 160 Fiyat : Emir Id : XXXXXXXXXXX


Ben de çok sayıda strateji kullanıyorum ve program ikinci gün hantallaştığından hepsini kapatıp yeniden açıyorum.
Aynı konu için ben şöyle yapıyorum. Pozisyonu her değiştirdiğimde, yeni pozisyonu bir txt dosyasına yazdırıyorum. Al için 1, sat için 2 yazdırıyorum, Stratejiyi kapatıp yeniden açtığımda ise, oninit fonksiyonunda son pozisyon yönünü not defterinden okuyor.