From c1bdddebbdab088830842037645bb48d423d27c9 Mon Sep 17 00:00:00 2001 From: wtindall1 Date: Sun, 10 Nov 2024 18:48:39 +0000 Subject: [PATCH] Update order regression fix --- Algorithm.Python/UpdateOrderRegressionAlgorithm.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/Algorithm.Python/UpdateOrderRegressionAlgorithm.py b/Algorithm.Python/UpdateOrderRegressionAlgorithm.py index f65af2400c54..b2829edb178a 100644 --- a/Algorithm.Python/UpdateOrderRegressionAlgorithm.py +++ b/Algorithm.Python/UpdateOrderRegressionAlgorithm.py @@ -81,7 +81,7 @@ def on_data(self, data): ticket = self.tickets[-1] if self.time.day > 8 and self.time.day < 14: - if len(ticket.update_requests) == 0 and ticket.status is not OrderStatus.FILLED: + if len(ticket.update_requests) == 0 and self.is_open(ticket): self.log("TICKET:: {0}".format(ticket)) update_order_fields = UpdateOrderFields() update_order_fields.quantity = ticket.quantity + copysign(self.delta_quantity, self.quantity) @@ -89,7 +89,7 @@ def on_data(self, data): ticket.update(update_order_fields) elif self.time.day > 13 and self.time.day < 20: - if len(ticket.update_requests) == 1 and ticket.status is not OrderStatus.FILLED: + if len(ticket.update_requests) == 1 and self.is_open(ticket): self.log("TICKET:: {0}".format(ticket)) update_order_fields = UpdateOrderFields() update_order_fields.limit_price = self.security.price*(1 - copysign(self.limit_percentage_delta, ticket.quantity)) \ @@ -99,7 +99,7 @@ def on_data(self, data): update_order_fields.tag = "Change prices: {0}".format(self.time.day) ticket.update(update_order_fields) else: - if len(ticket.update_requests) == 2 and ticket.status is not OrderStatus.FILLED: + if len(ticket.update_requests) == 2 and self.is_open(ticket): self.log("TICKET:: {0}".format(ticket)) ticket.cancel("{0} and is still open!".format(self.time.day)) self.log("CANCELLED:: {0}".format(ticket.cancel_request)) @@ -126,3 +126,6 @@ def on_order_event(self, orderEvent): else: self.log(orderEvent.to_string()) self.log("TICKET:: {0}".format(ticket)) + + def is_open(self, order_ticket): + return order_ticket.status not in (OrderStatus.FILLED, OrderStatus.CANCELED, OrderStatus.INVALID)