Added basic paper-trader. Fix signals_health_client.py to support the multiple personalities.
This commit is contained in:
139
trader/README.md
Normal file
139
trader/README.md
Normal file
@@ -0,0 +1,139 @@
|
||||
# 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
|
||||
Reference in New Issue
Block a user