Add fill/update/cancel times to order object
LastFillTime is updated on each partial/fill order event LastUpdateTime is updated on each submitted order event w/ update count > 0 CancelTime is updated on canceled order events Also fixes bug in regression algorithm where it used Time instead of UtcTime for creating the SubmitOrderRequest object.
This commit is contained in:
@@ -85,7 +85,7 @@ class UpdateOrderRegressionAlgorithm(QCAlgorithm):
|
||||
if orderType == OrderType.Limit:
|
||||
limitPrice = d.Decimal(1 + self.limit_percentage)*data["SPY"].High if not isLong else d.Decimal(1 - self.limit_percentage)*data["SPY"].Low
|
||||
|
||||
request = SubmitOrderRequest(orderType, self.security.Symbol.SecurityType, "SPY", self.quantity, stopPrice, limitPrice, self.Time, str(orderType))
|
||||
request = SubmitOrderRequest(orderType, self.security.Symbol.SecurityType, "SPY", self.quantity, stopPrice, limitPrice, self.UtcTime, str(orderType))
|
||||
ticket = self.Transactions.AddOrder(request)
|
||||
self.tickets.append(ticket)
|
||||
|
||||
@@ -116,6 +116,20 @@ class UpdateOrderRegressionAlgorithm(QCAlgorithm):
|
||||
|
||||
|
||||
def OnOrderEvent(self, orderEvent):
|
||||
order = self.Transactions.GetOrderById(orderEvent.OrderId)
|
||||
|
||||
#order cancelations update CanceledTime
|
||||
if order.Status == OrderStatus.Canceled and orderEvent.CanceledTime != orderEvent.UtcTime:
|
||||
raise ValueError("Expected canceled order CanceledTime to equal canceled order event time.")
|
||||
|
||||
#fills update LastFillTime
|
||||
if (order.Status == OrderStatus.Filled or order.Status == OrderStatus.PartiallyFilled) and order.LastFillTime != orderEvent.UtcTime:
|
||||
raise ValueError("Expected filled order LastFillTime to equal fill order event time.")
|
||||
|
||||
#updates have a status of submitted and the created time will be different from the event time
|
||||
if order.Status == OrderStatus.Submitted and order.Time != orderEvent.UtcTime and order.LastUpdateTime != orderEvent.UtcTime:
|
||||
raise ValueError("Expected updated order LastUpdateTime to equal submitted update order event time")
|
||||
|
||||
if orderEvent.Status == OrderStatus.Filled:
|
||||
self.Log("FILLED:: {0} FILL PRICE:: {1}".format(self.Transactions.GetOrderById(orderEvent.OrderId), orderEvent.FillPrice))
|
||||
else:
|
||||
|
||||
Reference in New Issue
Block a user