Implement moomoo API connector for OHLCV data

- Added DataConnector base class with OHLCV, InstrumentInfo, Interval
- Implemented MoomooClient with rate limiting, circuit breaker, caching
- Mock mode generates realistic data for development
- Real-time WebSocket subscription support (mock)
- Added examples/demo_moomoo.py showcasing functionality
- Updated requirements.txt with requests, websocket-client, redis, python-dotenv
- Updated README.md with Data Layer documentation
- Added .env.example for configuration
This commit is contained in:
2026-02-04 11:35:33 +08:00
parent 0121cb6097
commit 6e86da6733
8 changed files with 949 additions and 2 deletions

View File

@@ -14,17 +14,66 @@ Simple dashboard displaying key trading metrics:
- Drawdown
- Win Rate
## Data Layer Module
### Moomoo API Connector
A robust Python client for moomoo API with comprehensive error handling, rate limiting, and data normalization.
**Features:**
- Historical OHLCV data retrieval
- Real-time WebSocket subscription (mock)
- Instrument metadata
- Rate limiting (token bucket algorithm)
- Circuit breaker pattern for fault tolerance
- Caching with TTL
- Mock mode for development
**Usage:**
```python
from data.connectors import create_moomoo_client, Interval
from datetime import datetime, timedelta
client = create_moomoo_client(mock_mode=True)
data = client.get_ohlcv(
symbol="AAPL",
interval=Interval.DAY_1,
start_date=datetime.now() - timedelta(days=30),
end_date=datetime.now()
)
```
See `examples/demo_moomoo.py` for complete demonstration.
## Development
### Prerequisites
- Python 3.8+
- Node.js (for frontend)
- Node.js (for frontend, optional)
- Docker (optional)
- Redis (optional, for caching)
### Setup
1. Clone the repository
2. Install dependencies: `pip install -r requirements.txt`
3. Run the dashboard: `python app.py`
4. Test data connector: `python examples/demo_moomoo.py`
### Data Layer Development
The data connector uses a modular design with base classes for easy extension:
- `DataConnector` abstract base class
- `MoomooClient` implementation with mock mode
- Rate limiting and circuit breaker patterns
- Caching support (in-memory or Redis)
To extend with real API credentials:
1. Set environment variables: `MOOMOO_API_KEY`, `MOOMOO_SESSION_TOKEN`
2. Set `mock_mode=False` when creating client
3. Implement actual API calls in `_make_request()` method
### UI/UX Development
The dashboard is built with Flask (backend) and Bootstrap/Chart.js (frontend).
- Backend: `app.py` provides REST API endpoints
- Frontend: `templates/dashboard.html` with interactive charts
## License