Skip to content

A Telegram bot that sends notifications about profitable deals in inter-exchange cryptocurrency trading.

License

Notifications You must be signed in to change notification settings

MuhammadIbrahimli/Crypto-Spread-Bot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Crypto Spread - Telegram Bot для обнаружения арбитражных возможностей

Полнофункциональный Laravel 10+ проект для обнаружения межбиржевых арбитражных возможностей на криптовалютных биржах с уведомлениями через Telegram бота.

🚀 Возможности

  • 🔍 Автоматическое обнаружение арбитражных возможностей между биржами (Binance, OKX, Bybit)
  • 📊 Мониторинг цен в реальном времени
  • 📱 Уведомления через Telegram бота
  • 🔐 Защита паролем для доступа к боту
  • ⚡ Высокая производительность с использованием Redis очередей
  • 🐳 Docker контейнеризация для легкого развертывания
  • 📈 История всех обнаруженных арбитражных сигналов

📋 Требования

  • PHP 8.2+
  • MySQL 8.0+
  • Redis
  • Composer
  • Docker и Docker Compose (опционально)

🛠 Установка

1. Клонирование и установка зависимостей

git clone <repository-url>
cd crypto-spread
composer install

2. Настройка окружения

Скопируйте .env.example в .env:

cp .env.example .env
php artisan key:generate

Отредактируйте .env файл и укажите:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=crypto_spread
DB_USERNAME=crypto_user
DB_PASSWORD=your_password

REDIS_HOST=127.0.0.1
REDIS_PORT=6379

TELEGRAM_BOT_TOKEN=your_telegram_bot_token
TELEGRAM_BOT_PASSWORD=your_secure_password

3. Создание Telegram бота

  1. Найдите @BotFather в Telegram
  2. Отправьте команду /newbot и следуйте инструкциям
  3. Скопируйте полученный токен в .env файл

4. Запуск миграций и сидеров

php artisan migrate
php artisan db:seed

5. Запуск с Docker (рекомендуется)

docker-compose up -d

6. Запуск воркеров

В отдельных терминалах запустите:

# Воркер очередей
php artisan queue:work --tries=3

# Telegram бот
php artisan telegram:bot

# Фетчер цен и проверка арбитража
php artisan arbitrage:fetch-prices BTC/USDT --interval=5

📱 Использование Telegram бота

Команды бота

  • /start - Начать работу с ботом
  • /set_password YOUR_PASSWORD - Аутентификация с паролем
  • /alerts_on - Включить уведомления об арбитраже
  • /alerts_off - Выключить уведомления
  • /history - Показать последние 10 арбитражных сигналов

Пример использования

  1. Найдите вашего бота в Telegram
  2. Отправьте /start
  3. Отправьте /set_password your_secure_password
  4. После успешной аутентификации вы будете получать уведомления об арбитражных возможностях

🏗 Архитектура

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

app/
├── Console/Commands/          # Консольные команды
│   ├── TelegramBotCommand.php
│   └── RunPriceFetcherCommand.php
├── Jobs/                      # Queue Jobs
│   ├── FetchPricesJob.php
│   ├── CheckArbitrageJob.php
│   └── SendTelegramNotificationJob.php
├── Models/                    # Eloquent модели
│   ├── User.php
│   ├── Exchange.php
│   ├── Price.php
│   └── Alert.php
└── Services/                  # Бизнес-логика
    ├── ArbitrageService.php
    ├── TelegramBotService.php
    └── Exchange/
        ├── ExchangeServiceInterface.php
        ├── BinanceService.php
        ├── OKXService.php
        ├── BybitService.php
        └── ExchangeServiceFactory.php

База данных

  • users - Пользователи Telegram бота
  • exchanges - Настроенные биржи
  • prices - История цен с бирж
  • alerts - Обнаруженные арбитражные возможности

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

Параметры арбитража

В файле .env можно настроить:

ARBITRAGE_MIN_PROFIT_PERCENT=0.5      # Минимальный процент прибыли
ARBITRAGE_PRICE_CHECK_INTERVAL=5      # Интервал проверки цен (секунды)
ARBITRAGE_MIN_CAPITAL_USD=100         # Минимальный капитал (для будущего использования)

Поддерживаемые биржи

  • Binance - Приоритет 1
  • OKX - Приоритет 2
  • Bybit - Приоритет 3

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

  • Пароли хранятся с использованием bcrypt
  • API ключи могут быть зашифрованы (AES-256)
  • Все запросы к биржам логируются
  • Защита от спама через rate limiting

📊 Мониторинг

Логи хранятся в storage/logs/laravel.log:

  • Логи получения цен с бирж
  • Логи обнаружения арбитража
  • Логи активности Telegram бота
  • Ошибки API запросов

🚀 Производственное развертывание

  1. Установите APP_ENV=production в .env
  2. Отключите APP_DEBUG=false
  3. Настройте supervisor для управления воркерами
  4. Настройте cron для периодических задач
  5. Используйте Redis для кеширования и очередей

Supervisor конфигурация

[program:crypto-spread-queue]
process_name=%(program_name)s_%(process_num)02d
command=php /path/to/artisan queue:work redis --sleep=3 --tries=3
autostart=true
autorestart=true
user=www-data
numprocs=2
redirect_stderr=true
stdout_logfile=/path/to/storage/logs/queue.log

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

php artisan test

📝 Лицензия

MIT License

🤝 Вклад

Приветствуются pull requests и issues!

⚠️ Отказ от ответственности

Этот проект предназначен только для образовательных целей. Торговля криптовалютами сопряжена с рисками. Авторы не несут ответственности за любые финансовые потери.

About

A Telegram bot that sends notifications about profitable deals in inter-exchange cryptocurrency trading.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages