Полнофункциональный Laravel 10+ проект для обнаружения межбиржевых арбитражных возможностей на криптовалютных биржах с уведомлениями через Telegram бота.
- 🔍 Автоматическое обнаружение арбитражных возможностей между биржами (Binance, OKX, Bybit)
- 📊 Мониторинг цен в реальном времени
- 📱 Уведомления через Telegram бота
- 🔐 Защита паролем для доступа к боту
- ⚡ Высокая производительность с использованием Redis очередей
- 🐳 Docker контейнеризация для легкого развертывания
- 📈 История всех обнаруженных арбитражных сигналов
- PHP 8.2+
- MySQL 8.0+
- Redis
- Composer
- Docker и Docker Compose (опционально)
git clone <repository-url>
cd crypto-spread
composer installСкопируйте .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- Найдите @BotFather в Telegram
- Отправьте команду
/newbotи следуйте инструкциям - Скопируйте полученный токен в
.envфайл
php artisan migrate
php artisan db:seeddocker-compose up -dВ отдельных терминалах запустите:
# Воркер очередей
php artisan queue:work --tries=3
# Telegram бот
php artisan telegram:bot
# Фетчер цен и проверка арбитража
php artisan arbitrage:fetch-prices BTC/USDT --interval=5/start- Начать работу с ботом/set_password YOUR_PASSWORD- Аутентификация с паролем/alerts_on- Включить уведомления об арбитраже/alerts_off- Выключить уведомления/history- Показать последние 10 арбитражных сигналов
- Найдите вашего бота в Telegram
- Отправьте
/start - Отправьте
/set_password your_secure_password - После успешной аутентификации вы будете получать уведомления об арбитражных возможностях
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 запросов
- Установите
APP_ENV=productionв.env - Отключите
APP_DEBUG=false - Настройте supervisor для управления воркерами
- Настройте cron для периодических задач
- Используйте Redis для кеширования и очередей
[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.logphp artisan testMIT License
Приветствуются pull requests и issues!
Этот проект предназначен только для образовательных целей. Торговля криптовалютами сопряжена с рисками. Авторы не несут ответственности за любые финансовые потери.