{"id":45440850,"url":"https://github.com/makarworld/pymexc","last_synced_at":"2026-02-22T03:43:57.382Z","repository":{"id":170986999,"uuid":"647286868","full_name":"makarworld/pymexc","owner":"makarworld","description":"Unofficial python library for interacting with the MEXC crypto exchange","archived":false,"fork":false,"pushed_at":"2026-02-04T20:14:07.000Z","size":226,"stargazers_count":64,"open_issues_count":3,"forks_count":31,"subscribers_count":4,"default_branch":"master","last_synced_at":"2026-02-05T08:27:39.271Z","etag":null,"topics":["api","cryptocurrency","cryptoexchange","mexc","python","sdk"],"latest_commit_sha":null,"homepage":"https://pypi.org/project/pymexc/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/makarworld.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-05-30T13:06:23.000Z","updated_at":"2026-02-04T20:14:13.000Z","dependencies_parsed_at":null,"dependency_job_id":"d60082fe-3416-438c-9ca1-1bfaa1fa1a4c","html_url":"https://github.com/makarworld/pymexc","commit_stats":null,"previous_names":["makarworld/pymexc"],"tags_count":19,"template":false,"template_full_name":null,"purl":"pkg:github/makarworld/pymexc","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/makarworld%2Fpymexc","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/makarworld%2Fpymexc/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/makarworld%2Fpymexc/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/makarworld%2Fpymexc/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/makarworld","download_url":"https://codeload.github.com/makarworld/pymexc/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/makarworld%2Fpymexc/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29704420,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-22T03:17:42.375Z","status":"ssl_error","status_checked_at":"2026-02-22T03:17:31.622Z","response_time":110,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api","cryptocurrency","cryptoexchange","mexc","python","sdk"],"created_at":"2026-02-22T03:43:57.260Z","updated_at":"2026-02-22T03:43:57.368Z","avatar_url":"https://github.com/makarworld.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![PyPI version](https://badge.fury.io/py/pymexc.svg)](https://badge.fury.io/py/pymexc)\n[![License](https://img.shields.io/github/license/makarworld/pymexc.svg?label=License\u0026logo=apache\u0026cacheSeconds=2592000)](https://github.com/makarworld/pymexc/blob/main/LICENSE)\n[![image](https://img.shields.io/pypi/pyversions/pymexc.svg)](https://pypi.org/project/pymexc/)\n[![Github last commit date](https://img.shields.io/github/last-commit/makarworld/pymexc.svg?label=Updated\u0026logo=github\u0026cacheSeconds=600)](https://github.com/makarworld/pymexc/commits)\n\n# pymexc\n\n`pymexc` is an unofficial Python library for interacting with the [MEXC crypto exchange](https://www.mexc.com/). It provides a simple and intuitive API for making requests to the [MEXC API endpoints](https://mexcdevelop.github.io/apidocs/spot_v3_en/#introduction).\n\nBase of code was taken from [pybit](https://github.com/bybit-exchange/pybit) library.\n\n# Futures orders API\n\nMEXC Futures API for create orders is on maintance now. **_But you can bypass it_**. See [this issue](https://github.com/makarworld/pymexc/issues/15) for more information.\n\n# Installation\n\nYou can install pymexc using pip:\n\n```bash\npip install pymexc\n```\n\n# Getting Started\n\nTo start working with pymexc, you must import spot or futures from the library. Each of them contains 2 classes: HTTP and WebSocket. To work with simple requests, you need to initialize the HTTP class. To work with web sockets you need to initialize the WebSocket class\n\n## Example\n\n```python\nfrom pymexc import spot, futures\n\napi_key = \"YOUR API KEY\"\napi_secret = \"YOUR API SECRET KEY\"\n\ndef handle_message(message): \n    # handle websocket message\n    print(message)\n\n\n# SPOT V3\n\n# initialize HTTP client\nspot_client = spot.HTTP(api_key = api_key, api_secret = api_secret)\n# initialize WebSocket client\nws_spot_client = spot.WebSocket(api_key = api_key, api_secret = api_secret)\n\n# make http request to api\nprint(spot_client.exchange_info())\n\n# create websocket connection to public channel (spot@public.deals.v3.api@BTCUSDT)\n# all messages will be handled by function `handle_message`\nws_spot_client.deals_stream(handle_message, \"BTCUSDT\")\n\n\n# FUTURES V1\n\n# initialize HTTP client\nfutures_client = futures.HTTP(api_key = api_key, api_secret = api_secret)\n# initialize WebSocket client\nws_futures_client = futures.WebSocket(api_key = api_key, api_secret = api_secret, \n                                      # subscribe on personal information about about account\n                                      # if not provided, will not be subscribed\n                                      # you can subsctibe later by calling ws_futures_client.personal_stream(callback) for all info\n                                      # or ws_futures_client.filter_stream(callback, params={\"filters\":[{\"filter\":\"...\"}]}) for specific info (https://mexcdevelop.github.io/apidocs/contract_v1_en/#filter-subscription)\n                                      personal_callback = handle_message)\n\n# make http request to api\nprint(futures_client.index_price(\"MX_USDT\"))\n\n# create websocket connection to public channel (sub.tickers)\n# all messages will be handled by function `handle_message`\nws_futures_client.tickers_stream(handle_message)\n\n# loop forever for save websocket connection \nwhile True: \n    ...\n```\n\n## Common Usage Examples\n\n### Getting Current Price and Market Data\n\n```python\nfrom pymexc import spot\n\nspot_client = spot.HTTP()\n\n# Get current price\nticker = spot_client.ticker_price(\"BTCUSDT\")\nprint(f\"BTC Price: {ticker['price']}\")\n\n# Get 24h ticker statistics\nstats = spot_client.ticker_24h(\"BTCUSDT\")\nprint(f\"24h Change: {stats['priceChangePercent']}%\")\nprint(f\"24h Volume: {stats['volume']}\")\n\n# Get order book\norderbook = spot_client.order_book(\"BTCUSDT\", limit=10)\nprint(f\"Best Bid: {orderbook['bids'][0]}\")\nprint(f\"Best Ask: {orderbook['asks'][0]}\")\n\n# Get recent trades\ntrades = spot_client.trades(\"BTCUSDT\", limit=10)\nfor trade in trades:\n    print(f\"Price: {trade['price']}, Qty: {trade['qty']}\")\n```\n\n### Placing and Managing Orders\n\n```python\nfrom pymexc import spot\n\nspot_client = spot.HTTP(api_key=\"YOUR_KEY\", api_secret=\"YOUR_SECRET\")\n\n# Get current price first\nticker = spot_client.ticker_price(\"BTCUSDT\")\ncurrent_price = float(ticker['price'])\n\n# Place a limit buy order 1% below current price\nbuy_price = current_price * 0.99\nresult = spot_client.order(\n    symbol=\"BTCUSDT\",\n    side=\"BUY\",\n    order_type=\"LIMIT\",\n    quantity=0.001,\n    price=buy_price,\n    time_in_force=\"GTC\"\n)\nprint(f\"Order placed: {result}\")\n\n# Check order status\norder_status = spot_client.query_order(\"BTCUSDT\", order_id=result['orderId'])\nprint(f\"Order status: {order_status['status']}\")\n\n# Get all open orders\nopen_orders = spot_client.current_open_orders(\"BTCUSDT\")\nprint(f\"Open orders: {len(open_orders)}\")\n\n# Cancel an order\nif open_orders:\n    cancel_result = spot_client.cancel_order(\"BTCUSDT\", order_id=open_orders[0]['orderId'])\n    print(f\"Order cancelled: {cancel_result}\")\n```\n\n### Market Order Example\n\n```python\nfrom pymexc import spot\n\nspot_client = spot.HTTP(api_key=\"YOUR_KEY\", api_secret=\"YOUR_SECRET\")\n\n# Place a market buy order for $100 worth of BTC\nresult = spot_client.order(\n    symbol=\"BTCUSDT\",\n    side=\"BUY\",\n    order_type=\"MARKET\",\n    quote_order_qty=100  # Buy $100 worth\n)\nprint(f\"Market order executed: {result}\")\n```\n\n### Getting Account Balance\n\n```python\nfrom pymexc import spot\n\nspot_client = spot.HTTP(api_key=\"YOUR_KEY\", api_secret=\"YOUR_SECRET\")\n\n# Get account information\naccount = spot_client.account_information()\n\n# Print balances for assets with non-zero amounts\nfor balance in account['balances']:\n    free = float(balance['free'])\n    locked = float(balance['locked'])\n    total = free + locked\n    if total \u003e 0:\n        print(f\"{balance['asset']}: Free={free}, Locked={locked}, Total={total}\")\n```\n\n### Getting Trading History\n\n```python\nfrom pymexc import spot\nimport time\n\nspot_client = spot.HTTP(api_key=\"YOUR_KEY\", api_secret=\"YOUR_SECRET\")\n\n# Get recent trades for a symbol\ntrades = spot_client.account_trade_list(\"BTCUSDT\", limit=100)\n\n# Calculate total volume and PnL\ntotal_volume = 0\ntotal_cost = 0\nfor trade in trades:\n    qty = float(trade['qty'])\n    price = float(trade['price'])\n    total_volume += qty\n    if trade['isBuyer']:\n        total_cost += qty * price\n    else:\n        total_cost -= qty * price\n\nprint(f\"Total Volume: {total_volume} BTC\")\nprint(f\"Net Cost: {total_cost} USDT\")\n```\n\n### Real-time Price Monitoring with WebSocket\n\n```python\nfrom pymexc import spot\nfrom pymexc.proto import PublicMiniTickerV3Api\nimport time\n\ndef handle_price_update(message):\n    \"\"\"Handle real-time price updates\"\"\"\n    # WebSocket uses protobuf by default, so message is a protobuf object\n    if isinstance(message, PublicMiniTickerV3Api):\n        symbol = message.symbol if hasattr(message, \"symbol\") else \"N/A\"\n        price = message.price if hasattr(message, \"price\") else \"N/A\"\n        volume = message.volume if hasattr(message, \"volume\") else \"N/A\"\n        print(f\"{symbol}: Price={price}, Volume={volume}\")\n    elif isinstance(message, dict) and \"d\" in message:\n        # Fallback for JSON format (if proto=False)\n        data = message[\"d\"]\n        symbol = data.get(\"symbol\", \"N/A\")\n        price = data.get(\"p\", \"N/A\")\n        volume = data.get(\"v\", \"N/A\")\n        print(f\"{symbol}: Price={price}, Volume={volume}\")\n\n# Initialize WebSocket client\nws_client = spot.WebSocket()\n\n# Subscribe to ticker updates\nws_client.mini_ticker_stream(handle_price_update, \"BTCUSDT\")\n\n# Keep connection alive\ntry:\n    while True:\n        time.sleep(1)\nexcept KeyboardInterrupt:\n    print(\"Stopping...\")\n    ws_client.exit()\n```\n\n### Monitoring Order Book Depth\n\n```python\nfrom pymexc import spot\nfrom pymexc.proto import PublicAggreDepthsV3Api\nimport time\n\ndef handle_depth_update(message):\n    \"\"\"Handle order book depth updates\"\"\"\n    # WebSocket uses protobuf by default, so message is a protobuf object\n    if isinstance(message, PublicAggreDepthsV3Api):\n        bids = list(message.bids) if hasattr(message, \"bids\") else []\n        asks = list(message.asks) if hasattr(message, \"asks\") else []\n        \n        if bids and asks:\n            best_bid_price = float(bids[0].price) if bids and hasattr(bids[0], \"price\") else None\n            best_ask_price = float(asks[0].price) if asks and hasattr(asks[0], \"price\") else None\n            if best_bid_price and best_ask_price:\n                spread = best_ask_price - best_bid_price\n                print(f\"Bid={best_bid_price}, Ask={best_ask_price}, Spread={spread:.2f}\")\n    elif isinstance(message, dict) and \"d\" in message:\n        # Fallback for JSON format (if proto=False)\n        data = message[\"d\"]\n        symbol = data.get(\"symbol\", \"N/A\")\n        bids = data.get(\"bids\", [])\n        asks = data.get(\"asks\", [])\n        \n        if bids and asks:\n            best_bid = bids[0][0] if bids else \"N/A\"\n            best_ask = asks[0][0] if asks else \"N/A\"\n            spread = float(best_ask) - float(best_bid) if best_ask != \"N/A\" and best_bid != \"N/A\" else 0\n            print(f\"{symbol}: Bid={best_bid}, Ask={best_ask}, Spread={spread:.2f}\")\n\n# Initialize WebSocket client\nws_client = spot.WebSocket()\n\n# Subscribe to depth updates\nws_client.depth_stream(handle_depth_update, \"BTCUSDT\", interval=\"100ms\")\n\ntry:\n    while True:\n        time.sleep(1)\nexcept KeyboardInterrupt:\n    ws_client.exit()\n```\n\n### Getting Kline/Candlestick Data for Analysis\n\n```python\nfrom pymexc import spot\nimport pandas as pd\nfrom datetime import datetime, timedelta\n\nspot_client = spot.HTTP()\n\n# Get klines for the last 24 hours\nend_time = int(datetime.now().timestamp() * 1000)\nstart_time = int((datetime.now() - timedelta(days=1)).timestamp() * 1000)\n\nklines = spot_client.klines(\n    symbol=\"BTCUSDT\",\n    interval=\"1h\",\n    start_time=start_time,\n    end_time=end_time,\n    limit=24\n)\n\n# Convert to DataFrame for analysis\ndf = pd.DataFrame(klines, columns=[\n    'open_time', 'open', 'high', 'low', 'close', 'volume',\n    'close_time', 'quote_volume', 'trades', 'taker_buy_base',\n    'taker_buy_quote', 'ignore'\n])\n\n# Convert to numeric\nfor col in ['open', 'high', 'low', 'close', 'volume']:\n    df[col] = pd.to_numeric(df[col])\n\n# Calculate simple moving average\ndf['sma_20'] = df['close'].rolling(window=20).mean()\n\n# Print latest data\nprint(df[['open_time', 'open', 'high', 'low', 'close', 'volume', 'sma_20']].tail())\n```\n\n### Batch Order Placement\n\n```python\nfrom pymexc import spot\n\nspot_client = spot.HTTP(api_key=\"YOUR_KEY\", api_secret=\"YOUR_SECRET\")\n\n# Get current price\nticker = spot_client.ticker_price(\"BTCUSDT\")\ncurrent_price = float(ticker['price'])\n\n# Prepare multiple orders at different price levels\nbatch_orders = []\nfor i in range(5):\n    price = current_price * (0.99 - i * 0.001)  # 1% to 0.5% below current price\n    batch_orders.append({\n        \"price\": str(price),\n        \"quantity\": \"0.001\"\n    })\n\n# Place batch orders\nresult = spot_client.batch_orders(\n    batch_orders=batch_orders,\n    symbol=\"BTCUSDT\",\n    side=\"BUY\",\n    order_type=\"LIMIT\"\n)\n\nprint(f\"Placed {len(result)} orders\")\n```\n\n### Error Handling\n\n```python\nfrom pymexc import spot\n\nspot_client = spot.HTTP(api_key=\"YOUR_KEY\", api_secret=\"YOUR_SECRET\")\n\ntry:\n    # Attempt to place an order\n    result = spot_client.order(\n        symbol=\"BTCUSDT\",\n        side=\"BUY\",\n        order_type=\"LIMIT\",\n        quantity=0.001,\n        price=50000\n    )\n    print(f\"Order placed successfully: {result}\")\nexcept Exception as e:\n    print(f\"Error placing order: {e}\")\n    # Handle specific error cases\n    if \"insufficient balance\" in str(e).lower():\n        print(\"Not enough balance for this order\")\n    elif \"invalid symbol\" in str(e).lower():\n        print(\"Invalid trading pair\")\n    else:\n        print(f\"Unknown error: {e}\")\n```\n\n### Checking Deposit and Withdrawal History\n\n```python\nfrom pymexc import spot\nfrom datetime import datetime, timedelta\n\nspot_client = spot.HTTP(api_key=\"YOUR_KEY\", api_secret=\"YOUR_SECRET\")\n\n# Get deposit history\ndeposits = spot_client.deposit_history(coin=\"USDT\", limit=50)\nprint(\"Recent Deposits:\")\nfor deposit in deposits[:10]:  # Show last 10\n    print(f\"Amount: {deposit['amount']} {deposit['coin']}, \"\n          f\"Status: {deposit['status']}, \"\n          f\"Time: {datetime.fromtimestamp(deposit['insertTime']/1000)}\")\n\n# Get withdrawal history\nwithdrawals = spot_client.withdraw_history(coin=\"USDT\", limit=50)\nprint(\"\\nRecent Withdrawals:\")\nfor withdrawal in withdrawals[:10]:  # Show last 10\n    print(f\"Amount: {withdrawal['amount']} {withdrawal['coin']}, \"\n          f\"Status: {withdrawal['status']}, \"\n          f\"Address: {withdrawal['address']}\")\n```\n\n### Getting Multiple Symbols Data\n\n```python\nfrom pymexc import spot\n\nspot_client = spot.HTTP()\n\n# Get prices for multiple symbols\nsymbols = [\"BTCUSDT\", \"ETHUSDT\", \"BNBUSDT\", \"ADAUSDT\"]\nprices = spot_client.ticker_price(symbols=symbols)\n\nprint(\"Current Prices:\")\nfor ticker in prices:\n    print(f\"{ticker['symbol']}: {ticker['price']}\")\n\n# Get 24h stats for multiple symbols\nstats = spot_client.ticker_24h(symbols=symbols)\nprint(\"\\n24h Statistics:\")\nfor stat in stats:\n    change = float(stat['priceChangePercent'])\n    emoji = \"📈\" if change \u003e 0 else \"📉\"\n    print(f\"{emoji} {stat['symbol']}: {change:+.2f}% \"\n          f\"(High: {stat['highPrice']}, Low: {stat['lowPrice']})\")\n```\n\n### Futures: Getting Position Information\n\n```python\nfrom pymexc import futures\n\nfutures_client = futures.HTTP(api_key=\"YOUR_KEY\", api_secret=\"YOUR_SECRET\")\n\n# Get all open positions\npositions = futures_client.open_positions()\nprint(\"Open Positions:\")\nfor pos in positions.get('data', []):\n    print(f\"Symbol: {pos['symbol']}, \"\n          f\"Side: {'Long' if pos['holdVol'] \u003e 0 else 'Short'}, \"\n          f\"Volume: {pos['holdVol']}, \"\n          f\"Unrealized PnL: {pos['unrealisedPnl']}\")\n\n# Get account assets\nassets = futures_client.assets()\nprint(\"\\nAccount Assets:\")\nfor asset in assets.get('data', []):\n    if float(asset['availableBalance']) \u003e 0:\n        print(f\"{asset['currency']}: {asset['availableBalance']} \"\n              f\"(Frozen: {asset['frozenBalance']})\")\n```\n\n### Async/Await Example\n\n```python\nimport asyncio\nfrom pymexc import spot\n\nasync def main():\n    # Initialize async client\n    async_client = spot.AsyncHTTP(api_key=\"YOUR_KEY\", api_secret=\"YOUR_SECRET\")\n    \n    # Make multiple requests concurrently\n    tasks = [\n        async_client.ticker_price(\"BTCUSDT\"),\n        async_client.ticker_price(\"ETHUSDT\"),\n        async_client.ticker_24h(\"BTCUSDT\"),\n        async_client.account_information()\n    ]\n    \n    results = await asyncio.gather(*tasks)\n    \n    btc_price, eth_price, btc_stats, account = results\n    \n    print(f\"BTC Price: {btc_price['price']}\")\n    print(f\"ETH Price: {eth_price['price']}\")\n    print(f\"BTC 24h Change: {btc_stats['priceChangePercent']}%\")\n    print(f\"Account Balance: {len(account['balances'])} assets\")\n\n# Run async function\nasyncio.run(main())\n```\n\n### WebSocket: Monitoring Account Updates\n\n```python\nfrom pymexc import spot\nfrom pymexc.proto import PrivateAccountV3Api, PrivateOrdersV3Api\nimport time\n\ndef handle_account_update(message):\n    \"\"\"Handle account balance updates\"\"\"\n    # WebSocket uses protobuf by default, so message is a protobuf object\n    if isinstance(message, PrivateAccountV3Api):\n        # PrivateAccountV3Api has fields: vcoinName, coinId, balanceAmount, frozenAmount, etc.\n        vcoin_name = message.vcoinName if hasattr(message, \"vcoinName\") else \"N/A\"\n        balance = float(message.balanceAmount) if hasattr(message, \"balanceAmount\") and message.balanceAmount else 0\n        frozen = float(message.frozenAmount) if hasattr(message, \"frozenAmount\") and message.frozenAmount else 0\n        if balance \u003e 0 or frozen \u003e 0:\n            print(f\"{vcoin_name}: Balance={balance}, Frozen={frozen}\")\n    elif isinstance(message, dict) and \"d\" in message:\n        # Fallback for JSON format (if proto=False)\n        data = message[\"d\"]\n        balances = data.get(\"B\", [])\n        for balance in balances:\n            asset = balance.get(\"a\", \"\")\n            free = balance.get(\"f\", \"0\")\n            locked = balance.get(\"l\", \"0\")\n            if float(free) \u003e 0 or float(locked) \u003e 0:\n                print(f\"{asset}: Free={free}, Locked={locked}\")\n\n# Initialize WebSocket with authentication\nws_client = spot.WebSocket(api_key=\"YOUR_KEY\", api_secret=\"YOUR_SECRET\")\n\n# Subscribe to account updates\nws_client.account_update(handle_account_update)\n\n# Also subscribe to order updates\ndef handle_order_update(message):\n    \"\"\"Handle order status updates\"\"\"\n    # WebSocket uses protobuf by default, so message is a protobuf object\n    if isinstance(message, PrivateOrdersV3Api):\n        # PrivateOrdersV3Api has fields: id, clientId, price, quantity, amount, status, etc.\n        order_id = message.id if hasattr(message, \"id\") else \"N/A\"\n        price = message.price if hasattr(message, \"price\") else \"N/A\"\n        quantity = message.quantity if hasattr(message, \"quantity\") else \"N/A\"\n        status = message.status if hasattr(message, \"status\") else \"N/A\"\n        print(f\"Order Update: ID={order_id}, Price={price}, Quantity={quantity}, Status={status}\")\n    elif isinstance(message, dict) and \"d\" in message:\n        # Fallback for JSON format (if proto=False)\n        order = message[\"d\"]\n        print(f\"Order Update: {order.get('s')} {order.get('S')} \"\n              f\"{order.get('q')} @ {order.get('p')} - Status: {order.get('X')}\")\n\nws_client.account_orders(handle_order_update)\n\ntry:\n    while True:\n        time.sleep(1)\nexcept KeyboardInterrupt:\n    ws_client.exit()\n```\n\n# Documentation\n\nYou can find the official documentation for the MEXC API [here](https://www.mexc.com/api-docs/spot-v3/introduction).\n\n## API Reference\n\n### Spot API (HTTP)\n\n#### Market Data Endpoints\n\n##### `ping()`\nTest connectivity to the Rest API.\n\n```python\nresult = spot_client.ping()\n```\n\n##### `time()`\nCheck Server Time.\n\n```python\nresult = spot_client.time()\n```\n\n##### `default_symbols()`\nGet API default symbols.\n\n```python\nresult = spot_client.default_symbols()\n```\n\n##### `exchange_info(symbol=None, symbols=None)`\nGet exchange trading rules and symbol information.\n\n```python\n# Get all symbols\nresult = spot_client.exchange_info()\n\n# Get specific symbol\nresult = spot_client.exchange_info(symbol=\"BTCUSDT\")\n\n# Get multiple symbols\nresult = spot_client.exchange_info(symbols=[\"BTCUSDT\", \"ETHUSDT\"])\n```\n\n##### `order_book(symbol, limit=100)` / `depth(symbol, limit=100)`\nGet order book depth.\n\n```python\n# Using order_book\nresult = spot_client.order_book(\"BTCUSDT\", limit=100)\n\n# Using alias depth\nresult = spot_client.depth(\"BTCUSDT\", limit=100)\n```\n\n##### `trades(symbol, limit=500)`\nGet recent trades list.\n\n```python\nresult = spot_client.trades(\"BTCUSDT\", limit=100)\n```\n\n##### `agg_trades(symbol, start_time=None, end_time=None, limit=500)`\nGet compressed/aggregate trades list.\n\n```python\nresult = spot_client.agg_trades(\"BTCUSDT\", limit=100)\n```\n\n##### `klines(symbol, interval=\"1m\", start_time=None, end_time=None, limit=500)`\nGet kline/candlestick data.\n\n```python\nresult = spot_client.klines(\"BTCUSDT\", interval=\"1h\", limit=100)\n```\n\n##### `avg_price(symbol)`\nGet current average price.\n\n```python\nresult = spot_client.avg_price(\"BTCUSDT\")\n```\n\n##### `ticker_24h(symbol=None, symbols=None)` / `ticker24h(symbol=None, symbols=None)`\nGet 24hr ticker price change statistics.\n\n```python\n# Get all tickers\nresult = spot_client.ticker_24h()\n\n# Get specific ticker\nresult = spot_client.ticker_24h(symbol=\"BTCUSDT\")\n\n# Using alias\nresult = spot_client.ticker24h(\"BTCUSDT\")\n```\n\n##### `ticker_price(symbol=None, symbols=None)`\nGet symbol price ticker.\n\n```python\nresult = spot_client.ticker_price(\"BTCUSDT\")\n```\n\n##### `ticker_book_price(symbol=None)`\nGet best price/qty on the order book.\n\n```python\nresult = spot_client.ticker_book_price(\"BTCUSDT\")\n```\n\n#### Sub-Account Endpoints\n\n##### `create_sub_account(sub_account, note)`\nCreate a sub-account from the master account.\n\n```python\nresult = spot_client.create_sub_account(\"sub_account_name\", \"note\")\n```\n\n##### `sub_account_list(sub_account=None, is_freeze=None, page=1, limit=10)`\nGet details of the sub-account list.\n\n```python\nresult = spot_client.sub_account_list()\n```\n\n##### `create_sub_account_api_key(sub_account, note, permissions, ip=None)`\nCreate an APIKey for a sub-account.\n\n```python\nresult = spot_client.create_sub_account_api_key(\n    \"sub_account_name\",\n    \"note\",\n    [\"SPOT_ACCOUNT_READ\", \"SPOT_DEAL_READ\"]\n)\n```\n\n##### `query_sub_account_api_key(sub_account)`\nQuery the APIKey of a sub-account.\n\n```python\nresult = spot_client.query_sub_account_api_key(\"sub_account_name\")\n```\n\n##### `delete_sub_account_api_key(sub_account, api_key)`\nDelete the APIKey of a sub-account.\n\n```python\nresult = spot_client.delete_sub_account_api_key(\"sub_account_name\", \"api_key\")\n```\n\n##### `universal_transfer(from_account_type, to_account_type, asset, amount, from_account=None, to_account=None)`\nUniversal Transfer (For Master Account).\n\n```python\nresult = spot_client.universal_transfer(\"SPOT\", \"FUTURES\", \"USDT\", 100.0)\n```\n\n##### `query_universal_transfer_history(from_account_type, to_account_type, from_account=None, to_account=None, start_time=None, end_time=None, page=1, limit=500)`\nQuery Universal Transfer History.\n\n```python\nresult = spot_client.query_universal_transfer_history(\"SPOT\", \"FUTURES\")\n```\n\n##### `sub_account_asset(sub_account, account_type)`\nQuery Sub-account Asset.\n\n```python\nresult = spot_client.sub_account_asset(\"sub_account_name\", \"SPOT\")\n```\n\n#### Spot Account/Trade Endpoints\n\n##### `get_kyc_status()`\nQuery KYC status.\n\n```python\nresult = spot_client.get_kyc_status()\n```\n\n##### `get_uid()`\nQuery UID.\n\n```python\nresult = spot_client.get_uid()\n```\n\n##### `get_default_symbols()`\nGet user API default symbols.\n\n```python\nresult = spot_client.get_default_symbols()\n```\n\n##### `test_order(symbol, side, order_type, quantity=None, quote_order_qty=None, price=None, ...)`\nTest new order (does not place actual order).\n\n```python\nresult = spot_client.test_order(\n    symbol=\"BTCUSDT\",\n    side=\"BUY\",\n    order_type=\"LIMIT\",\n    quantity=0.001,\n    price=50000\n)\n```\n\n##### `order(symbol, side, order_type, quantity=None, quote_order_qty=None, price=None, ...)`\nPlace a new order.\n\n```python\n# Limit order\nresult = spot_client.order(\n    symbol=\"BTCUSDT\",\n    side=\"BUY\",\n    order_type=\"LIMIT\",\n    quantity=0.001,\n    price=50000,\n    time_in_force=\"GTC\"\n)\n\n# Market order\nresult = spot_client.order(\n    symbol=\"BTCUSDT\",\n    side=\"BUY\",\n    order_type=\"MARKET\",\n    quote_order_qty=100\n)\n```\n\n##### `batch_orders(batch_orders, symbol, side, order_type, ...)`\nPlace batch orders (up to 20 orders).\n\n```python\nresult = spot_client.batch_orders(\n    batch_orders=[{\"price\": \"50000\", \"quantity\": \"0.001\"}],\n    symbol=\"BTCUSDT\",\n    side=\"BUY\",\n    order_type=\"LIMIT\"\n)\n```\n\n##### `cancel_order(symbol, order_id=None, orig_client_order_id=None, new_client_order_id=None)`\nCancel an order.\n\n```python\nresult = spot_client.cancel_order(\"BTCUSDT\", order_id=\"123456\")\n```\n\n##### `cancel_all_open_orders(symbol)`\nCancel all open orders on a symbol.\n\n```python\nresult = spot_client.cancel_all_open_orders(\"BTCUSDT\")\n```\n\n##### `query_order(symbol, orig_client_order_id=None, order_id=None)`\nQuery order status.\n\n```python\nresult = spot_client.query_order(\"BTCUSDT\", order_id=\"123456\")\n```\n\n##### `current_open_orders(symbol)`\nGet current open orders.\n\n```python\nresult = spot_client.current_open_orders(\"BTCUSDT\")\n```\n\n##### `all_orders(symbol, start_time=None, end_time=None, limit=None)`\nGet all orders (active, cancelled, or completed).\n\n```python\nresult = spot_client.all_orders(\"BTCUSDT\", limit=100)\n```\n\n##### `account_information()`\nGet account information.\n\n```python\nresult = spot_client.account_information()\n```\n\n##### `account_trade_list(symbol, order_id=None, start_time=None, end_time=None, limit=None)`\nGet account trade list.\n\n```python\nresult = spot_client.account_trade_list(\"BTCUSDT\", limit=100)\n```\n\n##### `enable_mx_deduct(mx_deduct_enable)`\nEnable or disable MX deduct for spot commission fee.\n\n```python\nresult = spot_client.enable_mx_deduct(True)\n```\n\n##### `query_mx_deduct_status()`\nQuery MX deduct status.\n\n```python\nresult = spot_client.query_mx_deduct_status()\n```\n\n##### `create_stp_strategy_group(trade_group_name)`\nCreate STP strategy group.\n\n```python\nresult = spot_client.create_stp_strategy_group(\"group_name\")\n```\n\n##### `query_stp_strategy_group(trade_group_name=None)`\nQuery STP strategy group.\n\n```python\nresult = spot_client.query_stp_strategy_group()\n```\n\n##### `delete_stp_strategy_group(trade_group_id)`\nDelete STP strategy group.\n\n```python\nresult = spot_client.delete_stp_strategy_group(\"group_id\")\n```\n\n##### `add_uid_to_stp_strategy_group(uid, trade_group_id)`\nAdd uid to STP strategy group.\n\n```python\nresult = spot_client.add_uid_to_stp_strategy_group(\"123456\", \"group_id\")\n```\n\n##### `delete_uid_from_stp_strategy_group(uid, trade_group_id)`\nDelete uid from STP strategy group.\n\n```python\nresult = spot_client.delete_uid_from_stp_strategy_group(\"123456\", \"group_id\")\n```\n\n#### Wallet Endpoints\n\n##### `query_symbol_commission(symbol)`\nQuery symbol commission.\n\n```python\nresult = spot_client.query_symbol_commission(\"BTCUSDT\")\n```\n\n##### `get_currency_info()`\nQuery the currency information.\n\n```python\nresult = spot_client.get_currency_info()\n```\n\n##### `withdraw(coin, address, amount, contract_address=None, withdraw_order_id=None, network=None, memo=None, remark=None)`\nWithdraw funds.\n\n```python\nresult = spot_client.withdraw(\"USDT\", \"address\", 100.0, network=\"TRC20\")\n```\n\n##### `cancel_withdraw(id)`\nCancel withdraw.\n\n```python\nresult = spot_client.cancel_withdraw(\"withdraw_id\")\n```\n\n##### `deposit_history(coin=None, status=None, start_time=None, end_time=None, limit=None)`\nGet deposit history.\n\n```python\nresult = spot_client.deposit_history(coin=\"USDT\", limit=100)\n```\n\n##### `withdraw_history(coin=None, status=None, limit=None, start_time=None, end_time=None)`\nGet withdraw history.\n\n```python\nresult = spot_client.withdraw_history(coin=\"USDT\", limit=100)\n```\n\n##### `generate_deposit_address(coin, network)`\nGenerate deposit address.\n\n```python\nresult = spot_client.generate_deposit_address(\"USDT\", \"TRC20\")\n```\n\n##### `deposit_address(coin, network=None)`\nGet deposit address.\n\n```python\nresult = spot_client.deposit_address(\"USDT\", \"TRC20\")\n```\n\n##### `withdraw_address(coin=None, page=None, limit=None)`\nGet withdraw address.\n\n```python\nresult = spot_client.withdraw_address(coin=\"USDT\")\n```\n\n##### `user_universal_transfer(from_account_type, to_account_type, asset, amount)`\nUser Universal Transfer.\n\n```python\nresult = spot_client.user_universal_transfer(\"SPOT\", \"FUTURES\", \"USDT\", 100.0)\n```\n\n##### `user_universal_transfer_history(from_account_type, to_account_type, start_time=None, end_time=None, page=1, size=10)`\nQuery User Universal Transfer History.\n\n```python\nresult = spot_client.user_universal_transfer_history(\"SPOT\", \"FUTURES\")\n```\n\n##### `user_universal_transfer_history_by_tranid(tran_id)`\nQuery User Universal Transfer History by tranId.\n\n```python\nresult = spot_client.user_universal_transfer_history_by_tranid(\"tran_id\")\n```\n\n##### `get_assets_convert_into_mx()`\nGet assets that can be converted into MX.\n\n```python\nresult = spot_client.get_assets_convert_into_mx()\n```\n\n##### `dust_transfer(asset)`\nDust transfer (convert small amounts to MX).\n\n```python\nresult = spot_client.dust_transfer([\"BTC\", \"ETH\"])\n```\n\n##### `dustlog(start_time=None, end_time=None, page=None, limit=None)`\nGet dust transfer log.\n\n```python\nresult = spot_client.dustlog()\n```\n\n##### `internal_transfer(to_account_type, to_account, asset, amount, area_code=None)`\nInternal transfer.\n\n```python\nresult = spot_client.internal_transfer(\"EMAIL\", \"user@example.com\", \"USDT\", 100.0)\n```\n\n##### `internal_transfer_history(start_time=None, end_time=None, page=None, limit=None, tran_id=None)`\nGet internal transfer history.\n\n```python\nresult = spot_client.internal_transfer_history()\n```\n\n#### WebSocket User Data Streams\n\n##### `create_listen_key()`\nCreate a listen key for user data stream.\n\n```python\nresult = spot_client.create_listen_key()\n```\n\n##### `get_listen_keys()`\nGet valid listen keys.\n\n```python\nresult = spot_client.get_listen_keys()\n```\n\n##### `keep_alive_listen_key(listen_key)`\nKeep-alive a listen key.\n\n```python\nresult = spot_client.keep_alive_listen_key(\"listen_key\")\n```\n\n##### `close_listen_key(listen_key)`\nClose a listen key.\n\n```python\nresult = spot_client.close_listen_key(\"listen_key\")\n```\n\n#### Rebate Endpoints\n\n##### `get_rebate_history_records(start_time=None, end_time=None, page=None)`\nGet rebate history records.\n\n```python\nresult = spot_client.get_rebate_history_records()\n```\n\n##### `get_rebate_records_detail(start_time=None, end_time=None, page=None)`\nGet rebate records detail.\n\n```python\nresult = spot_client.get_rebate_records_detail()\n```\n\n##### `get_self_rebate_records_detail(start_time=None, end_time=None, page=None)`\nGet self rebate records detail.\n\n```python\nresult = spot_client.get_self_rebate_records_detail()\n```\n\n##### `query_refercode()`\nQuery refer code.\n\n```python\nresult = spot_client.query_refercode()\n```\n\n##### `affiliate_commission_record(start_time=None, end_time=None, invite_code=None, page=None, page_size=None)`\nGet affiliate commission record (affiliate only).\n\n```python\nresult = spot_client.affiliate_commission_record()\n```\n\n##### `affiliate_withdraw_record(start_time=None, end_time=None, invite_code=None, page=None, page_size=None)`\nGet affiliate withdraw record (affiliate only).\n\n```python\nresult = spot_client.affiliate_withdraw_record()\n```\n\n##### `affiliate_commission_detail_record(start_time=None, end_time=None, invite_code=None, page=None, page_size=None, type=None)`\nGet affiliate commission detail record (affiliate only).\n\n```python\nresult = spot_client.affiliate_commission_detail_record()\n```\n\n##### `affiliate_campaign(start_time=None, end_time=None, page=None, page_size=None)`\nGet affiliate campaign data (affiliate only).\n\n```python\nresult = spot_client.affiliate_campaign()\n```\n\n##### `affiliate_referral(start_time=None, end_time=None, uid=None, invite_code=None, page=None, page_size=None)`\nGet affiliate referral data (affiliate only).\n\n```python\nresult = spot_client.affiliate_referral()\n```\n\n##### `affiliate_subaffiliates(start_time=None, end_time=None, invite_code=None, page=None, page_size=None)`\nGet subaffiliates data (affiliate only).\n\n```python\nresult = spot_client.affiliate_subaffiliates()\n```\n\n### Spot API (WebSocket)\n\n#### Public Streams\n\n##### `deals_stream(callback, symbol, interval=None)`\nSubscribe to trade streams.\n\n```python\ndef handle_deals(message):\n    print(message)\n\nws_spot_client.deals_stream(handle_deals, \"BTCUSDT\")\n```\n\n##### `kline_stream(callback, symbol, interval)`\nSubscribe to kline streams.\n\n```python\ndef handle_kline(message):\n    print(message)\n\nws_spot_client.kline_stream(handle_kline, \"BTCUSDT\", \"Min1\")\n```\n\n##### `depth_stream(callback, symbol, interval=\"100ms\")`\nSubscribe to diff depth stream.\n\n```python\ndef handle_depth(message):\n    print(message)\n\nws_spot_client.depth_stream(handle_depth, \"BTCUSDT\", \"100ms\")\n```\n\n##### `limit_depth_stream(callback, symbol, level)`\nSubscribe to partial book depth streams.\n\n```python\ndef handle_limit_depth(message):\n    print(message)\n\nws_spot_client.limit_depth_stream(handle_limit_depth, \"BTCUSDT\", 10)\n```\n\n##### `book_ticker_stream(callback, symbol, interval=\"100ms\")`\nSubscribe to individual symbol book ticker streams.\n\n```python\ndef handle_book_ticker(message):\n    print(message)\n\nws_spot_client.book_ticker_stream(handle_book_ticker, \"BTCUSDT\")\n```\n\n##### `book_ticker_batch_stream(callback, symbols)`\nSubscribe to batch book ticker streams.\n\n```python\ndef handle_batch_ticker(message):\n    print(message)\n\nws_spot_client.book_ticker_batch_stream(handle_batch_ticker, [\"BTCUSDT\", \"ETHUSDT\"])\n```\n\n##### `mini_tickers_stream(callback, timezone=\"UTC+8\")`\nSubscribe to mini tickers of all trading pairs.\n\n```python\ndef handle_mini_tickers(message):\n    print(message)\n\nws_spot_client.mini_tickers_stream(handle_mini_tickers)\n```\n\n##### `mini_ticker_stream(callback, symbol, timezone=\"UTC+8\")`\nSubscribe to mini ticker of specified trading pair.\n\n```python\ndef handle_mini_ticker(message):\n    print(message)\n\nws_spot_client.mini_ticker_stream(handle_mini_ticker, \"BTCUSDT\")\n```\n\n#### Private Streams\n\n##### `account_update(callback)`\nSubscribe to spot account updates.\n\n```python\ndef handle_account_update(message):\n    print(message)\n\nws_spot_client.account_update(handle_account_update)\n```\n\n##### `account_deals(callback)`\nSubscribe to spot account deals.\n\n```python\ndef handle_account_deals(message):\n    print(message)\n\nws_spot_client.account_deals(handle_account_deals)\n```\n\n##### `account_orders(callback)`\nSubscribe to spot account orders.\n\n```python\ndef handle_account_orders(message):\n    print(message)\n\nws_spot_client.account_orders(handle_account_orders)\n```\n\n### Futures API (HTTP)\n\n#### Market Endpoints\n\n##### `ping()`\nGet server time.\n\n```python\nresult = futures_client.ping()\n```\n\n##### `detail(symbol=None)`\nGet contract info.\n\n```python\nresult = futures_client.detail(\"BTC_USDT\")\n```\n\n##### `support_currencies()`\nGet transferable currencies.\n\n```python\nresult = futures_client.support_currencies()\n```\n\n##### `get_depth(symbol, limit=None)`\nGet contract order book depth.\n\n```python\nresult = futures_client.get_depth(\"BTC_USDT\", limit=100)\n```\n\n##### `depth_commits(symbol, limit)`\nGet the last N depth snapshots.\n\n```python\nresult = futures_client.depth_commits(\"BTC_USDT\", 5)\n```\n\n##### `index_price(symbol)`\nGet index price.\n\n```python\nresult = futures_client.index_price(\"BTC_USDT\")\n```\n\n##### `fair_price(symbol)`\nGet fair price.\n\n```python\nresult = futures_client.fair_price(\"BTC_USDT\")\n```\n\n##### `funding_rate(symbol)`\nGet funding rate.\n\n```python\nresult = futures_client.funding_rate(\"BTC_USDT\")\n```\n\n##### `kline(symbol, interval=None, start=None, end=None)`\nGet candlestick data.\n\n```python\nresult = futures_client.kline(\"BTC_USDT\", interval=\"Min1\")\n```\n\n##### `kline_index_price(symbol, interval=\"Min1\", start=None, end=None)`\nGet index price candles.\n\n```python\nresult = futures_client.kline_index_price(\"BTC_USDT\", interval=\"Min1\")\n```\n\n##### `kline_fair_price(symbol, interval=\"Min1\", start=None, end=None)`\nGet fair price candles.\n\n```python\nresult = futures_client.kline_fair_price(\"BTC_USDT\", interval=\"Min1\")\n```\n\n##### `deals(symbol, limit=100)`\nGet recent trades.\n\n```python\nresult = futures_client.deals(\"BTC_USDT\", limit=100)\n```\n\n##### `ticker(symbol=None)`\nGet ticker (contract market data).\n\n```python\nresult = futures_client.ticker(\"BTC_USDT\")\n```\n\n##### `risk_reverse(symbol)`\nGet insurance fund balance.\n\n```python\nresult = futures_client.risk_reverse(\"BTC_USDT\")\n```\n\n##### `risk_reverse_history(symbol, page_num=1, page_size=20)`\nGet insurance fund balance history.\n\n```python\nresult = futures_client.risk_reverse_history(\"BTC_USDT\")\n```\n\n##### `funding_rate_history(symbol, page_num=1, page_size=20)`\nGet funding rate history.\n\n```python\nresult = futures_client.funding_rate_history(\"BTC_USDT\")\n```\n\n#### Account and Trading Endpoints\n\n##### `assets()`\nGet all account assets.\n\n```python\nresult = futures_client.assets()\n```\n\n##### `asset(currency)`\nGet single currency asset information.\n\n```python\nresult = futures_client.asset(\"USDT\")\n```\n\n##### `transfer_record(currency=None, state=None, type=None, page_num=1, page_size=20)`\nGet asset transfer records.\n\n```python\nresult = futures_client.transfer_record()\n```\n\n##### `history_positions(symbol=None, type=None, start_time=None, end_time=None, page_num=1, page_size=20)`\nGet historical positions.\n\n```python\nresult = futures_client.history_positions()\n```\n\n##### `open_positions(symbol=None, position_id=None)`\nGet open positions.\n\n```python\nresult = futures_client.open_positions()\n```\n\n##### `funding_records(position_type, start_time, end_time, symbol=None, position_id=None, page_num=1, page_size=20)`\nGet funding fee details.\n\n```python\nresult = futures_client.funding_records(1, start_time, end_time)\n```\n\n##### `open_orders(symbol=None, page_num=1, page_size=20)`\nGet current open orders.\n\n```python\nresult = futures_client.open_orders()\n```\n\n##### `history_orders(symbol=None, states=None, category=None, start_time=None, end_time=None, side=None, order_id=None, page_num=1, page_size=20)`\nGet all historical orders.\n\n```python\nresult = futures_client.history_orders()\n```\n\n##### `get_order_external(symbol, external_oid)`\nGet order by external ID.\n\n```python\nresult = futures_client.get_order_external(\"BTC_USDT\", \"ext_123\")\n```\n\n##### `get_order(order_id)`\nGet order information by order ID.\n\n```python\nresult = futures_client.get_order(123456)\n```\n\n##### `batch_query(order_ids)`\nBatch query orders by order ID.\n\n```python\nresult = futures_client.batch_query([123456, 123457])\n```\n\n##### `deal_details(symbol, order_id)`\nGet trade details by order ID.\n\n```python\nresult = futures_client.deal_details(\"BTC_USDT\", 123456)\n```\n\n##### `order_deals(symbol, start_time=None, end_time=None, page_num=1, page_size=20)`\nGet historical order deal details.\n\n```python\nresult = futures_client.order_deals(\"BTC_USDT\")\n```\n\n##### `get_trigger_orders(symbol=None, states=None, side=None, start_time=None, end_time=None, page_num=1, page_size=20)`\nGet plan order list.\n\n```python\nresult = futures_client.get_trigger_orders()\n```\n\n##### `get_stop_limit_orders(symbol=None, is_finished=None, state=None, type=None, start_time=None, end_time=None, page_num=1, page_size=20)`\nGet take-profit/stop-loss order list.\n\n```python\nresult = futures_client.get_stop_limit_orders()\n```\n\n##### `risk_limit(symbol=None)`\nGet risk limits.\n\n```python\nresult = futures_client.risk_limit()\n```\n\n##### `tiered_fee_rate(symbol=None)`\nGet fee details.\n\n```python\nresult = futures_client.tiered_fee_rate()\n```\n\n##### `change_margin(position_id, amount, type)`\nModify position margin (Under Maintenance).\n\n```python\nresult = futures_client.change_margin(123, 100.0, \"ADD\")\n```\n\n##### `get_leverage(symbol)`\nGet position leverage multipliers.\n\n```python\nresult = futures_client.get_leverage(\"BTC_USDT\")\n```\n\n##### `change_leverage(leverage, position_id=None, open_type=None, symbol=None, position_type=None, leverage_mode=None, margin_selected=None, leverage_selected=None)`\nModify leverage (Under Maintenance).\n\n```python\nresult = futures_client.change_leverage(10, symbol=\"BTC_USDT\")\n```\n\n##### `get_position_mode()`\nGet user position mode.\n\n```python\nresult = futures_client.get_position_mode()\n```\n\n##### `change_position_mode(position_mode)`\nModify user position mode (Under Maintenance).\n\n```python\nresult = futures_client.change_position_mode(1)\n```\n\n##### `order(symbol, price, vol, side, type, open_type, position_id=None, leverage=None, ...)`\nPlace order (Under Maintenance).\n\n```python\nresult = futures_client.order(\n    symbol=\"BTC_USDT\",\n    price=50000,\n    vol=0.001,\n    side=1,\n    type=1,\n    open_type=1,\n    leverage=10\n)\n```\n\n##### `bulk_order(symbol, price, vol, side, type, open_type, position_id=None, external_oid=None, ...)`\nBulk order (Under Maintenance).\n\n```python\nresult = futures_client.bulk_order(\n    symbol=\"BTC_USDT\",\n    price=50000,\n    vol=0.001,\n    side=1,\n    type=1,\n    open_type=1\n)\n```\n\n##### `cancel_order(order_ids)`\nCancel orders (Under Maintenance).\n\n```python\nresult = futures_client.cancel_order([123456, 123457])\n```\n\n##### `cancel_order_with_external(orders)`\nCancel by external order ID (Under Maintenance).\n\n```python\nresult = futures_client.cancel_order_with_external([\n    {\"symbol\": \"BTC_USDT\", \"externalOid\": \"ext_123\"}\n])\n```\n\n##### `cancel_all(symbol=None)`\nCancel all orders under a contract (Under Maintenance).\n\n```python\nresult = futures_client.cancel_all(\"BTC_USDT\")\n```\n\n##### `trigger_order(symbol, vol, side, open_type, trigger_price, trigger_type, execute_cycle, order_type, trend, leverage, ...)`\nPlace plan order (Under Maintenance).\n\n```python\nresult = futures_client.trigger_order(\n    symbol=\"BTC_USDT\",\n    vol=0.001,\n    side=1,\n    open_type=1,\n    trigger_price=50000,\n    trigger_type=1,\n    execute_cycle=1,\n    order_type=1,\n    trend=1,\n    leverage=10\n)\n```\n\n##### `cancel_trigger_order(orders)`\nCancel planned orders (Under Maintenance).\n\n```python\nresult = futures_client.cancel_trigger_order([\n    {\"symbol\": \"BTC_USDT\", \"orderId\": 123456}\n])\n```\n\n##### `cancel_all_trigger_orders(symbol=None)`\nCancel all planned orders (Under Maintenance).\n\n```python\nresult = futures_client.cancel_all_trigger_orders(\"BTC_USDT\")\n```\n\n##### `cancel_stop_order(orders)`\nCancel TP/SL planned orders (Under Maintenance).\n\n```python\nresult = futures_client.cancel_stop_order([\n    {\"stopPlanOrderId\": 123456}\n])\n```\n\n##### `cancel_all_stop_orders(symbol=None)`\nCancel all TP/SL orders (Under Maintenance).\n\n```python\nresult = futures_client.cancel_all_stop_orders(\"BTC_USDT\")\n```\n\n##### `place_stop_order(symbol, vol, side, open_type, trigger_price, trigger_type, order_type, trend, position_id, ...)`\nPlace TP/SL order (Under Maintenance).\n\n```python\nresult = futures_client.place_stop_order(\n    symbol=\"BTC_USDT\",\n    vol=0.001,\n    side=1,\n    open_type=1,\n    trigger_price=50000,\n    trigger_type=1,\n    order_type=1,\n    trend=1,\n    position_id=123\n)\n```\n\n### Broker API (HTTP)\n\n##### `query_universal_transfer_history(from_account_type, to_account_type, from_account=None, to_account=None, start_time=None, end_time=None, page=1, limit=500)`\nQuery Universal Transfer History - broker user.\n\n```python\nresult = broker_client.query_universal_transfer_history(\"SPOT\", \"FUTURES\")\n```\n\n##### `create_sub_account(sub_account, note, password=None)`\nCreate a Sub-account.\n\n```python\nresult = broker_client.create_sub_account(\"sub_account_name\", \"note\")\n```\n\n##### `query_sub_account_list(sub_account=None, page=1, limit=10)`\nQuery Sub-account List.\n\n```python\nresult = broker_client.query_sub_account_list()\n```\n\n##### `query_sub_account_status(sub_account)`\nQuery Sub-account Status.\n\n```python\nresult = broker_client.query_sub_account_status(\"sub_account_name\")\n```\n\n##### `create_sub_account_api_key(sub_account, permissions, note, ip=None)`\nCreate an APIKey for a Sub-account.\n\n```python\nresult = broker_client.create_sub_account_api_key(\n    \"sub_account_name\",\n    [\"SPOT_ACCOUNT_READ\"],\n    \"note\"\n)\n```\n\n##### `query_sub_account_api_key(sub_account)`\nQuery the APIKey of a Sub-account.\n\n```python\nresult = broker_client.query_sub_account_api_key(\"sub_account_name\")\n```\n\n##### `delete_sub_account_api_key(sub_account, api_key)`\nDelete the APIKey of a Sub-account.\n\n```python\nresult = broker_client.delete_sub_account_api_key(\"sub_account_name\", \"api_key\")\n```\n\n##### `generate_deposit_address(coin, network)`\nGenerate Deposit Address of Sub-account.\n\n```python\nresult = broker_client.generate_deposit_address(\"USDT\", \"TRC20\")\n```\n\n##### `deposit_address(coin)`\nDeposit Address of Sub-account.\n\n```python\nresult = broker_client.deposit_address(\"USDT\")\n```\n\n##### `query_sub_account_deposit_history(coin=None, status=None, start_time=None, end_time=None, limit=20, page=1)`\nQuery Sub-account Deposit History.\n\n```python\nresult = broker_client.query_sub_account_deposit_history()\n```\n\n##### `query_all_sub_account_deposit_history(coin=None, status=None, start_time=None, end_time=None, limit=100, page=1)`\nQuery All Sub-account Deposit History (Recent 3 days).\n\n```python\nresult = broker_client.query_all_sub_account_deposit_history()\n```\n\n##### `withdraw(coin, network, address, amount, password=None, remark=None)`\nWithdraw.\n\n```python\nresult = broker_client.withdraw(\"USDT\", \"TRC20\", \"address\", 100.0)\n```\n\n##### `universal_transfer(from_account_type, to_account_type, asset, amount, from_account=None, to_account=None)`\nUniversal Transfer.\n\n```python\nresult = broker_client.universal_transfer(\"SPOT\", \"FUTURES\", \"USDT\", 100.0)\n```\n\n##### `enable_futures_for_sub_account(sub_account)`\nEnable Futures for Sub-account.\n\n```python\nresult = broker_client.enable_futures_for_sub_account(\"sub_account_name\")\n```\n\n##### `get_broker_rebate_history_records(start_time=None, end_time=None, page=1, page_size=10)`\nGet Broker Rebate History Records.\n\n```python\nresult = broker_client.get_broker_rebate_history_records()\n```\n\n# License\n\nThis library is licensed under the MIT License.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmakarworld%2Fpymexc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmakarworld%2Fpymexc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmakarworld%2Fpymexc/lists"}