CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/pypi-python-binance

Unofficial Python wrapper for the Binance cryptocurrency exchange REST API v3 and WebSocket APIs with comprehensive trading, market data, and account management functionality

Pending
Overview
Eval results
Files

trading.mddocs/

Trading Operations

Complete trading functionality for spot markets including order placement, management, and execution. Supports all order types with comprehensive status tracking and modification capabilities.

Capabilities

Order Creation

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): ...

Basic Order Examples

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 Orders

# 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 valid

OCO Orders

One-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 Order Examples

# 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'
)

Order Management

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): ...

Order Management Examples

# 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
)

Order Types and Parameters

Order Types

# 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 Orders

# 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 Orders

# 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
)

Post-Only Orders

# 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'
)

Time in Force Options

# 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
)

Order Response Types

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
)

Advanced Trading Features

Self-Trade Prevention

# 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 Orders

# 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 and Fills

Order Status Values

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"

Checking Order Status

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']}")

Rate Limits and Order Count

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
#   }
# ]

Trade Prevention and Compliance

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

docs

account.md

convert-api.md

depth-cache.md

futures.md

index.md

margin.md

market-data.md

rest-clients.md

staking-mining.md

trading.md

websockets.md

tile.json