Merhaba,
bir kaç hafta sonra yeni versiyon gelecek sentetik emir gerçekleştiğinde tetiklenecek methodlar eklendi.
yeni versiyonda daha kolay olacak ama şuan için şöyle bir şey yapılabiir.
al sat koşulları sağlandığında gönderilen emirleri bir listede tutup listede olmayan bir emir gerçekleştiğinde sentetik emir tetiklendiği varsayarak işlem yapabiliriz.
Sentetik emirin tetiklendiğini OnOrderUpdate() methodunda aşağıdaki gibi kontrol edip bir değişkene o anki anın üzerinde istenen süre eklenebilir örnekte 10DK ekledim.
daha sonra OnTimer methodunda 1 saniyede bir kontrol edilerek şuanki zamanın üzerine 10DK eklediğimiz zamana eşit ya da büyük olduğu durumda StratejiAktifMI değişkenini true yapmamız yeterli olur.
public override void OnInit()
{
AddSymbol(Symbol, SymbolPeriod);
WorkWithPermanentSignal(true);
SendOrderSequential(true, Side.Buy);
SetTimerInterval(1);
}
List<string> orderIDList = new List<string>();
bool StratejiAktifMI = true;
public override void OnDataUpdate(BarDataEventArgs barData)
{
if (StratejiAktifMI)
{
// Alış
if (CrossAbove(tott.Mov, tott.OttUp))
{
var _orderID = SendMarketOrder(Symbol, BuyOrderQuantity, OrderSide.Buy);
orderIDList.Add(_orderID);
}
}
}
DateTime zaman;
public override void OnOrderUpdate(IOrder order)
{
if (order.OrdStatus.Obj == OrdStatus.Filled)
{
if (!orderIDList.Contains(order.CliOrdID))
{
Debug("Sentetik emir tetiklendi");
StratejiAktifMI=false;
zaman=DateTime.Now.AddMinutes(10);
}
}
}
public override void OnTimer()
{
if(DateTime.Now>=zaman){
Debug("Zaman doldu");
StratejiAktifMI=true;
}
}