(self, trade, market: Market = None)
| 661 | client.resolve(cache, 'trades') |
| 662 | |
| 663 | def parse_ws_trade(self, trade, market: Market = None): |
| 664 | # |
| 665 | # { |
| 666 | # E: '1754601477746429', |
| 667 | # T: '1754601477744000', |
| 668 | # a: '5121860761', |
| 669 | # b: '5121861755', |
| 670 | # e: 'trade', |
| 671 | # m: False, |
| 672 | # p: '3870.25', |
| 673 | # q: '0.0008', |
| 674 | # s: 'ETH_USDC_PERP', |
| 675 | # t: 10782547 |
| 676 | # } |
| 677 | # |
| 678 | microseconds = self.safe_integer(trade, 'E') |
| 679 | timestamp = self.parse_to_int(microseconds / 1000) |
| 680 | id = self.safe_string(trade, 't') |
| 681 | marketId = self.safe_string(trade, 's') |
| 682 | market = self.safe_market(marketId, market) |
| 683 | isBuyerMaker = self.safe_bool(trade, 'm') |
| 684 | side = None |
| 685 | takerOrMaker = None |
| 686 | if isBuyerMaker is not None: |
| 687 | takerOrMaker = 'taker' |
| 688 | if isBuyerMaker: |
| 689 | side = 'sell' |
| 690 | else: |
| 691 | side = 'buy' |
| 692 | price = self.safe_string(trade, 'p') |
| 693 | amount = self.safe_string(trade, 'q') |
| 694 | orderId = None |
| 695 | if side == 'buy': |
| 696 | orderId = self.safe_string(trade, 'b') |
| 697 | else: |
| 698 | orderId = self.safe_string(trade, 'a') |
| 699 | return self.safe_trade({ |
| 700 | 'info': trade, |
| 701 | 'id': id, |
| 702 | 'timestamp': timestamp, |
| 703 | 'datetime': self.iso8601(timestamp), |
| 704 | 'symbol': market['symbol'], |
| 705 | 'order': orderId, |
| 706 | 'type': None, |
| 707 | 'side': side, |
| 708 | 'takerOrMaker': takerOrMaker, |
| 709 | 'price': price, |
| 710 | 'amount': amount, |
| 711 | 'cost': None, |
| 712 | 'fee': { |
| 713 | 'currency': None, |
| 714 | 'cost': None, |
| 715 | }, |
| 716 | }, market) |
| 717 | |
| 718 | async def watch_order_book(self, symbol: str, limit: Int = None, params={}) -> OrderBook: |
| 719 | """ |
no test coverage detected