from enum import Enum
from typing import Optional
from pydantic import BaseModel, Field
from bingx_py.models.general import OrderSide, OrderStatus, TimeInForce
[docs]
class SpotOrderType(str, Enum):
"""Enum for spot order types.
Args:
MARKET (str): Market order.
LIMIT (str): Limit order.
TAKE_STOP_LIMIT (str): Take profit/stop loss limit order.
TAKE_STOP_MARKET (str): Take profit/stop loss market order.
TRIGGER_LIMIT (str): Trigger limit order.
TRIGGER_MARKET (str): Trigger market order.
"""
MARKET = "MARKET"
LIMIT = "LIMIT"
TAKE_STOP_LIMIT = "TAKE_STOP_LIMIT"
TAKE_STOP_MARKET = "TAKE_STOP_MARKET"
TRIGGER_LIMIT = "TRIGGER_LIMIT"
TRIGGER_MARKET = "TRIGGER_MARKET"
[docs]
class PlaceOrderRequest(BaseModel):
"""Model for the request of PlaceOrder.
Args:
symbol (str): Trading pair, e.g., BTC-USDT.
side (OrderSide): BUY/SELL.
type (SpotOrderType): MARKET/LIMIT/TAKE_STOP_LIMIT/TAKE_STOP_MARKET/TRIGGER_LIMIT/TRIGGER_MARKET.
stop_price (Optional[str]): Order trigger price, used for TAKE_STOP_LIMIT, TAKE_STOP_MARKET, TRIGGER_LIMIT, TRIGGER_MARKET type orders. Defaults to None.
quantity (Optional[float]): Original quantity, e.g., 0.1BTC. Defaults to None.
quote_order_qty (Optional[float]): Quote order quantity, e.g., 100USDT. If quantity and quote_order_qty are input at the same time, quantity will be used first. Defaults to None.
price (Optional[float]): Price, e.g., 10000USDT. Defaults to None.
new_client_order_id (Optional[str]): Customized order ID for users, with a limit of characters from 1 to 40. Defaults to None.
time_in_force (Optional[TimeInForce]): Time in force, currently supports PostOnly, GTC, IOC, FOK. Default is GTC if not specified. Defaults to None.
"""
symbol: str
side: OrderSide
type: SpotOrderType
stop_price: Optional[str] = Field(None, serialization_alias="stopPrice")
quantity: Optional[float] = None
quote_order_qty: Optional[float] = Field(None, serialization_alias="quoteOrderQty")
price: Optional[float] = None
new_client_order_id: Optional[str] = Field(
None,
serialization_alias="newClientOrderId",
)
time_in_force: Optional[TimeInForce] = Field(
None,
serialization_alias="timeInForce",
)
[docs]
class SpotPlaceOrderResponse(BaseModel):
"""Model for the response of PlaceOrder.
Args:
code (int): Error code, 0 means successfully response, others means response failure.
msg (str): Error details description.
debug_msg (str): Debug message.
data (PlaceOrderData): The response data.
"""
code: int
msg: str
debug_msg: str = Field(..., alias="debugMsg")
data: "PlaceOrderData"
[docs]
class PlaceOrderData(BaseModel):
"""Model for the response data of PlaceOrder.
Args:
symbol (str): Trading pair.
order_id (int): Order ID.
transact_time (int): Transaction timestamp.
price (str): Price.
orig_qty (str): Original quantity.
executed_qty (str): Executed quantity.
cummulative_quote_qty (str): Cumulative quote asset transacted quantity.
status (OrderStatus): Order status.
type (SpotOrderType): Order type.
side (OrderSide): BUY/SELL.
"""
symbol: str
order_id: int = Field(..., alias="orderId")
transact_time: int = Field(..., alias="transactTime")
price: str
orig_qty: str = Field(..., alias="origQty")
executed_qty: str = Field(..., alias="executedQty")
cummulative_quote_qty: str = Field(..., alias="cummulativeQuoteQty")
status: OrderStatus
type: SpotOrderType
side: OrderSide
[docs]
class SpotPlaceMultipleOrdersResponse(BaseModel):
"""Model for the response of PlaceMultipleOrders.
Args:
code (int): Error code, 0 means successfully response, others means response failure.
msg (str): Error details description.
debug_msg (str): Debug message.
data (PlaceMultipleOrdersData): The response data.
"""
code: int
msg: str
debug_msg: str = Field(..., alias="debugMsg")
data: "PlaceMultipleOrdersData"
[docs]
class PlaceMultipleOrdersData(BaseModel):
"""Model for the response data of PlaceMultipleOrders.
Args:
orders (List[PlaceOrderData]): Response array for a single order.
"""
orders: list[PlaceOrderData]
[docs]
class SpotQueryOrderDetailsResponse(BaseModel):
"""Model for the response of QueryOrderDetails.
Args:
code (int): Error code, 0 means successfully response, others means response failure.
msg (str): Error details description.
debug_msg (str): Debug message.
data (QueryOrderDetailsData): The response data.
"""
code: int
msg: str
debug_msg: str = Field(..., alias="debugMsg")
data: "QueryOrderDetailsData"
[docs]
class QueryOrderDetailsData(BaseModel):
"""Model for the response data of QueryOrderDetails.
Args:
symbol (str): Trading pair.
order_id (int): Order ID.
price (str): Price.
stop_price (str): Trigger price.
orig_qty (str): Original quantity.
executed_qty (str): Executed quantity.
cummulative_quote_qty (str): Cumulative quote asset transacted quantity.
status (OrderStatus): Order status.
type (SpotOrderType): Order type.
side (OrderSide): BUY/SELL.
time (int): Order timestamp.
update_time (int): Update timestamp.
orig_quote_order_qty (str): Original quote order quantity.
fee (str): Fee.
fee_asset (str): Fee asset.
client_order_id (Optional[str]): Customized order ID for users.
avg_price (str): Average fill price.
"""
symbol: str
order_id: int = Field(..., alias="orderId")
price: str
stop_price: str = Field(..., alias="StopPrice")
orig_qty: str = Field(..., alias="origQty")
executed_qty: str = Field(..., alias="executedQty")
cummulative_quote_qty: str = Field(..., alias="cummulativeQuoteQty")
status: OrderStatus
type: SpotOrderType
side: OrderSide
time: int
update_time: int = Field(..., alias="updateTime")
orig_quote_order_qty: str = Field(..., alias="origQuoteOrderQty")
fee: str
fee_asset: str = Field(..., alias="feeAsset")
client_order_id: Optional[str] = Field(None, alias="clientOrderID")
avg_price: str = Field(..., alias="avgPrice")
[docs]
class CurrentOpenOrdersResponse(BaseModel):
"""Model for the response of CurrentOpenOrders.
Args:
code (int): Error code, 0 means successfully response, others means response failure.
msg (str): Error details description.
debug_msg (str): Debug message.
data (CurrentOpenOrdersData): The response data.
"""
code: int
msg: str
debug_msg: str = Field(..., alias="debugMsg")
data: "CurrentOpenOrdersData"
[docs]
class CurrentOpenOrdersData(BaseModel):
"""Model for the response data of CurrentOpenOrders.
Args:
orders (List[QueryOrderDetailsData]): Order list, max length is 2000.
"""
orders: list[QueryOrderDetailsData]
[docs]
class QueryOrderHistoryResponse(BaseModel):
"""Model for the response of QueryOrderHistory.
Args:
code (int): Error code, 0 means successfully response, others means response failure.
msg (str): Error details description.
debug_msg (str): Debug message.
data (QueryOrderHistoryData): The response data.
"""
code: int
msg: str
debug_msg: str = Field(..., alias="debugMsg")
data: "QueryOrderHistoryData"
[docs]
class QueryOrderHistoryData(BaseModel):
"""Model for the response data of QueryOrderHistory.
Args:
orders (List[QueryOrderDetailsData]): Order list, max length is 2000.
"""
orders: list[QueryOrderDetailsData]
[docs]
class CancelAllAfterType(str, Enum):
"""Enum for cancel all after type.
Values:
ACTIVATE: Activate the cancel all after feature.
CLOSE: Close the cancel all after feature.
"""
ACTIVATE = "ACTIVATE"
CLOSE = "CLOSE"
[docs]
class CancelRestrictions(str, Enum):
"""Enum for cancel restrictions.
Values:
NEW: Restrict cancellation to new orders.
PENDING: Restrict cancellation to pending orders.
PARTIALLY_FILLED: Restrict cancellation to partially filled orders.
"""
NEW = "NEW"
PENDING = "PENDING"
PARTIALLY_FILLED = "PARTIALLY_FILLED"
[docs]
class QueryTradingCommissionRateResponse(BaseModel):
"""Model for the response of QueryTradingCommissionRate.
Args:
code (int): Error code, 0 means successfully response, others means response failure.
msg (str): Error details description.
debug_msg (str): Debug message.
data (QueryTradingCommissionRateData): The response data.
"""
code: int
msg: str
debug_msg: str = Field(..., alias="debugMsg")
data: "QueryTradingCommissionRateData"
[docs]
class QueryTradingCommissionRateData(BaseModel):
"""Model for the response data of QueryTradingCommissionRate.
Args:
taker_commission_rate (float): Taker commission rate.
maker_commission_rate (float): Maker commission rate.
"""
taker_commission_rate: float = Field(..., alias="takerCommissionRate")
maker_commission_rate: float = Field(..., alias="makerCommissionRate")
[docs]
class SpotCancelAllAfterResponse(BaseModel):
"""Model for the response of CancelAllAfter.
Args:
code (int): Error code, 0 means successfully response, others means response failure.
msg (str): Error details description.
debug_msg (str): Debug message.
data (CancelAllAfterData): The response data.
"""
code: int
msg: str
debug_msg: str = Field(..., alias="debugMsg")
data: "CancelAllAfterData"
[docs]
class CancelAllAfterData(BaseModel):
"""Model for the response data of CancelAllAfter.
Args:
trigger_time (int): Trigger time for deleting all pending orders.
status (CancelAllAfterStatus): ACTIVATED (Activation successful)/CLOSED (Closed successfully)/FAILED (Failed).
note (str): Explanation.
"""
trigger_time: int = Field(..., alias="triggerTime")
status: "CancelAllAfterStatus"
note: str
[docs]
class CancelAllAfterStatus(str, Enum):
"""Status of cancel all after operation.
Args:
ACTIVATED (str): Activation successful.
CLOSED (str): Closed successfully.
FAILED (str): Failed.
"""
ACTIVATED = "ACTIVATED"
CLOSED = "CLOSED"
FAILED = "FAILED"
[docs]
class SpotCancelOrderResponse(BaseModel):
"""Model for the response of CancelOrder.
Args:
code (int): Error code, 0 means successfully response, others means response failure.
msg (str): Error details description.
debug_msg (str): Debug message.
data (CancelOrderData): The response data.
"""
code: int
msg: str
debug_msg: str = Field(..., alias="debugMsg")
data: "CancelOrderData"
[docs]
class CancelOrderData(BaseModel):
"""Model for the response data of CancelOrder.
Args:
symbol (str): Trading pair.
order_id (int): Order ID.
price (str): Price.
stop_price (str): Trigger price.
orig_qty (str): Original quantity.
executed_qty (str): Executed quantity.
cummulative_quote_qty (str): Cumulative quote asset transacted quantity.
status (OrderStatus): Order status.
type (SpotOrderType): Order type.
side (OrderSide): BUY/SELL.
"""
symbol: str
order_id: int = Field(..., alias="orderId")
price: str
stop_price: str = Field(..., alias="stopPrice")
orig_qty: str = Field(..., alias="origQty")
executed_qty: str = Field(..., alias="executedQty")
cummulative_quote_qty: str = Field(..., alias="cummulativeQuoteQty")
status: OrderStatus
type: SpotOrderType
side: OrderSide
[docs]
class SpotCancelMultipleOrdersResponse(BaseModel):
"""Model for the response of CancelMultipleOrders.
Args:
code (int): Error code, 0 means successfully response, others means response failure.
msg (str): Error details description.
debug_msg (str): Debug message.
data (CancelMultipleOrdersData): The response data.
"""
code: int
msg: str
debug_msg: str = Field(..., alias="debugMsg")
data: "CancelMultipleOrdersData"
[docs]
class CancelMultipleOrdersData(BaseModel):
"""Model for the response data of CancelMultipleOrders.
Args:
fails (List[FailItem]): List of failed orders.
orders (List[CancelOrderData]): List of successfully canceled orders.
"""
fails: list["FailItem"]
orders: list[CancelOrderData]
[docs]
class FailItem(BaseModel):
"""Model for the failed order item.
Args:
order_id (str): Order ID.
error (str): Error message.
"""
order_id: str = Field(..., alias="orderId")
error: str
[docs]
class SpotCancelAllOpenOrdersResponse(BaseModel):
"""Model for the response of CancelAllOpenOrders.
Args:
code (int): Error code, 0 means successfully response, others means response failure.
msg (str): Error details description.
debug_msg (str): Debug message.
data (CancelAllOpenOrdersData): The response data.
"""
code: int
msg: str
debug_msg: str = Field(..., alias="debugMsg")
data: "CancelAllOpenOrdersData"
[docs]
class CancelAllOpenOrdersData(BaseModel):
"""Model for the response data of CancelAllOpenOrders.
Args:
orders (List[CancelOrderData]): List of canceled orders.
"""
orders: list[CancelOrderData]
[docs]
class CancelReplaceMode(str, Enum):
"""Enum for cancel replace modes.
Args:
STOP_ON_FAILURE (str): Stop on failure.
ALLOW_FAILURE (str): Allow failure.
"""
STOP_ON_FAILURE = "STOP_ON_FAILURE"
ALLOW_FAILURE = "ALLOW_FAILURE"
[docs]
class SpotCancelReplaceOrderResponse(BaseModel):
"""Model for the response of CancelReplaceOrder.
Args:
code (int): Error code, 0 means successfully response, others means response failure.
msg (str): Error details description.
debug_msg (str): Debug message.
data (CancelReplaceOrderData): The response data.
"""
code: int
msg: str
debug_msg: str = Field(..., alias="debugMsg")
data: "CancelReplaceOrderData"
[docs]
class CancelReplaceOrderData(BaseModel):
"""Model for the response data of CancelReplaceOrder.
Args:
cancel_result (CancelResult): Result of the cancel operation.
open_result (OpenResult): Result of the open operation.
order_open_response (OrderOpenResponse): Response for the open order.
order_cancel_response (OrderCancelResponse): Response for the cancel order.
"""
cancel_result: "CancelResult" = Field(..., alias="cancelResult")
open_result: "OpenResult" = Field(..., alias="openResult")
order_open_response: "OrderOpenResponse" = Field(..., alias="orderOpenResponse")
order_cancel_response: "OrderCancelResponse" = Field(
...,
alias="orderCancelResponse",
)
[docs]
class CancelResult(BaseModel):
"""Model for the cancel result.
Args:
code (int): Error code.
msg (str): Error message.
result (bool): Result of the cancel operation.
"""
code: int
msg: str
result: bool
[docs]
class OpenResult(BaseModel):
"""Model for the open result.
Args:
code (int): Error code.
msg (str): Error message.
result (bool): Result of the open operation.
"""
code: int
msg: str
result: bool
[docs]
class OrderOpenResponse(BaseModel):
"""Model for the order open response.
Args:
symbol (str): Trading symbol.
order_id (int): Order ID.
transact_time (int): Transaction timestamp.
price (str): Order price.
stop_price (str): Trigger price.
orig_qty (str): Original quantity.
executed_qty (str): Executed quantity.
cummulative_quote_qty (str): Cumulative quote quantity.
status (OrderStatus): Order status.
type (SpotOrderType): Order type.
side (OrderSide): BUY or SELL.
client_order_id (str): User-defined order ID.
"""
symbol: str
order_id: int = Field(..., alias="orderId")
transact_time: int = Field(..., alias="transactTime")
price: str
stop_price: str = Field(..., alias="stopPrice")
orig_qty: str = Field(..., alias="origQty")
executed_qty: str = Field(..., alias="executedQty")
cummulative_quote_qty: str = Field(..., alias="cummulativeQuoteQty")
status: OrderStatus
type: SpotOrderType
side: OrderSide
client_order_id: str = Field(..., alias="clientOrderID")
[docs]
class OrderCancelResponse(BaseModel):
"""Model for the order cancel response.
Args:
symbol (str): Trading symbol.
order_id (int): Order ID.
price (str): Order price.
stop_price (str): Trigger price.
orig_qty (str): Original quantity.
executed_qty (str): Executed quantity.
cummulative_quote_qty (str): Cumulative quote quantity.
status (OrderStatus): Order status.
type (SpotOrderType): Order type.
side (OrderSide): BUY or SELL.
"""
symbol: str
order_id: int = Field(..., alias="orderId")
price: str
stop_price: str = Field(..., alias="stopPrice")
orig_qty: str = Field(..., alias="origQty")
executed_qty: str = Field(..., alias="executedQty")
cummulative_quote_qty: str = Field(..., alias="cummulativeQuoteQty")
status: OrderStatus
type: SpotOrderType
side: OrderSide
[docs]
class QueryTransactionDetailsResponse(BaseModel):
"""Model for the response of QueryTransactionDetails.
Args:
code (int): Error code, 0 means successfully response, others means response failure.
msg (str): Error details description.
debug_msg (str): Debug message.
data (QueryTransactionDetailsData): The response data.
"""
code: int
msg: str
debug_msg: str = Field(..., alias="debugMsg")
data: "QueryTransactionDetailsData"
[docs]
class QueryTransactionDetailsData(BaseModel):
"""Model for the response data of QueryTransactionDetails.
Args:
fills (List[FillItem]): List of trade details.
"""
fills: list["FillItem"]
[docs]
class FillItem(BaseModel):
"""Model for the fill item.
Args:
symbol (str): Trading symbol.
id (int): Trade ID.
order_id (int): Order ID.
price (str): Price of the trade.
qty (str): Quantity of the trade.
quote_qty (str): Quote asset quantity traded.
commission (float): Commission amount.
commission_asset (str): Commission asset type.
time (int): Trade time.
is_buyer (bool): Whether the buyer.
is_maker (bool): Whether the maker.
"""
symbol: str
id: int
order_id: int = Field(..., alias="orderId")
price: str
qty: str
quote_qty: str = Field(..., alias="quoteQty")
commission: float
commission_asset: str = Field(..., alias="commissionAsset")
time: int
is_buyer: bool = Field(..., alias="isBuyer")
is_maker: bool = Field(..., alias="isMaker")
[docs]
class CreateOcoOrderResponse(BaseModel):
"""Model for the response of CreateOcoOrder.
Args:
code (int): Error code, 0 means successfully response, others means response failure.
msg (str): Error details description.
debug_msg (str): Debug message.
data (List[OcoOrderItem]): The response data.
"""
code: int
msg: str
debug_msg: str = Field(..., alias="debugMsg")
data: list["OcoOrderItem"]
[docs]
class OcoOrderItem(BaseModel):
"""Model for the OCO order item.
Args:
transaction_time (int): Order time.
order_id (str): Order ID.
client_order_id (str): User-defined order ID.
symbol (str): Trading pair.
order_type (str): OCO order type.
side (str): BUY or SELL.
trigger_price (float): Trigger price.
price (float): Order price.
quantity (float): Order quantity.
order_list_id (str): OCO order group ID.
status (str): Order status.
"""
transaction_time: int = Field(..., alias="transactionTime")
order_id: str = Field(..., alias="orderId")
client_order_id: str = Field(..., alias="clientOrderId")
symbol: str
order_type: str = Field(..., alias="spotOrderType")
side: str
trigger_price: float = Field(..., alias="triggerPrice")
price: float
quantity: float
order_list_id: str = Field(..., alias="orderListId")
status: str
[docs]
class CancelOcoOrderResponse(BaseModel):
"""Model for the response of CancelOcoOrder.
Args:
code (int): Error code, 0 means successfully response, others means response failure.
msg (str): Error details description.
debug_msg (str): Debug message.
data (CancelOcoOrderData): The response data.
"""
code: int
msg: str
debug_msg: str = Field(..., alias="debugMsg")
data: "CancelOcoOrderData"
[docs]
class CancelOcoOrderData(BaseModel):
"""Model for the response data of CancelOcoOrder.
Args:
order_id (str): Order ID.
client_order_id (str): User-defined order ID.
"""
order_id: str = Field(..., alias="orderId")
client_order_id: str = Field(..., alias="clientOrderId")
[docs]
class QueryOcoOrderListResponse(BaseModel):
"""Model for the response of QueryOcoOrderList.
Args:
code (int): Error code, 0 means successfully response, others means response failure.
msg (str): Error details description.
debug_msg (str): Debug message.
data (List[OcoOrderItem]): The response data.
"""
code: int
msg: str
debug_msg: str = Field(..., alias="debugMsg")
data: list["OcoOrderItem"]
[docs]
class QueryAllOpenOcoOrdersResponse(BaseModel):
"""Model for the response of QueryAllOpenOcoOrders.
Args:
code (int): Error code, 0 means successfully response, others means response failure.
msg (str): Error details description.
debug_msg (str): Debug message.
data (List[OcoOrderItem]): The response data.
"""
code: int
msg: str
debug_msg: str = Field(..., alias="debugMsg")
data: list["OcoOrderItem"]
[docs]
class QueryOcoHistoricalOrderListResponse(BaseModel):
"""Model for the response of QueryOcoHistoricalOrderList.
Args:
code (int): Error code, 0 means successfully response, others means response failure.
msg (str): Error details description.
debug_msg (str): Debug message.
data (List[OcoOrderItem]): The response data.
"""
code: int
msg: str
debug_msg: str = Field(..., alias="debugMsg")
data: list["OcoOrderItem"]