Unofficial Python wrapper for the Binance cryptocurrency exchange REST API v3 and WebSocket APIs with comprehensive trading, market data, and account management functionality
—
Complete trading functionality for spot markets including order placement, management, and execution. Supports all order types with comprehensive status tracking and modification capabilities.
Create various types of orders with comprehensive parameter control.
def create_order(self, **params): ...
def create_test_order(self, **params): ...
def order_limit(self, timeInForce=BaseClient.TIME_IN_FORCE_GTC, **params): ...
def order_limit_buy(self, timeInForce=BaseClient.TIME_IN_FORCE_GTC, **params): ...
def order_limit_sell(self, timeInForce=BaseClient.TIME_IN_FORCE_GTC, **params): ...
def order_market(self, **params): ...
def order_market_buy(self, **params): ...
def order_market_sell(self, **params): ...from binance import Client, SIDE_BUY, SIDE_SELL, ORDER_TYPE_LIMIT, ORDER_TYPE_MARKET, TIME_IN_FORCE_GTC
client = Client(api_key='your_key', api_secret='your_secret')
# Market buy order
market_buy = client.order_market_buy(
symbol='BTCUSDT',
quantity=0.001
)
# Market sell order
market_sell = client.order_market_sell(
symbol='BTCUSDT',
quantity=0.001
)
# Limit buy order
limit_buy = client.order_limit_buy(
symbol='BTCUSDT',
quantity=0.001,
price='50000.00'
)
# Limit sell order
limit_sell = client.order_limit_sell(
symbol='BTCUSDT',
quantity=0.001,
price='52000.00'
)
# Advanced limit order with custom parameters
advanced_order = client.create_order(
symbol='BTCUSDT',
side=SIDE_BUY,
type=ORDER_TYPE_LIMIT,
timeInForce=TIME_IN_FORCE_GTC,
quantity=0.001,
price='49000.00',
newClientOrderId='my-custom-id-123'
)# Test order creation without execution
test_order = client.create_test_order(
symbol='BTCUSDT',
side=SIDE_BUY,
type=ORDER_TYPE_MARKET,
quantity=0.001
)
# Returns {} if order would be validOne-Cancels-Other orders for advanced trading strategies.
def create_oco_order(self, **params): ...
def order_oco_buy(self, **params): ...
def order_oco_sell(self, **params): ...
def get_open_oco_orders(self, **params): ...# OCO sell order (take profit + stop loss)
oco_sell = client.order_oco_sell(
symbol='BTCUSDT',
quantity=0.001,
price='55000.00', # Take profit price
stopPrice='48000.00', # Stop loss trigger
stopLimitPrice='47500.00' # Stop loss limit price
)
# OCO buy order
oco_buy = client.order_oco_buy(
symbol='BTCUSDT',
quantity=0.001,
price='48000.00', # Limit buy price
stopPrice='52000.00', # Stop buy trigger
stopLimitPrice='52500.00' # Stop buy limit price
)
# Advanced OCO order
advanced_oco = client.create_oco_order(
symbol='BTCUSDT',
side=SIDE_SELL,
quantity=0.001,
price='55000.00',
stopPrice='48000.00',
stopLimitPrice='47500.00',
stopLimitTimeInForce=TIME_IN_FORCE_GTC,
newOrderRespType='FULL'
)Query, modify, and cancel existing orders.
def get_order(self, **params): ...
def get_all_orders(self, **params): ...
def get_open_orders(self, **params): ...
def cancel_order(self, **params): ...
def cancel_all_open_orders(self, **params): ...
def cancel_replace_order(self, **params): ...# Get specific order by order ID
order = client.get_order(
symbol='BTCUSDT',
orderId=12345678
)
# Get order by client order ID
order = client.get_order(
symbol='BTCUSDT',
origClientOrderId='my-custom-id-123'
)
# Get all orders for symbol (requires account permissions)
all_orders = client.get_all_orders(
symbol='BTCUSDT',
limit=100 # Max 1000
)
# Get only open orders
open_orders = client.get_open_orders(symbol='BTCUSDT')
# Get all open orders across all symbols
all_open = client.get_open_orders()
# Cancel specific order
cancel_result = client.cancel_order(
symbol='BTCUSDT',
orderId=12345678
)
# Cancel all open orders for symbol
cancel_all = client.cancel_all_open_orders(symbol='BTCUSDT')
# Cancel and replace order (atomic operation)
replace_result = client.cancel_replace_order(
symbol='BTCUSDT',
side=SIDE_BUY,
type=ORDER_TYPE_LIMIT,
cancelReplaceMode='STOP_ON_FAILURE',
timeInForce=TIME_IN_FORCE_GTC,
quantity=0.002, # New quantity
price='49500.00', # New price
cancelOrderId=12345678 # Order to cancel
)# Available order types
ORDER_TYPE_LIMIT = "LIMIT"
ORDER_TYPE_MARKET = "MARKET"
ORDER_TYPE_STOP_LOSS = "STOP_LOSS"
ORDER_TYPE_STOP_LOSS_LIMIT = "STOP_LOSS_LIMIT"
ORDER_TYPE_TAKE_PROFIT = "TAKE_PROFIT"
ORDER_TYPE_TAKE_PROFIT_LIMIT = "TAKE_PROFIT_LIMIT"
ORDER_TYPE_LIMIT_MAKER = "LIMIT_MAKER"# Stop loss market order
stop_loss = client.create_order(
symbol='BTCUSDT',
side=SIDE_SELL,
type=ORDER_TYPE_STOP_LOSS,
quantity=0.001,
stopPrice='48000.00'
)
# Stop loss limit order
stop_loss_limit = client.create_order(
symbol='BTCUSDT',
side=SIDE_SELL,
type=ORDER_TYPE_STOP_LOSS_LIMIT,
timeInForce=TIME_IN_FORCE_GTC,
quantity=0.001,
price='47500.00', # Limit price
stopPrice='48000.00' # Trigger price
)# Take profit market order
take_profit = client.create_order(
symbol='BTCUSDT',
side=SIDE_SELL,
type=ORDER_TYPE_TAKE_PROFIT,
quantity=0.001,
stopPrice='55000.00'
)
# Take profit limit order
take_profit_limit = client.create_order(
symbol='BTCUSDT',
side=SIDE_SELL,
type=ORDER_TYPE_TAKE_PROFIT_LIMIT,
timeInForce=TIME_IN_FORCE_GTC,
quantity=0.001,
price='55500.00', # Limit price
stopPrice='55000.00' # Trigger price
)# Limit maker order (guaranteed to be maker)
maker_order = client.create_order(
symbol='BTCUSDT',
side=SIDE_BUY,
type=ORDER_TYPE_LIMIT_MAKER,
quantity=0.001,
price='49000.00'
)# Available time in force options
TIME_IN_FORCE_GTC = "GTC" # Good Till Cancelled
TIME_IN_FORCE_IOC = "IOC" # Immediate Or Cancel
TIME_IN_FORCE_FOK = "FOK" # Fill Or Kill
TIME_IN_FORCE_GTX = "GTX" # Good Till Crossing (Post Only)
TIME_IN_FORCE_GTD = "GTD" # Good Till Date
# Examples
ioc_order = client.order_limit_buy(
symbol='BTCUSDT',
quantity=0.001,
price='50000.00',
timeInForce=TIME_IN_FORCE_IOC
)
fok_order = client.order_limit_buy(
symbol='BTCUSDT',
quantity=0.001,
price='50000.00',
timeInForce=TIME_IN_FORCE_FOK
)Control the amount of information returned from order operations.
# Response type options
ORDER_RESP_TYPE_ACK = "ACK" # Minimal response
ORDER_RESP_TYPE_RESULT = "RESULT" # Standard response
ORDER_RESP_TYPE_FULL = "FULL" # Full response with fills
# Example with full response
full_response_order = client.create_order(
symbol='BTCUSDT',
side=SIDE_BUY,
type=ORDER_TYPE_MARKET,
quantity=0.001,
newOrderRespType=ORDER_RESP_TYPE_FULL
)# Prevent self-trading
order = client.create_order(
symbol='BTCUSDT',
side=SIDE_BUY,
type=ORDER_TYPE_LIMIT,
quantity=0.001,
price='50000.00',
selfTradePreventionMode='EXPIRE_TAKER'
)# Iceberg order (only show partial quantity)
iceberg_order = client.create_order(
symbol='BTCUSDT',
side=SIDE_BUY,
type=ORDER_TYPE_LIMIT,
timeInForce=TIME_IN_FORCE_GTC,
quantity=1.0, # Total quantity
price='50000.00',
icebergQty=0.1 # Visible quantity
)ORDER_STATUS_NEW = "NEW"
ORDER_STATUS_PARTIALLY_FILLED = "PARTIALLY_FILLED"
ORDER_STATUS_FILLED = "FILLED"
ORDER_STATUS_CANCELED = "CANCELED"
ORDER_STATUS_PENDING_CANCEL = "PENDING_CANCEL"
ORDER_STATUS_REJECTED = "REJECTED"
ORDER_STATUS_EXPIRED = "EXPIRED"order = client.get_order(symbol='BTCUSDT', orderId=12345678)
print(f"Order status: {order['status']}")
print(f"Executed quantity: {order['executedQty']}")
print(f"Remaining quantity: {float(order['origQty']) - float(order['executedQty'])}")
if order['status'] == ORDER_STATUS_FILLED:
print(f"Average fill price: {order['cummulativeQuoteQty']}")Monitor API usage and order limits.
def get_current_order_count(self, **params): ...# Check current order count usage
order_count = client.get_current_order_count()
print(f"Order count usage: {order_count}")
# The response includes rate limit information
# [
# {
# "rateLimitType": "ORDERS",
# "interval": "SECOND",
# "intervalNum": 10,
# "limit": 50,
# "count": 5
# },
# {
# "rateLimitType": "ORDERS",
# "interval": "DAY",
# "intervalNum": 1,
# "limit": 160000,
# "count": 1200
# }
# ]def get_prevented_matches(self, **params): ...# Get prevented matches (self-trading prevention)
prevented = client.get_prevented_matches(
symbol='BTCUSDT',
preventedMatchId=123456
)This comprehensive trading functionality enables full control over order execution and management in spot markets, with support for all Binance order types and advanced trading features.
Install with Tessl CLI
npx tessl i tessl/pypi-python-binance