Bir cok sekilde yapabilirsiniz. Asagida bir ornek:
int TimeSnapshot = 1;
public override void OnTimer()
{
var datetimeNow = DateTime.Now;
if(TimeSnapshot = 1)
{
var datetimeLater = DateTime.Now + new TimeSpan(0, 0, 5);
TimeSnapshot = 0;
}
...
if(datetimeNow>=datetimeLater)
{
...
TimeSnapshot = 1;
}
}
Faydali olabilecek debug satirlari:
//datetimeNow.ToString("yyyy-MM-dd HH:mm:ss.fff");
string printMS_1 = datetimeNow.ToString("HH:mm:ss.fff");
Debug(printMS_1);
TimeSpan diff = datetimeLater - datetimeNow;
int printMS_2 = (int) diff.TotalMilliseconds;
Debug(printMS_2);
Gerceklesen emir piyasa emri ise basitlestirmek adina close'a esit olarak alabilirsiniz. Bunun disinda OnOrderUpdate fonksiyonunu kullanmaniz gerekir. Ornek:
public override void OnOrderUpdate(IOrder order)
{
if (order.OrdStatus.Obj == OrdStatus.Filled && order.Side.Obj == Side.Buy)
{
LastBuyOrderPrice = order.LastPx;
Debug("Buy Order filled @ " + LastBuyOrderPrice);
CloseAllQuantity += order.FilledQty;
Debug("OnorderUpdate: IN LONG POSITION. Position = " + CloseAllQuantity);
}
if (order.OrdStatus.Obj == OrdStatus.Filled && order.Side.Obj == Side.Sell)
{
LastSellOrderPrice = order.LastPx;
Debug("Sell Order filled @ " + LastSellOrderPrice);
CloseAllQuantity -= order.FilledQty;
Debug("OnorderUpdate: SOLD POSITION. Position = " + CloseAllQuantity);
}
}