1
Fork 0
crypto_bot_training/trading_bot/README.md
2025-07-15 08:18:00 +07:00

348 lines
No EOL
9 KiB
Markdown

# 🤖 Binance Trading Bot
Advanced automated cryptocurrency trading bot for Binance exchange with real-time WebSocket connectivity, technical indicators, and comprehensive risk management.
## 🚀 Features
### Core Trading Features
- **Real-time Data**: WebSocket connection to Binance for live market data
- **Technical Indicators**: Bollinger Bands, Moving Averages (SMA/EMA), RSI, MACD
- **Multiple Strategies**: Bollinger Bands + MA, Mean Reversion, MA Crossover
- **Automated Execution**: Buy/sell orders with configurable position sizing
- **Paper Trading**: Safe testing mode without real money
### Risk Management
- **Stop-Loss & Take-Profit**: Configurable risk/reward ratios
- **Position Sizing**: Dynamic position sizing based on risk parameters
- **Daily Loss Limits**: Automatic trading halt on daily loss thresholds
- **Maximum Drawdown Protection**: Portfolio-level risk controls
- **Emergency Stop**: Manual and automatic trading halt capabilities
### Monitoring & Analytics
- **Performance Tracking**: Comprehensive trade and portfolio analytics
- **Real-time Logging**: Structured logging with multiple log levels
- **Health Monitoring**: WebSocket connection health and reconnection logic
- **Trade History**: Persistent storage of all trading activities
### Deployment & Operations
- **Docker Support**: Containerized deployment with docker-compose
- **Environment Configuration**: Flexible configuration via environment variables
- **Database Integration**: SQLite and PostgreSQL support
- **Optional Monitoring**: Prometheus and Grafana integration
## 📋 Prerequisites
- Docker and Docker Compose (recommended)
- OR Python 3.11+ with pip
- Binance account with API keys
- Basic understanding of cryptocurrency trading
## 🛠️ Quick Setup (Docker - Recommended)
### 1. Clone and Setup
```bash
git clone <repository-url>
cd trading_bot
# Copy and configure environment file
cp env_example .env
nano .env # Edit with your configuration
```
### 2. Configure Environment
Edit `.env` file with your settings:
```bash
# Essential Settings
BINANCE_API_KEY=your_api_key_here
BINANCE_SECRET_KEY=your_secret_key_here
BINANCE_TESTNET=true # Start with testnet!
# Trading Configuration
TRADING_SYMBOL=BTCUSDT
POSITION_SIZE=0.001
PAPER_TRADING=true # Keep this true for testing!
ENABLE_TRADING=false # Set to true only when ready
# Risk Management
STOP_LOSS_PERCENT=2.0
TAKE_PROFIT_PERCENT=3.0
MAX_DAILY_LOSS=5.0
```
### 3. Start the Bot
```bash
# Start in paper trading mode
docker-compose up -d
# View logs
docker-compose logs -f trading-bot
# Stop the bot
docker-compose down
```
## 🐍 Manual Setup (Python)
### 1. Setup Python Environment with pyenv
#### Install pyenv (if not already installed)
**On Linux/macOS:**
```bash
# Install pyenv
curl https://pyenv.run | bash
# Add to your shell profile (~/.bashrc, ~/.zshrc, etc.)
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
# Reload your shell
source ~/.bashrc # or ~/.zshrc
```
**On Windows:**
```powershell
# Install pyenv-win using git
git clone https://github.com/pyenv-win/pyenv-win.git %USERPROFILE%\.pyenv
# Add to your PATH (in PowerShell)
$env:PYENV = "$env:USERPROFILE\.pyenv\pyenv-win"
$env:PATH = "$env:PYENV\bin;$env:PYENV\shims;$env:PATH"
# Or set permanently in system environment variables
```
#### Install and Configure Python
```bash
# Install Python 3.11 (recommended)
pyenv install 3.11.0
# Create virtual environment for the trading bot
pyenv virtualenv 3.11.0 trading-bot-env
# Activate the environment
pyenv activate trading-bot-env
# OR set it as local environment for this directory
pyenv local trading-bot-env
```
### 2. Install Dependencies
```bash
# Make sure you're in the trading bot environment
pyenv activate trading-bot-env # if not already activated
# Install required packages
pip install -r requirements.txt
```
### 3. Configure Environment
```bash
cp env_example .env
# Edit .env with your configuration
```
### 4. Run the Bot
```bash
# Ensure environment is activated
pyenv activate trading-bot-env
# Run the trading bot
python main.py
```
### 5. Deactivate Environment (when done)
```bash
pyenv deactivate
```
## 📊 Configuration Guide
### Trading Strategies
#### 1. Bollinger Bands + Moving Average (Default)
```bash
STRATEGY=BOLLINGER_MA
BOLLINGER_PERIOD=20
BOLLINGER_STD=2.0
MA_PERIOD=50
```
- Buys when price touches lower Bollinger Band and is above MA
- Sells when price touches upper Bollinger Band and is below MA
#### 2. Bollinger Bands Only
```bash
STRATEGY=BOLLINGER_ONLY
```
- Pure mean reversion strategy
- Buys at lower band, sells at upper band
#### 3. Moving Average Crossover
```bash
STRATEGY=MA_CROSSOVER
```
- Buys on golden cross (fast MA crosses above slow MA)
- Sells on death cross (fast MA crosses below slow MA)
#### 4. Mean Reversion
```bash
STRATEGY=MEAN_REVERSION
```
- Combines MA, RSI, and price distance from mean
- Buys oversold conditions, sells overbought conditions
### Risk Management Configuration
```bash
# Position Sizing
POSITION_SIZE=0.001 # Size per trade
MAX_POSITIONS=1 # Maximum concurrent positions
# Risk Limits
STOP_LOSS_PERCENT=2.0 # 2% stop loss
TAKE_PROFIT_PERCENT=3.0 # 3% take profit
MAX_DAILY_LOSS=5.0 # 5% daily loss limit
MAX_PORTFOLIO_RISK=10.0 # 10% max portfolio exposure
```
## 🔧 Advanced Configuration
### WebSocket Settings
```bash
WS_RECONNECT_DELAY=5 # Reconnection delay in seconds
WS_PING_INTERVAL=20 # Ping interval for connection health
WS_TIMEOUT=30 # WebSocket timeout
```
### Logging Configuration
```bash
LOG_LEVEL=INFO # DEBUG, INFO, WARNING, ERROR, CRITICAL
LOG_FILE=logs/trading_bot.log
LOG_MAX_SIZE=10485760 # 10MB log rotation
LOG_BACKUP_COUNT=5 # Keep 5 backup files
```
### Database Options
```bash
# SQLite (default)
DATABASE_URL=sqlite:///data/trading_bot.db
# PostgreSQL (advanced)
DATABASE_URL=postgresql://user:password@localhost:5432/trading_bot
```
## 📈 Monitoring
### Health Checks
- WebSocket connection status
- Order execution monitoring
- Risk limit monitoring
- Performance tracking
### Log Analysis
```bash
# View real-time logs
docker-compose logs -f trading-bot
# Search for specific events
docker-compose logs trading-bot | grep "SIGNAL"
docker-compose logs trading-bot | grep "TRADE"
docker-compose logs trading-bot | grep "ERROR"
```
### Performance Metrics
The bot tracks:
- Total trades and win rate
- PnL and portfolio value
- Risk metrics and drawdown
- Trade execution statistics
## 🚨 Safety Guidelines
### Before Live Trading
1. **Test Extensively**: Use paper trading for weeks/months
2. **Verify Strategy**: Backtest your strategy on historical data
3. **Start Small**: Begin with minimal position sizes
4. **Monitor Closely**: Watch the bot's behavior carefully
5. **Have Exit Plan**: Know how to stop the bot quickly
### API Key Security
1. **Read-Only Testing**: Start with read-only API keys
2. **IP Restrictions**: Restrict API keys to your IP address
3. **No Withdrawals**: Never enable withdrawal permissions
4. **Regular Rotation**: Rotate API keys regularly
### Risk Management
1. **Daily Limits**: Set and respect daily loss limits
2. **Position Sizing**: Never risk more than you can afford to lose
3. **Stop Losses**: Always use stop-loss orders
4. **Diversification**: Don't put all funds in one strategy
## 🐛 Troubleshooting
### Common Issues
#### WebSocket Connection Problems
```bash
# Check network connectivity
docker-compose logs trading-bot | grep "WebSocket"
# Restart WebSocket connection
docker-compose restart trading-bot
```
#### API Permission Errors
```bash
# Verify API key permissions
# Ensure API key has spot trading enabled (if not paper trading)
# Check IP restrictions
```
#### High Memory Usage
```bash
# Check container resources
docker stats trading-bot
# Adjust log levels
LOG_LEVEL=WARNING # In .env file
```
### Log Levels
- **DEBUG**: Detailed technical information
- **INFO**: General operational information
- **WARNING**: Important warnings and issues
- **ERROR**: Error conditions that need attention
- **CRITICAL**: Critical errors requiring immediate action
## 📝 Contributing
1. Fork the repository
2. Create a feature branch
3. Make your changes
4. Add tests if applicable
5. Submit a pull request
## 🔗 Related Projects
- [CCXT](https://github.com/ccxt/ccxt) - Cryptocurrency trading library
- [pandas-ta](https://github.com/twopirllc/pandas-ta) - Technical analysis indicators
- [Binance API](https://binance-docs.github.io/apidocs/) - Official Binance API documentation
## 📄 License
This project is for educational purposes only. Use at your own risk.
## 🆘 Support
For questions and support:
1. Check the troubleshooting section
2. Review the logs for error messages
3. Ensure your configuration is correct
4. Test with paper trading first
## ⚠️ Final Warning
**Cryptocurrency trading is extremely risky. This bot is provided as-is for educational purposes. The developers are not responsible for any financial losses. Always trade responsibly and never invest more than you can afford to lose.**