Files
BytbitBTC/trader/README.md

140 lines
4.5 KiB
Markdown

# Paper Trading Bot
A real-time paper trading bot that executes trades based on signals from the multi-personality signal generator.
## Features
- **Real-time TUI Interface** - Beautiful terminal UI showing all trading activity
- **Multi-personality Support** - Trade signals from both scalping and swing strategies
- **Risk Management** - Configurable stop-loss, take-profit, and position sizing
- **SQLite Tracking** - All trades stored in database for analysis
- **Live Price Monitoring** - Reads current BTC price from candles.db
- **Signal Filtering** - Filter by confidence, personality, and timeframe
## Installation
```bash
cd traider
pip install -r requirements.txt
```
## Configuration
Edit `config.json` to customize:
```json
{
"initial_balance": 10000.0, // Starting capital
"position_size_percent": 2.0, // % of balance per trade
"max_positions": 3, // Max concurrent positions
"stop_loss_percent": 2.0, // Stop loss %
"take_profit_percent": 4.0, // Take profit %
"min_confidence": 0.5, // Minimum signal confidence
"enabled_personalities": ["scalping", "swing"],
"enabled_timeframes": ["1m", "5m"]
}
```
## Usage
Make sure the signal generator is running first:
```bash
# In signals/ directory
./signals.py
```
Then start the paper trader:
```bash
# In traider/ directory
./trader.py
```
## TUI Interface
The TUI displays:
- **Header**: Current BTC price, balance, equity, and total PnL
- **Statistics**: Win rate, total trades, wins/losses
- **Open Positions**: Live view of active trades with unrealized PnL
- **Recent Closed Trades**: Last 10 completed trades
- **Recent Signals**: Incoming signals from the generator
## Database Schema
### trades table
- Trade details (entry/exit prices, type, timeframe)
- PnL calculations
- Signal confidence and personality
- Exit reasons (Stop Loss, Take Profit)
### balance_history table
- Historical balance snapshots
- Equity tracking over time
## Trading Logic
1. **Signal Reception**: Listens to Unix socket from signal generator
2. **Filtering**: Applies confidence, personality, and timeframe filters
3. **Position Sizing**: Calculates position based on balance %
4. **Entry**: Opens LONG (BUY signal) or SHORT (SELL signal) position
5. **Exit Monitoring**: Continuously checks stop-loss and take-profit levels
6. **Closure**: Calculates PnL and updates balance
## Risk Management
- Maximum concurrent positions limit
- Stop-loss protection on every trade
- Position sizing based on account balance
- (Future: Daily loss limits, trailing stops)
## Keyboard Controls
- `Ctrl+C` - Graceful shutdown (closes socket connections, saves state)
## File Structure
```
traider/
├── trader.py # Main bot with TUI
├── config.json # Configuration
├── trades.db # Trade history (auto-created)
├── requirements.txt # Python dependencies
└── logs/ # (Future: logging)
```
## Example Output
```
┌─────────────────────────────────────────────────────────┐
│ PAPER TRADING BOT | BTC: $95,234.50 | Balance: $10,245.32 │
│ Equity: $10,387.12 | PnL: +$387.12 (+3.87%) │
└─────────────────────────────────────────────────────────┘
┌─────────────┐ ┌──────────────────────────┐
│ Statistics │ │ Open Positions (2) │
├─────────────┤ ├──────────────────────────┤
│ Total: 47 │ │ ID Type Entry PnL │
│ Wins: 28 │ │ 48 LONG 95100 +$142 │
│ Losses: 19 │ │ 49 LONG 95200 +$34 │
│ Win Rate: 60%│ └──────────────────────────┘
└─────────────┘
```
## Notes
- This is **paper trading only** - no real money involved
- Requires running signal generator and populated candles.db
- Price updates every 1 second from most recent candle
- Signals processed in real-time as they arrive
## Future Enhancements
- Trailing stop-loss implementation
- Daily loss limit enforcement
- Performance analytics dashboard
- Export trade history to CSV
- Backtesting mode
- Web dashboard option