Інтеграція бота з 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 напряму
Для специфічних функцій використовуємо прямий API MEXC:
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
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} # купуємо на X USDT
)
print(f"Bought {symbol}: {order}")
except Exception as e:
print(f"Failed to buy {symbol}: {e}")
Обмеження швидкості
MEXC обмеження: 500 запитів на секунду для API, 20 на секунду для торговельних операцій. При перевищенні — відповідь 429 з заголовком Retry-After.
# Вбудований rate limiter CCXT
exchange.enableRateLimit = True
exchange.rateLimit = 50 # мс між запитами
Інтеграція бота з MEXC API: 1–2 тижні. MEXC сумісний з більшістю коду, написаного під Binance API — міграція зазвичай займає 1–2 дні.







