Интеграция бота с API MEXC
MEXC — биржа с одним из самых широких листингов альткоинов. REST API v3 построено по образцу Binance API — кто работал с Binance, разберётся быстро. Особенность: MEXC часто листирует токены раньше других бирж, что создаёт возможности для listing sniper ботов.
Подключение через CCXT
import ccxt
import asyncio
exchange = ccxt.mexc({
'apiKey': API_KEY,
'secret': API_SECRET,
'enableRateLimit': True,
})
async def get_balance():
balance = await exchange.fetch_balance()
return {k: v for k, v in balance['total'].items() if v > 0}
async def place_order(symbol: str, side: str, amount: float, price: float = None):
order_type = 'market' if price is None else 'limit'
return await exchange.create_order(symbol, order_type, side, amount, price)
MEXC REST API напрямую
Для специфических функций MEXC используем прямой API:
import hmac, hashlib, time, requests
class MEXCClient:
BASE_URL = 'https://api.mexc.com'
def __init__(self, api_key: str, secret: str):
self.api_key = api_key
self.secret = secret
def _sign(self, params: dict) -> str:
query = '&'.join(f"{k}={v}" for k, v in sorted(params.items()))
return hmac.new(self.secret.encode(), query.encode(), hashlib.sha256).hexdigest()
def get_ticker(self, symbol: str) -> dict:
r = requests.get(f"{self.BASE_URL}/api/v3/ticker/bookTicker",
params={'symbol': symbol})
return r.json()
def place_order(self, symbol: str, side: str, order_type: str,
quantity: float, price: float = None) -> dict:
params = {
'symbol': symbol,
'side': side.upper(),
'type': order_type.upper(),
'quantity': quantity,
'timestamp': int(time.time() * 1000),
}
if price:
params['price'] = price
params['signature'] = self._sign(params)
r = requests.post(f"{self.BASE_URL}/api/v3/order",
headers={'X-MEXC-APIKEY': self.api_key},
params=params)
return r.json()
Listing Sniper Strategy
MEXC часто анонсирует листинг заранее. Бот следит за анонсами и готовится купить в первую секунду:
class ListingSniper:
async def monitor_new_listings(self):
"""Проверяем новые пары каждые 30 секунд"""
known_symbols = set(await self.get_all_symbols())
while True:
current_symbols = set(await self.get_all_symbols())
new_symbols = current_symbols - known_symbols
for symbol in new_symbols:
print(f"New listing detected: {symbol}")
await self.prepare_buy_order(symbol)
known_symbols = current_symbols
await asyncio.sleep(30)
async def prepare_buy_order(self, symbol: str):
"""Быстрая покупка при обнаружении нового листинга"""
try:
order = await self.exchange.create_order(
symbol, 'market', 'buy',
self.buy_amount_usdt,
params={'quoteOrderQty': self.buy_amount_usdt} # покупаем на сумму в USDT
)
print(f"Bought {symbol}: {order}")
except Exception as e:
print(f"Failed to buy {symbol}: {e}")
Rate Limits
MEXC лимиты: 500 запросов в секунду для API, 20 в секунду для торговых операций. При превышении — ответ 429 с Retry-After заголовком.
# CCXT встроенный rate limiter
exchange.enableRateLimit = True
exchange.rateLimit = 50 # мс между запросами
Интеграция бота с MEXC API: 1–2 недели. MEXC совместим с большинством кода, написанного под Binance API — миграция обычно занимает 1–2 дня.







