Skip to content

Commit

Permalink
update
Browse files Browse the repository at this point in the history
  • Loading branch information
EricWang committed Mar 7, 2017
1 parent d2d64cb commit 6828298
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 36 deletions.
4 changes: 1 addition & 3 deletions rqalpha/mod/simulation/simulation_broker.py
Original file line number Diff line number Diff line change
Expand Up @@ -172,7 +172,5 @@ def _match(self):
self._open_orders = [(a, o) for a, o in self._open_orders if not o._is_final()]

for account, order in final_orders:
if order.status == ORDER_STATUS.REJECTED:
if order.status == ORDER_STATUS.REJECTED or order.status == ORDER_STATUS.CANCELLED:
self._env.event_bus.publish_event(EVENT.ORDER_UNSOLICITED_UPDATE, account, order)
elif order.status == ORDER_STATUS.CANCELLED:
self._env.event_bus.publish_event(EVENT.ORDER_CANCELLATION_PASS, account, order)
33 changes: 14 additions & 19 deletions rqalpha/model/account/future_account.py
Original file line number Diff line number Diff line change
Expand Up @@ -135,19 +135,25 @@ def order_pending_cancel(self, account, order):
pass

def order_cancellation_pass(self, account, order):
self._cancel_order_cal(account, order)

def order_cancellation_reject(self, account, order):
pass

def order_unsolicited_update(self, account, order):
self._cancel_order_cal(account, order)

def _cancel_order_cal(self, account, order):
if self != account:
return
order_book_id = order.order_book_id
position = self.portfolio.positions[order_book_id]
canceled_quantity = order.unfilled_quantity
canceled_value = -order._frozen_price * canceled_quantity * position._contract_multiplier
frozen_margin = self.margin_decider.cal_margin(order_book_id, order.order_book_id, canceled_value)
self._update_order_data(position, order, -canceled_quantity, canceled_value)
position = self.portfolio.positions[order.order_book_id]
rejected_quantity = order.unfilled_quantity
rejected_value = -order._frozen_price * rejected_quantity * position._contract_multiplier
frozen_margin = self.margin_decider.cal_margin(order_book_id, order.side, rejected_value)
self._update_order_data(position, order, -rejected_quantity, rejected_value)
self._update_frozen_cash(order, frozen_margin)

def order_cancellation_reject(self, account, order):
pass

def trade(self, account, trade):
if self != account:
return
Expand Down Expand Up @@ -185,17 +191,6 @@ def trade(self, account, trade):
self._update_market_value(position, bar_dict[order_book_id].close)
self._last_trade_id = trade.exec_id

def order_unsolicited_update(self, account, order):
if self != account:
return
order_book_id = order.order_book_id
position = self.portfolio.positions[order.order_book_id]
rejected_quantity = order.unfilled_quantity
rejected_value = -order._frozen_price * rejected_quantity * position._contract_multiplier
frozen_margin = self.margin_decider.cal_margin(order_book_id, order.side, rejected_value)
self._update_order_data(position, order, -rejected_quantity, rejected_value)
self._update_frozen_cash(order, frozen_margin)

@staticmethod
def _update_holding_by_settle(position, settle_price):
position._prev_settle_price = settle_price
Expand Down
26 changes: 12 additions & 14 deletions rqalpha/model/account/stock_account.py
Original file line number Diff line number Diff line change
Expand Up @@ -134,16 +134,22 @@ def order_pending_cancel(self, account, order):
pass

def order_cancellation_pass(self, account, order):
if self != account:
return
canceled_quantity = order.unfilled_quantity
canceled_value = order._frozen_price * canceled_quantity
self._update_order_data(order, -canceled_quantity, -canceled_value)
self._update_frozen_cash(order, -canceled_value)
self._cancel_order_cal(account, order)

def order_cancellation_reject(self, account, order):
pass

def order_unsolicited_update(self, account, order):
self._cancel_order_cal(account, order)

def _cancel_order_cal(self, account, order):
if self != account:
return
rejected_quantity = order.unfilled_quantity
rejected_value = order._frozen_price * rejected_quantity
self._update_order_data(order, -rejected_quantity, -rejected_value)
self._update_frozen_cash(order, -rejected_value)

def trade(self, account, trade):
if self != account:
return
Expand Down Expand Up @@ -183,14 +189,6 @@ def trade(self, account, trade):

self._last_trade_id = trade.exec_id

def order_unsolicited_update(self, account, order):
if self != account:
return
rejected_quantity = order.unfilled_quantity
rejected_value = order._frozen_price * rejected_quantity
self._update_order_data(order, -rejected_quantity, -rejected_value)
self._update_frozen_cash(order, -rejected_value)

def _update_order_data(self, order, inc_order_quantity, inc_order_value):
position = self.portfolio.positions[order.order_book_id]
if order.side == SIDE.BUY:
Expand Down

0 comments on commit 6828298

Please sign in to comment.