|
36 | 36 | from nautilus_trader.adapters.bybit.common.enums import BybitTriggerType
|
37 | 37 | from nautilus_trader.adapters.bybit.common.enums import BybitWsOrderRequestMsgOP
|
38 | 38 | from nautilus_trader.adapters.bybit.common.parsing import parse_bybit_delta
|
| 39 | +from nautilus_trader.adapters.bybit.common.parsing import parse_str_to_raw |
39 | 40 | from nautilus_trader.adapters.bybit.endpoints.trade.amend_order import BybitAmendOrderPostParams
|
40 | 41 | from nautilus_trader.adapters.bybit.endpoints.trade.batch_amend_order import BybitBatchAmendOrderPostParams
|
41 | 42 | from nautilus_trader.adapters.bybit.endpoints.trade.batch_cancel_order import BybitBatchCancelOrderPostParams
|
@@ -801,24 +802,26 @@ class BybitWsAccountWalletCoin(msgspec.Struct):
|
801 | 802 |
|
802 | 803 | def parse_to_account_balance(self) -> AccountBalance:
|
803 | 804 | currency = Currency.from_str(self.coin)
|
804 |
| - total = Decimal(self.walletBalance) |
805 |
| - locked = Decimal(self.locked) # TODO: Locked only valid for Spot |
806 |
| - free = total - locked |
| 805 | + |
| 806 | + total_raw = parse_str_to_raw(self.walletBalance) |
| 807 | + locked_raw = parse_str_to_raw(self.locked) # TODO: Locked only valid for Spot |
| 808 | + free_raw = total_raw - locked_raw |
807 | 809 |
|
808 | 810 | return AccountBalance(
|
809 |
| - total=Money(total, currency), |
810 |
| - locked=Money(locked, currency), |
811 |
| - free=Money(free, currency), |
| 811 | + total=Money.from_raw(total_raw, currency), |
| 812 | + locked=Money.from_raw(locked_raw, currency), |
| 813 | + free=Money.from_raw(free_raw, currency), |
812 | 814 | )
|
813 | 815 |
|
814 | 816 | def parse_to_margin_balance(self) -> MarginBalance:
|
815 |
| - self.totalPositionIM = self.totalPositionIM if self.totalPositionIM != "" else "0" |
816 |
| - self.totalPositionMM = self.totalPositionMM if self.totalPositionMM != "" else "0" |
817 |
| - currency: Currency = Currency.from_str(self.coin) |
| 817 | + currency = Currency.from_str(self.coin) |
| 818 | + |
| 819 | + initial_raw = parse_str_to_raw(self.totalPositionIM) |
| 820 | + maintenance_raw = parse_str_to_raw(self.totalPositionMM) |
818 | 821 |
|
819 | 822 | return MarginBalance(
|
820 |
| - initial=Money(Decimal(self.totalPositionIM), currency), |
821 |
| - maintenance=Money(Decimal(self.totalPositionMM), currency), |
| 823 | + initial=Money.from_raw(initial_raw, currency), |
| 824 | + maintenance=Money.from_raw(maintenance_raw, currency), |
822 | 825 | )
|
823 | 826 |
|
824 | 827 |
|
|
0 commit comments