新增实盘策略:FisherTrendStrategy(FG)
This commit is contained in:
177
AGENTS.md
Normal file
177
AGENTS.md
Normal file
@@ -0,0 +1,177 @@
|
||||
# AGENTS.md - Quant Trading Project Guidelines
|
||||
|
||||
This document provides guidelines for agentic coding agents operating in this repository.
|
||||
|
||||
## 对话语言规则 (Conversation Language Rules)
|
||||
|
||||
- **请始终使用简体中文进行回复,除非我明确要求使用其他语言。**
|
||||
- **涉及编程术语时,请保留英文原文并(在必要时)提供中文解释。**
|
||||
|
||||
## Project Overview
|
||||
|
||||
Python-based quantitative trading system with:
|
||||
- Backtesting engine (`src/backtest_engine.py`)
|
||||
- Multiple strategy implementations (`src/strategies/`)
|
||||
- TQSdk integration for real-time trading (`src/tqsdk_engine.py`, `src/tqsdk_real_engine.py`)
|
||||
- Strategy management (`strategy_manager/`)
|
||||
- Data processing and analysis (`src/analysis/`)
|
||||
|
||||
## Build, Lint, and Test Commands
|
||||
|
||||
### Python Environment
|
||||
```bash
|
||||
# Install dependencies
|
||||
pip install -r requirements.txt
|
||||
|
||||
# Run single test file
|
||||
pytest test/test_file.py -v
|
||||
|
||||
# Run single test function
|
||||
pytest test/test_file.py::TestClass::test_function -v
|
||||
|
||||
# Run tests with coverage
|
||||
pytest --cov=src --cov-report=term-missing
|
||||
|
||||
# Run tests matching pattern
|
||||
pytest -k "test_name_pattern"
|
||||
```
|
||||
|
||||
### Jupyter Notebooks
|
||||
Several research notebooks exist in root directory:
|
||||
- `main.ipynb`, `main2.ipynb`, `main_multi.ipynb`
|
||||
- `grid_search.ipynb`, `grid_search_multi_process.ipynb`
|
||||
- `tqsdk_main.ipynb`, `tqsdk_main2.ipynb`
|
||||
|
||||
Run via Jupyter Lab:
|
||||
```bash
|
||||
jupyter lab
|
||||
```
|
||||
|
||||
### Strategy Manager (Web Backend)
|
||||
```bash
|
||||
cd strategy_manager && python start.py
|
||||
```
|
||||
|
||||
## Code Style Guidelines
|
||||
|
||||
### Imports
|
||||
- Use absolute imports from `src` package:
|
||||
```python
|
||||
from src.backtest_engine import BacktestEngine
|
||||
from src.strategies.base_strategy import Strategy
|
||||
```
|
||||
- Group imports: standard library → third-party → local modules
|
||||
- Use `TYPE_CHECKING` for circular import avoidance with type hints:
|
||||
```python
|
||||
from typing import TYPE_CHECKING
|
||||
if TYPE_CHECKING:
|
||||
from src.core_data import Order
|
||||
```
|
||||
|
||||
### Naming Conventions
|
||||
- **Classes**: PascalCase (`BacktestEngine`, `SimpleLimitBuyStrategy`)
|
||||
- **Functions/Variables**: snake_case (`get_current_positions`, `send_order`)
|
||||
- **Constants**: UPPER_SNAKE_CASE (`BEIJING_TZ`, `TRADING_SESSIONS_TIMES`)
|
||||
- **Private members**: Leading underscore (`_indicator_cache`, `_clean_params_for_hashing`)
|
||||
|
||||
### Type Annotations
|
||||
- Use Python's `typing` module for type hints
|
||||
- Common patterns:
|
||||
```python
|
||||
from typing import Dict, Any, Optional, List, Union
|
||||
def func(param: Dict[str, Any]) -> Optional[float]:
|
||||
```
|
||||
- Use string annotations for forward references when needed:
|
||||
```python
|
||||
def send_order(self, order: "Order") -> Optional[Order]:
|
||||
```
|
||||
|
||||
### Error Handling
|
||||
- Use specific exception types, not bare `except:`
|
||||
- Log errors with context:
|
||||
```python
|
||||
try:
|
||||
# operation
|
||||
except Exception as e:
|
||||
self.log(f"Operation failed: {e}")
|
||||
```
|
||||
- Raise descriptive exceptions:
|
||||
```python
|
||||
raise ValueError("Step direction inconsistent with range")
|
||||
```
|
||||
|
||||
### Docstrings and Comments
|
||||
- Use Chinese for comments and docstrings (project convention)
|
||||
- Document public methods with Args/Returns sections:
|
||||
```python
|
||||
def generate_parameter_range(start, end, step):
|
||||
"""
|
||||
根据开始、结束和步长生成参数值列表。
|
||||
|
||||
Args:
|
||||
start: 参数范围的起始值
|
||||
end: 参数范围的结束值
|
||||
step: 参数的步长
|
||||
|
||||
Returns:
|
||||
生成的参数值列表
|
||||
"""
|
||||
```
|
||||
|
||||
### Code Formatting
|
||||
- No strict formatting rules (no ruff/black config found)
|
||||
- Follow Python PEP 8 generally
|
||||
- Maximum line length: 120 characters recommended
|
||||
- Use 4 spaces for indentation
|
||||
|
||||
### Project-Specific Patterns
|
||||
|
||||
#### Strategy Implementation
|
||||
All strategies inherit from `Strategy` ABC:
|
||||
```python
|
||||
from src.strategies.base_strategy import Strategy
|
||||
|
||||
class MyStrategy(Strategy):
|
||||
def on_open_bar(self, open: float, symbol: str):
|
||||
# Implement strategy logic
|
||||
pass
|
||||
```
|
||||
|
||||
#### Backtest Context
|
||||
Strategies interact with `BacktestContext` for:
|
||||
- Order management (`send_order`, `cancel_order`)
|
||||
- Position tracking (`get_current_positions`)
|
||||
- Historical data (`get_price_history`, `get_bar_history`)
|
||||
|
||||
#### Trading Sessions
|
||||
Define trading hours in `src/common_utils.py`:
|
||||
```python
|
||||
TRADING_SESSIONS_TIMES: List[Tuple[time, time]] = [
|
||||
(time(9, 0, 0), time(11, 30, 0)),
|
||||
(time(13, 30, 0), time(15, 0, 0)),
|
||||
(time(21, 0, 0), time(23, 0, 0))
|
||||
]
|
||||
```
|
||||
|
||||
## File Organization
|
||||
|
||||
```
|
||||
NewQuant/
|
||||
├── src/ # Core codebase
|
||||
│ ├── strategies/ # Strategy implementations
|
||||
│ ├── analysis/ # Result analysis tools
|
||||
│ ├── indicators/ # Technical indicators
|
||||
│ └── *.py # Engine and utility modules
|
||||
├── futures_trading_strategies/ # Additional strategies by commodity
|
||||
├── strategy_manager/ # Web backend and launcher
|
||||
├── test/ # Tests (Jupyter notebooks)
|
||||
├── data/ # Data files
|
||||
└── *.ipynb # Research notebooks
|
||||
```
|
||||
|
||||
## Key Files for Reference
|
||||
|
||||
- `src/strategies/base_strategy.py` - Strategy interface definition
|
||||
- `src/backtest_engine.py` - Backtesting core
|
||||
- `src/common_utils.py` - Utility functions and constants
|
||||
- `strategy_manager/start.py` - Web service entry point
|
||||
Reference in New Issue
Block a user