|
17 | 17 | from tigeropen.common.consts import OrderStatus |
18 | 18 | from tigeropen.common.consts.params import P_SDK_VERSION, P_SDK_VERSION_PREFIX |
19 | 19 | from tigeropen.common.consts.push_destinations import QUOTE, QUOTE_DEPTH, QUOTE_FUTURE, QUOTE_OPTION, TRADE_ASSET, \ |
20 | | - TRADE_ORDER, TRADE_POSITION, TRADE_TICK |
| 20 | + TRADE_ORDER, TRADE_POSITION, TRADE_TICK, TRADE_TRANSACTION |
21 | 21 | from tigeropen.common.consts.push_subscriptions import SUBSCRIPTION_QUOTE, SUBSCRIPTION_QUOTE_DEPTH, \ |
22 | 22 | SUBSCRIPTION_QUOTE_OPTION, SUBSCRIPTION_QUOTE_FUTURE, SUBSCRIPTION_TRADE_ASSET, SUBSCRIPTION_TRADE_POSITION, \ |
23 | | - SUBSCRIPTION_TRADE_ORDER, SUBSCRIPTION_TRADE_TICK |
| 23 | + SUBSCRIPTION_TRADE_ORDER, SUBSCRIPTION_TRADE_TICK, SUBSCRIPTION_TRADE_TRANSACTION |
24 | 24 | from tigeropen.common.consts.push_types import RequestType, ResponseType |
25 | 25 | from tigeropen.common.consts.quote_keys import QuoteChangeKey, QuoteKeyType |
26 | 26 | from tigeropen.common.exceptions import ApiException |
@@ -97,6 +97,7 @@ def __init__(self, host, port, use_ssl=True, connection_timeout=120, heartbeats= |
97 | 97 | self.asset_changed = None |
98 | 98 | self.position_changed = None |
99 | 99 | self.order_changed = None |
| 100 | + self.transaction_changed = None |
100 | 101 | self.connect_callback = None |
101 | 102 | self.disconnect_callback = None |
102 | 103 | self.subscribe_callback = None |
@@ -273,6 +274,16 @@ def on_message(self, frame): |
273 | 274 | items.append((camel_to_underline(key), value)) |
274 | 275 | if items: |
275 | 276 | self.order_changed(account, items) |
| 277 | + elif response_type == str(ResponseType.SUBSCRIBE_TRADE_EXECUTION.value): |
| 278 | + data = json.loads(body) |
| 279 | + if self.transaction_changed: |
| 280 | + if 'account' in data: |
| 281 | + account = data.pop('account', None) |
| 282 | + items = [] |
| 283 | + for key, value in data.items(): |
| 284 | + items.append((camel_to_underline(key), value)) |
| 285 | + if items: |
| 286 | + self.transaction_changed(account, items) |
276 | 287 | elif response_type == str(ResponseType.GET_SUBSCRIBE_END.value): |
277 | 288 | if self.subscribe_callback: |
278 | 289 | self.subscribe_callback(headers.get('destination'), json.loads(body)) |
@@ -345,6 +356,20 @@ def unsubscribe_order(self, id=None): |
345 | 356 | """ |
346 | 357 | self._handle_trade_unsubscribe(TRADE_ORDER, SUBSCRIPTION_TRADE_ORDER, sub_id=id) |
347 | 358 |
|
| 359 | + def subscribe_transaction(self, account=None): |
| 360 | + """ |
| 361 | + 订阅订单执行明细 |
| 362 | + :return: |
| 363 | + """ |
| 364 | + return self._handle_trade_subscribe(TRADE_TRANSACTION, SUBSCRIPTION_TRADE_TRANSACTION, account) |
| 365 | + |
| 366 | + def unsubscribe_transaction(self, id=None): |
| 367 | + """ |
| 368 | + 退订订单执行明细 |
| 369 | + :return: |
| 370 | + """ |
| 371 | + self._handle_trade_unsubscribe(TRADE_TRANSACTION, SUBSCRIPTION_TRADE_TRANSACTION, sub_id=id) |
| 372 | + |
348 | 373 | def subscribe_quote(self, symbols, quote_key_type=QuoteKeyType.TRADE, focus_keys=None): |
349 | 374 | """ |
350 | 375 | 订阅行情更新 |
|
0 commit comments