Skip to content

Add MEXC scanner: FastAPI + web UI for spot & futures markets#4

Open
devin-ai-integration[bot] wants to merge 1 commit into
mainfrom
devin/1778517314-mexc-scanner
Open

Add MEXC scanner: FastAPI + web UI for spot & futures markets#4
devin-ai-integration[bot] wants to merge 1 commit into
mainfrom
devin/1778517314-mexc-scanner

Conversation

@devin-ai-integration
Copy link
Copy Markdown

Summary

Python-сервис на FastAPI + одностраничный веб-интерфейс с двумя вкладками
(Спот и Фьючерсы), агрегирующий данные с биржи MEXC.

По каждому символу выводится:

Поле Спот Фьючерсы
Последняя цена
Bid / Ask
Изменение за 24ч, %
Объём за 24ч
Ставка фандинга
Статус депозита ✓¹ ✓¹
Статус вывода ✓¹ ✓¹
Адрес контракта ✓¹

¹ — требует MEXC API-ключи (read-only) для подписанного эндпоинта
/api/v3/capital/config/getall. Без ключей соответствующие поля показываются
как N/A; адрес контракта для спота при этом берётся из публичного
/api/v3/exchangeInfo (где он есть).

Используемые эндпоинты MEXC

Публичные:

  • GET https://api.mexc.com/api/v3/exchangeInfo — список спот-пар, full name, contractAddress.
  • GET https://api.mexc.com/api/v3/ticker/24hr — цена/bid/ask/объём по всем парам.
  • GET https://contract.mexc.com/api/v1/contract/detail — список бессрочных контрактов.
  • GET https://contract.mexc.com/api/v1/contract/ticker — цена/bid1/ask1/объём контрактов.
  • GET https://contract.mexc.com/api/v1/contract/funding_rate — фандинг.

Приватные (опционально):

  • GET https://api.mexc.com/api/v3/capital/config/getall — статусы депозита/вывода
    и адреса контрактов по сетям (HMAC-SHA256 подпись).

Архитектура

app/
├── main.py            FastAPI: маршруты /api/spot, /api/futures, /api/refresh, /api/health
├── mexc.py            HTTP-клиент MEXC (httpx, async)
├── aggregator.py      сборка строк таблиц из ответов биржи
├── cache.py           простой async TTL-кэш (30с по умолчанию)
└── static/            index.html, styles.css, app.js — SPA с двумя вкладками

Все запросы к MEXC выполняются параллельно через asyncio.gather. Результаты
кэшируются на стороне сервера (CACHE_TTL, по умолчанию 30с), чтобы не упереться
в rate-limits.

Запуск

python -m venv .venv && source .venv/bin/activate
pip install -e .
python -m app.main           # либо: uvicorn app.main:app

Открыть http://localhost:8000. Опционально: положить MEXC_API_KEY и
MEXC_API_SECRET в .env для полной информации по депозитам/выводам.

Review & Testing Checklist for Human

  • pip install -e . ставится без ошибок, python -m app.main стартует на порту 8000.
  • GET /api/spot и GET /api/futures возвращают непустые rows (зависит от доступности api.mexc.com и contract.mexc.com из вашей сети).
  • Веб-интерфейс рендерит две вкладки, между ними переключение работает, поиск/сортировка по столбцам работают.
  • (Если есть ключи) положить MEXC_API_KEY/MEXC_API_SECRET в .env и проверить, что поля «Депозит/Вывод» перестают показывать N/A и появляются адреса контрактов из capital/config/getall.

Notes

  • Бессрочные фьючерсы не имеют собственного «адреса контракта»; в этой колонке
    на вкладке Фьючерсы показывается адрес базовой монеты из capital/config
    (поэтому без ключей колонка пуста).
  • ruff check app проходит без замечаний на текущей кодовой базе.

Link to Devin session: https://app.devin.ai/sessions/3d638d482e374bd7b27d08e281c8e82f
Requested by: @evgetos

Co-Authored-By: harlequincariotta <harlequincariotta@wshu.net>
@devin-ai-integration
Copy link
Copy Markdown
Author

🤖 Devin AI Engineer

I'll be helping with this pull request! Here's what you should know:

✅ I will automatically:

  • Address comments on this PR. Add '(aside)' to your comment to have me ignore it.
  • Look at CI failures and help fix them

Note: I can only respond to comments from users who have write access to this repository.

⚙️ Control Options:

  • Disable automatic comment and CI monitoring

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant