Skip to content

dimboknv/mex

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MEXC Copy Trading - Monorepo

Монорепозиторий с двумя независимыми приложениями для copy trading на бирже MEXC:

  • Telegram Bot - управление через Telegram
  • Web App - веб-интерфейс с аутентификацией

📁 Структура проекта

tg-mexc/
├── cmd/
│   ├── tg-bot/         # Telegram бот
│   └── web-app/        # Веб-приложение
├── pkg/                # Shared пакеты
│   ├── models/         # Модели данных
│   ├── storage/        # Работа с БД
│   ├── config/         # Конфигурация
│   └── services/       # Сервисы (mexc, copytrading, websocket, telegram)
├── internal/           # Internal пакеты
│   ├── api/            # REST API handlers (для web-app)
│   ├── auth/           # JWT аутентификация
│   ├── handlers/       # Telegram handlers
│   └── middleware/     # HTTP middleware
├── web/                # Frontend файлы
├── migrations/         # SQL миграции
└── data/               # Базы данных

🚀 Быстрый старт

Установка зависимостей

go mod download

1. Telegram Bot

Конфигурация

Установите переменные окружения:

export TELEGRAM_BOT_TOKEN="your_bot_token_here"
export DRY_RUN=true  # true = тестовый режим, false = реальные сделки

Запуск

cd cmd/tg-bot
go build
./tg-bot

Использование

  1. Откройте бот в Telegram
  2. Команда /start для просмотра всех команд
  3. Команда /script для получения JS скрипта для извлечения cookies
  4. Добавьте аккаунты через /add_browser
  5. Установите мастер аккаунт: /set_master <name>
  6. Запустите copy trading: /start_copy

База данных: ./accounts_browser.db Логи: ./bot_browser.log


2. Web App

Конфигурация

Установите переменные окружения:

export PORT=8080                                    # Порт (опционально, по умолчанию 8080)
export JWT_SECRET="your-secret-key-here"           # JWT секрет (обязательно в продакшене!)
export DB_PATH="./web_app.db"                      # Путь к БД (опционально)
export DRY_RUN=true                                 # true = тестовый режим, false = реальные сделки

Запуск

cd cmd/web-app
go build
./web-app

Веб-интерфейс будет доступен по адресу: http://localhost:8080

Первый запуск

  1. Откройте http://localhost:8080 в браузере
  2. Нажмите "Зарегистрироваться"
  3. Создайте аккаунт (username + password)
  4. Войдите в систему

База данных: ./web_app.db Логи: ./web_app.log


🔐 Безопасность

DRY_RUN режим (рекомендуется для начала)

По умолчанию включен режим DRY_RUN - все действия логируются, но реальные сделки НЕ открываются.

Что делается в DRY_RUN:

  • ✅ WebSocket подключение к мастер аккаунту
  • ✅ Получение событий ордеров
  • ✅ Получение leverage дочерних аккаунтов
  • ✅ Полное логирование всех действий

Что НЕ делается:

  • ❌ Реальные ордера не открываются

Production режим

Для активации реальной торговли:

export DRY_RUN=false
./tg-bot  # или ./web-app

⚠️ ВНИМАНИЕ: Это включит реальную торговлю!


📊 Функции

Telegram Bot

  • ✅ Добавление аккаунтов через browser cookies
  • ✅ Просмотр балансов всех аккаунтов
  • ✅ Проверка комиссий
  • ✅ Copy trading с мастер → slave аккаунтов
  • ✅ Автоматическая синхронизация leverage
  • ✅ Игнорирование аккаунтов с комиссией
  • ✅ Открытие/закрытие позиций на всех аккаунтах
  • ✅ Просмотр открытых позиций и ордеров

Web App

  • ✅ Аутентификация с JWT токенами
  • ✅ Управление аккаунтами (добавление, удаление, просмотр)
  • ✅ Отображение балансов и комиссий
  • ✅ Установка мастер аккаунта
  • ✅ Включение/выключение аккаунтов
  • ✅ Copy trading управление
  • ✅ История сделок с timestamps
  • ✅ Activity logs
  • ✅ Polling обновления (каждые 3 секунды)

🔧 API Endpoints (Web App)

Публичные

  • POST /api/auth/login - Вход
  • POST /api/auth/register - Регистрация
  • GET /health - Health check

Защищенные (требуют JWT токен в заголовке Authorization: Bearer <token>)

Аккаунты:

  • GET /api/accounts - Список аккаунтов
  • GET /api/accounts/details - Аккаунты с балансами и комиссиями
  • POST /api/accounts - Добавить аккаунт
  • DELETE /api/accounts/:id - Удалить аккаунт
  • PUT /api/accounts/:id/master - Установить как мастер
  • PUT /api/accounts/:id/disabled - Включить/выключить аккаунт
  • GET /api/accounts/script - Получить JS скрипт

Copy Trading:

  • POST /api/copy-trading/start - Запустить
  • POST /api/copy-trading/stop - Остановить
  • GET /api/copy-trading/status - Статус

История:

  • GET /api/trades?limit=50&offset=0 - История сделок
  • GET /api/logs?limit=100&offset=0 - Логи активности

🛠️ Разработка

Сборка обоих приложений

# Telegram Bot
cd cmd/tg-bot && go build

# Web App
cd cmd/web-app && go build

Тестирование

# Проверка health endpoint
curl http://localhost:8080/health

# Регистрация
curl -X POST http://localhost:8080/api/auth/register \
  -H "Content-Type: application/json" \
  -d '{"username":"admin","password":"123456"}'

# Вход
curl -X POST http://localhost:8080/api/auth/login \
  -H "Content-Type: application/json" \
  -d '{"username":"admin","password":"123456"}'

📝 Добавление аккаунта

  1. Получить JS скрипт:

    • Telegram: /script
    • Web: Кнопка "Добавить аккаунт" → скопировать скрипт
  2. Открыть MEXC:

  3. Выполнить скрипт:

    • Открыть DevTools (F12) → Console
    • Написать: allow pasting
    • Вставить скрипт и нажать Enter
    • Файл mexc-data.json автоматически скачается
  4. Добавить в приложение:

    • Telegram: Прикрепить файл с Caption /add_browser <name>
    • Web: Вставить JSON в форму добавления аккаунта

⚙️ Настройки

Auto-disable on fee

Функция автоматического отключения аккаунтов с комиссией (только в Web App):

  • Включена по умолчанию для всех новых аккаунтов
  • Если обнаружена комиссия > 0, аккаунт автоматически disabled
  • Можно настроить для каждого аккаунта отдельно

🐛 Troubleshooting

Telegram Bot не запускается

  • Проверьте TELEGRAM_BOT_TOKEN
  • Проверьте доступ к интернету
  • Проверьте логи в bot_browser.log

Web App не запускается

  • Проверьте порт 8080 (или установите другой через PORT)
  • Проверьте логи в web_app.log
  • Убедитесь что директория web/ существует

Copy Trading не работает

  • Убедитесь что установлен мастер аккаунт
  • Проверьте что есть активные slave аккаунты
  • Проверьте логи

401 Unauthorized в Web App

  • Токен истек (24 часа), войдите заново
  • Проверьте что токен передается в заголовке Authorization: Bearer <token>

📦 Зависимости

  • github.com/gorilla/mux - HTTP router
  • github.com/golang-jwt/jwt/v5 - JWT токены
  • golang.org/x/crypto/bcrypt - Хеширование паролей
  • github.com/go-telegram-bot-api/telegram-bot-api/v5 - Telegram Bot API
  • modernc.org/sqlite - SQLite база данных
  • github.com/lmittmann/tint - Pretty logging

📄 Лицензия

Private project


✨ Roadmap

  • Интеграция copy trading сервиса с Web App
  • WebSocket для real-time обновлений в Web App
  • Дашборд с графиками и статистикой
  • Уведомления в Telegram из Web App
  • Multi-user поддержка в Telegram Bot

Создано с ❤️ для автоматизации copy trading на MEXC

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published