async def get_position_margin_change_history( self, pair: Pair, limit: int = None, type: int = None, start_tmstmp_ms: int = None, end_tmstmp_ms: int = None, recv_window_ms: int = None) -> dict: params = CryptoXLibClient._clean_request_params({ "symbol": map_pair(pair), "limit": limit, "type": type, "startTime": start_tmstmp_ms, "endTime": end_tmstmp_ms, "recvWindow": recv_window_ms, "timestamp": self._get_current_timestamp_ms() }) return await self._create_get( "positionMargin/history", params=params, headers=self._get_header(), signed=True, api_variable_path=BinanceUSDSMFuturesClient.FAPI_V1)
async def create_order(self, product_id: str, order_type: enums.OrderType, order_side: enums.OrderSide, quantity: str, price: str, client_order_id: str = None) -> dict: data = CryptoXLibClient._clean_request_params({ "product_id": int(product_id), "price": price, "quantity": quantity, "order_type": order_type.value, "side": order_side.value, "client_order_id": client_order_id }) return await self._create_post("orders", data=data, headers=self._get_headers(), signed=True)
async def get_income_history(self, pair: Pair = None, limit: int = None, income_type: enums.IncomeType = None, start_tmstmp_ms: int = None, end_tmstmp_ms: int = None, recv_window_ms: Optional[int] = None) -> dict: params = CryptoXLibClient._clean_request_params({ "limit": limit, "startTime": start_tmstmp_ms, "endTime": end_tmstmp_ms, "timestamp": self._get_current_timestamp_ms(), "recvWindow": recv_window_ms }) if pair is not None: params['symbol'] = map_pair(pair) if income_type is not None: params['incomeType'] = income_type.value return await self._create_get( "income", params=params, headers=self._get_header(), signed=True, api_variable_path=BinanceUSDSMFuturesClient.FAPI_V1)
async def get_trades(self, pair: Pair, size: str = None) -> dict: params = CryptoXLibClient._clean_request_params({ "symbol": map_pair(pair), "size": size }) return await self._create_get("market/trades", params = params, signed = True)
async def get_order_book(self, pair: Pair, depth: str = None) -> dict: params = CryptoXLibClient._clean_request_params({ "symbol": map_pair(pair), "size": depth, }) return await self._create_get("market/depth", params = params)
async def get_global_long_short_account_ratio( self, pair: Pair, interval: enums.Interval, limit: int = None, start_tmstmp_ms: int = None, end_tmstmp_ms: int = None) -> dict: params = CryptoXLibClient._clean_request_params({ "symbol": map_pair(pair), "period": interval.value, "limit": limit, "startTime": start_tmstmp_ms, "endTime": end_tmstmp_ms }) return await self._create_get( "globalLongShortAccountRatio", headers=self._get_header(), params=params, api_variable_path=BinanceUSDSMFuturesClient.FUTURES)
async def update_isolated_position_margin( self, pair: Pair, quantity: str, type: int, position_side: enums.PositionSide = None, recv_window_ms: int = None) -> dict: params = CryptoXLibClient._clean_request_params({ "symbol": map_pair(pair), "amount": quantity, "type": type, "recvWindow": recv_window_ms, "timestamp": self._get_current_timestamp_ms() }) if position_side is not None: params['positionSide'] = position_side.value return await self._create_post( "positionMargin", params=params, headers=self._get_header(), signed=True, api_variable_path=BinanceUSDSMFuturesClient.FAPI_V1)
async def get_single_fund(self, currency: str) -> dict: params = CryptoXLibClient._clean_request_params({ "currency": currency.lower(), "nonce": self._get_current_timestamp_ms() }) return await self._create_post("fund/mainAccount", params = params, signed = True)
async def get_cont_contract_candlesticks( self, pair: Pair, interval: enums.Interval, contract_type: enums.ContractType, limit: int = None, start_tmstmp_ms: int = None, end_tmstmp_ms: int = None) -> dict: params = CryptoXLibClient._clean_request_params({ "pair": map_pair(pair), "contractType": contract_type.value, "limit": limit, "startTime": start_tmstmp_ms, "endTime": end_tmstmp_ms }) if interval: params['interval'] = interval.value return await self._create_get( "continuousKlines", params=params, api_variable_path=BinanceUSDSMFuturesClient.FAPI_V1)
async def get_trades(self, pair: Pair, limit: int = None) -> dict: params = CryptoXLibClient._clean_request_params({ "symbol": map_pair(pair), "limit": limit }) return await self._create_get("trades", params = params, api_variable_path = BinanceUSDSMFuturesClient.FAPI_V1)
async def get_funds(self) -> dict: params = CryptoXLibClient._clean_request_params( {"nonce": self._get_current_timestamp_ms()}) return await self._create_post("fund/allAccount", params=params, signed=True)
async def get_ticker(self, pair: Pair) -> dict: params = CryptoXLibClient._clean_request_params( {"symbol": map_pair(pair)}) return await self._create_get("market/ticker", params=params, signed=True)
async def get_account(self, recv_window_ms: Optional[int] = None) -> dict: params = CryptoXLibClient._clean_request_params({ "recvWindow": recv_window_ms, "timestamp": self._get_current_timestamp_ms() }) return await self._create_get("account", headers = self._get_header(), params = params, signed = True, api_variable_path = BinanceUSDSMFuturesClient.FAPI_V2)
async def cancel_all_orders(self, pair: Pair) -> dict: params = CryptoXLibClient._clean_request_params({ "symbol": map_pair(pair), "nonce": self._get_current_timestamp_ms() }) return await self._create_post("trade/cancelAllOrder", params = params, signed = True)
async def get_account_trades(self, pair: Pair, limit: int = None, from_id: int = None, start_tmstmp_ms: int = None, end_tmstmp_ms: int = None, recv_window_ms: Optional[int] = None) -> dict: params = CryptoXLibClient._clean_request_params({ "symbol": map_pair(pair), "limit": limit, "fromId": from_id, "startTime": start_tmstmp_ms, "endTime": end_tmstmp_ms, "timestamp": self._get_current_timestamp_ms(), "recvWindow": recv_window_ms }) return await self._create_get( "userTrades", params=params, headers=self._get_header(), signed=True, api_variable_path=BinanceUSDSMFuturesClient.FAPI_V1)
async def get_historical_trades(self, pair: Pair, limit: int = None, from_id: int = None) -> dict: params = CryptoXLibClient._clean_request_params({ "symbol": map_pair(pair), "limit": limit, "fromId": from_id }) return await self._create_get("historicalTrades", params = params, headers = self._get_header(), api_variable_path = BinanceUSDSMFuturesClient.FAPI_V1)
async def get_commission_rate(self, pair: Pair, recv_window_ms: Optional[int] = None) -> dict: params = CryptoXLibClient._clean_request_params({ "symbol": map_pair(pair), "timestamp": self._get_current_timestamp_ms(), "recvWindow": recv_window_ms }) return await self._create_get("commissionRate", params = params, headers = self._get_header(), signed = True, api_variable_path = BinanceUSDSMFuturesClient.FAPI_V1)
async def get_all_open_orders(self, pair: Pair, recv_window_ms: int = None) -> dict: params = CryptoXLibClient._clean_request_params({ "symbol": map_pair(pair), "recvWindow": recv_window_ms, "timestamp": self._get_current_timestamp_ms() }) return await self._create_get("openOrders", params = params, headers = self._get_header(), signed = True, api_variable_path = BinanceUSDSMFuturesClient.FAPI_V1)
async def get_position_type(self, recv_window_ms: int = None) -> dict: params = CryptoXLibClient._clean_request_params({ "recvWindow": recv_window_ms, "timestamp": self._get_current_timestamp_ms() }) return await self._create_get("positionSide/dual", headers = self._get_header(), params = params, signed = True, api_variable_path = BinanceUSDSMFuturesClient.FAPI_V1)
async def get_candlesticks(self, pair: Pair, interval: enums.CandelstickInterval, size: str = None) -> dict: params = CryptoXLibClient._clean_request_params({ "symbol": map_pair(pair), "ktype": interval.value, "size": size }) return await self._create_get("market/kline", params = params, signed = True)
async def get_orders(self, pair: Pair, order_ids: List[str]) -> dict: params = CryptoXLibClient._clean_request_params({ "symbol": map_pair(pair), "orderIds": ",".join(order_ids), "nonce": self._get_current_timestamp_ms() }) return await self._create_post("trade/multiOrderInfo", params = params, signed = True)
async def get_order(self, pair: Pair, order_id: str) -> dict: params = CryptoXLibClient._clean_request_params({ "symbol": map_pair(pair), "orderId": order_id, "nonce": self._get_current_timestamp_ms() }) return await self._create_post("trade/orderInfo", params = params, signed = True)
async def auto_cancel_orders(self, pair: Pair, countdown_time_ms: int, recv_window_ms: int = None) -> dict: params = CryptoXLibClient._clean_request_params({ "symbol": map_pair(pair), "countdownTime": countdown_time_ms, "recvWindow": recv_window_ms, "timestamp": self._get_current_timestamp_ms() }) return await self._create_delete("countdownCancelAll", params = params, headers = self._get_header(), signed = True, api_variable_path = BinanceUSDSMFuturesClient.FAPI_V1)
async def change_margin_type(self, pair: Pair, margin_type: enums.MarginType, recv_window_ms: int = None) -> dict: params = CryptoXLibClient._clean_request_params({ "symbol": map_pair(pair), "marginType": margin_type.value, "recvWindow": recv_window_ms, "timestamp": self._get_current_timestamp_ms() }) return await self._create_post("marginType", params = params, headers = self._get_header(), signed = True, api_variable_path = BinanceUSDSMFuturesClient.FAPI_V1)
async def get_orderbook(self, pair: Pair, limit: enums.DepthLimit = None) -> dict: params = CryptoXLibClient._clean_request_params({ "symbol": map_pair(pair), }) if limit: params['limit'] = limit.value return await self._create_get("depth", params = params, api_variable_path = BinanceUSDSMFuturesClient.FAPI_V1)
async def get_api_trading_status(self, pair: Pair = None, recv_window_ms: Optional[int] = None) -> dict: params = CryptoXLibClient._clean_request_params({ "timestamp": self._get_current_timestamp_ms(), "recvWindow": recv_window_ms }) if pair is not None: params['symbol'] = map_pair(pair) return await self._create_get("apiTradingStatus", params = params, headers = self._get_header(), signed = True, api_variable_path = BinanceUSDSMFuturesClient.FAPI_V1)
async def create_order(self, pair: Pair, price: str, quantity: str, side: enums.OrderSide) -> dict: params = CryptoXLibClient._clean_request_params({ "symbol": map_pair(pair), "price": price, "amount": quantity, "tradeType": side.value, "nonce": self._get_current_timestamp_ms() }) return await self._create_post("trade/placeOrder", params = params, signed = True)
async def get_aggregate_trades(self, pair: Pair, limit: int = None, from_id: int = None, start_tmstmp_ms: int = None, end_tmstmp_ms: int = None) -> dict: params = CryptoXLibClient._clean_request_params({ "symbol": map_pair(pair), "limit": limit, "fromId": from_id, "startTime": start_tmstmp_ms, "endTime": end_tmstmp_ms }) return await self._create_get("aggTrades", params = params, api_variable_path = BinanceUSDSMFuturesClient.FAPI_V1)
async def cancel_order(self, pair: Pair, order_id: int = None, orig_client_order_id: str = None, recv_window_ms: int = None) -> dict: params = CryptoXLibClient._clean_request_params({ "symbol": map_pair(pair), "orderId": order_id, "origClientOrderId": orig_client_order_id, "recvWindow": recv_window_ms, "timestamp": self._get_current_timestamp_ms() }) return await self._create_delete("order", params = params, headers = self._get_header(), signed = True, api_variable_path = BinanceUSDSMFuturesClient.FAPI_V1)
async def find_order(self, pair: Pair, state: enums.OrderState, side: enums.OrderSide = None) -> dict: params = CryptoXLibClient._clean_request_params({ "symbol": map_pair(pair), "state": state.value, "nonce": self._get_current_timestamp_ms() }) if side: params["tradeType"] = side.value return await self._create_post("trade/orderInfos", params = params, signed = True)