96 lines
2.4 KiB
Markdown
96 lines
2.4 KiB
Markdown
|
|
# 代码格式规则 (Formatting Rules)
|
|||
|
|
|
|||
|
|
本项目遵循以下代码格式规范:
|
|||
|
|
|
|||
|
|
## 1. Python 代码规范
|
|||
|
|
|
|||
|
|
### 1.1 缩进
|
|||
|
|
- 使用 **4个空格** 进行缩进
|
|||
|
|
- 不使用 Tab 键
|
|||
|
|
|
|||
|
|
### 1.2 行长度
|
|||
|
|
- 每行代码最大长度:**100 字符**
|
|||
|
|
- 文档字符串最大长度:**80 字符**
|
|||
|
|
|
|||
|
|
### 1.3 空行
|
|||
|
|
- 类定义之间:**2个空行**
|
|||
|
|
- 方法定义之间:**1个空行**
|
|||
|
|
- 函数定义之间:**2个空行**
|
|||
|
|
- 逻辑段落之间:**1个空行**
|
|||
|
|
|
|||
|
|
### 1.4 导入顺序
|
|||
|
|
```python
|
|||
|
|
# 标准库导入
|
|||
|
|
import os
|
|||
|
|
import sys
|
|||
|
|
from datetime import datetime
|
|||
|
|
|
|||
|
|
# 第三方库导入
|
|||
|
|
import numpy as np
|
|||
|
|
import pandas as pd
|
|||
|
|
|
|||
|
|
# 本地项目导入
|
|||
|
|
from src.backtest_engine import BacktestEngine
|
|||
|
|
from src.data_manager import DataManager
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 1.5 空格使用
|
|||
|
|
- 在逗号后添加空格:`func(a, b, c)`
|
|||
|
|
- 在运算符两侧添加空格:`a + b`
|
|||
|
|
- 不要在括号内添加空格:`func(a)` 而不是 `func( a )`
|
|||
|
|
- 函数参数列表内不要有多余空格
|
|||
|
|
|
|||
|
|
## 2. 命名规范
|
|||
|
|
|
|||
|
|
### 2.1 变量命名
|
|||
|
|
- 使用 **小写字母 + 下划线**:`trade_volume`, `stop_loss_points`
|
|||
|
|
- 私有变量使用前缀下划线:`_internal_cache`
|
|||
|
|
|
|||
|
|
### 2.2 常量命名
|
|||
|
|
- 使用 **全大写 + 下划线**:`MAX_POSITION`, `DEFAULT_STOP_LOSS`
|
|||
|
|
|
|||
|
|
### 2.3 函数命名
|
|||
|
|
- 使用 **小写字母 + 下划线**:`calculate_metrics()`, `get_bar_history()`
|
|||
|
|
|
|||
|
|
### 2.4 类命名
|
|||
|
|
- 使用 **大驼峰命名法 (PascalCase)**:`SimpleLimitBuyStrategy`, `BacktestEngine`
|
|||
|
|
|
|||
|
|
## 3. 文档字符串规范
|
|||
|
|
|
|||
|
|
### 3.1 所有公共类和方法必须有文档字符串
|
|||
|
|
```python
|
|||
|
|
class SimpleLimitBuyStrategy(Strategy):
|
|||
|
|
"""
|
|||
|
|
一个基于当前K线Open、前1根和前7根K线Range计算优势价格进行限价买入的策略。
|
|||
|
|
|
|||
|
|
具备以下特点:
|
|||
|
|
- 每根K线开始时取消上一根K线未成交的订单
|
|||
|
|
- 最多只能有一个开仓挂单和一个持仓
|
|||
|
|
- 包含简单的止损和止盈逻辑
|
|||
|
|
|
|||
|
|
Args:
|
|||
|
|
context: 模拟器实例
|
|||
|
|
symbol: 交易合约代码
|
|||
|
|
trade_volume: 单笔交易量
|
|||
|
|
"""
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 3.2 复杂逻辑必须添加注释说明
|
|||
|
|
|
|||
|
|
## 4. 类型提示规范
|
|||
|
|
|
|||
|
|
- 推荐为函数参数和返回值添加类型提示
|
|||
|
|
- 使用 `from typing` 导入类型
|
|||
|
|
- 循环导入时使用 `TYPE_CHECKING`:
|
|||
|
|
```python
|
|||
|
|
from typing import Dict, Any, Optional, TYPE_CHECKING
|
|||
|
|
|
|||
|
|
if TYPE_CHECKING:
|
|||
|
|
from src.backtest_engine import BacktestContext
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 5. Git 提交规范
|
|||
|
|
|
|||
|
|
- 提交信息使用中文或英文
|
|||
|
|
- 格式:`[类型] 描述`
|
|||
|
|
- 类型:feat, fix, docs, style, refactor, test, chore
|