+ @property
+ def filled_amount(self):
+ filled_amount = 0
+ for order in self.orders:
+ filled_amount += order.filled_amount
+ return filled_amount
+
+ def update_order(self, order, tick):
+ new_order = None
+ if tick in [0, 1, 3, 4, 6]:
+ print("{}, tick {}, waiting".format(order, tick))
+ elif tick == 2:
+ self.prepare_order(compute_value=lambda x, y: (x[y] + x["average"]) / 2)
+ new_order = self.orders[-1]
+ print("{}, tick {}, cancelling and adjusting to {}".format(order, tick, new_order))
+ elif tick ==5:
+ self.prepare_order(compute_value=lambda x, y: (x[y]*2 + x["average"]) / 3)
+ new_order = self.orders[-1]
+ print("{}, tick {}, cancelling and adjusting to {}".format(order, tick, new_order))
+ elif tick >= 7:
+ if tick == 7:
+ print("{}, tick {}, fallbacking to market value".format(order, tick))
+ if (tick - 7) % 3 == 0:
+ self.prepare_order(compute_value="default")
+ new_order = self.orders[-1]
+ print("{}, tick {}, market value, cancelling and adjusting to {}".format(order, tick, new_order))
+
+ if new_order is not None:
+ order.cancel()
+ new_order.run()
+