Skip to content

Commit

Permalink
Merge pull request #107 from AsyncAlgoTrading/synth_cancel
Browse files Browse the repository at this point in the history
fixing cancel bug
  • Loading branch information
timkpaine committed Sep 27, 2020
2 parents 703db75 + fb4ae7a commit f75f090
Show file tree
Hide file tree
Showing 4 changed files with 14 additions and 4 deletions.
4 changes: 2 additions & 2 deletions aat/core/engine/manager/order_entry.py
Original file line number Diff line number Diff line change
Expand Up @@ -62,14 +62,14 @@ async def _onSold(self, strategy, trade: Trade):

# TODO ugly private method

async def _onRejected(self, strategy, order: Order):
async def _onCanceled(self, strategy, order: Order):
'''callback method for if your order fails to execute
Args:
order (Order): the order you attempted to make
'''
# push event to loop
ev = Event(type=Event.Types.REJECTED, target=order)
ev = Event(type=Event.Types.CANCELED, target=order)
self._engine.pushTargetedEvent(strategy, ev)

# synchronize state when engine processes this
Expand Down
2 changes: 1 addition & 1 deletion aat/core/execution/execution.py
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ async def onCancel(self, event):
_, strat = self._pending_orders[order.id]

# TODO ugly private method
await self._manager._onRejected(strat, order)
await self._manager._onCanceled(strat, order)
del self._pending_orders[order.id]

async def onOpen(self, event: Event):
Expand Down
2 changes: 2 additions & 0 deletions aat/core/risk/risk.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ def risk(self, position=None):
# *********************
async def newOrder(self, strategy, order: Order):
# TODO
print('adding order: {}'.format(order))
self._active_orders.append(order) # TODO use strategy
return order, True

Expand Down Expand Up @@ -89,4 +90,5 @@ async def onRejected(self, event: Event, strategy: Optional[EventHandler]): # t

async def onCanceled(self, event: Event, strategy: Optional[EventHandler]): # type: ignore[override]
order: Order = event.target # type: ignore
print('cancelling order: {}'.format(order))
self._active_orders.remove(order)
10 changes: 9 additions & 1 deletion aat/exchange/synthetic/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -159,7 +159,15 @@ async def tick(self, snapshot=False):
while self._pending_cancel_orders:
order = self._pending_cancel_orders.popleft()
self._jumptime(order)
self._orderbooks[order.instrument].cancel(order)

try:
self._orderbooks[order.instrument].cancel(order)
except KeyboardInterrupt:
raise
except BaseException:
continue

yield Event(EventType.CANCEL, order)
await asyncio.sleep(self._sleep)

while self._events:
Expand Down

0 comments on commit f75f090

Please sign in to comment.