trading.ai/STRATEGY_USAGE.md
aaron 283901df18 Initial commit: A股量化交易系统
主要功能:
- K线形态策略: 两阳+阴+阳突破形态识别
- 信号时间修复: 使用K线时间而非发送时间
- 换手率约束: 最后阳线换手率不超过40%
- 汇总通知: 钉钉webhook单次发送所有信号
- 数据获取: 支持AKShare数据源
- 舆情分析: 北向资金、热门股票等

技术特性:
- 支持日线/周线/月线多时间周期
- EMA20趋势确认
- 实体比例验证
- 突破价格确认
- 流动性约束检查

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-16 15:59:48 +08:00

248 lines
6.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# K线形态策略使用指南
## 策略介绍
"两阳线+阴线+阳线"形态突破策略,用于识别股票的技术性突破信号。
### 策略逻辑
1. **形态识别**: 连续4根K线形成"阳线+阳线+阴线+阳线"的组合
2. **实体验证**: 前两根阳线的实体部分须占振幅的55%以上
3. **最后阳线验证**: 最后一根阳线的实体部分须占振幅的40%以上
4. **突破确认**: 最后一根阳线的收盘价须高于阴线的最高价
5. **趋势确认**: 最后一根阳线的收盘价须在EMA20上方
### 信号触发条件
- ✅ 形态完整匹配
- ✅ 前两根阳线实体比例达标(>55%
- ✅ 最后阳线实体比例达标(>40%
- ✅ 价格突破确认
- ✅ EMA20趋势确认
## 配置说明
### 1. 启用策略
`config/config.yaml` 中配置:
```yaml
strategy:
kline_pattern:
enabled: true # 启用K线形态策略
min_entity_ratio: 0.55 # 前两根阳线实体最小占振幅比例55%
final_yang_min_ratio: 0.40 # 最后阳线实体最小占振幅比例40%
timeframes: ["daily", "weekly", "monthly"] # 支持的时间周期
scan_stocks_count: 50 # 扫描股票数量限制
analysis_days: 60 # 分析的历史天数
```
### 2. 通知配置
#### 钉钉机器人通知
```yaml
notification:
dingtalk:
enabled: true # 启用钉钉通知
webhook_url: "https://oapi.dingtalk.com/robot/send?access_token=YOUR_TOKEN"
at_all: false # 是否@所有人
at_mobiles: [] # @指定手机号列表
```
要获取钉钉webhook地址
1. 打开钉钉群聊
2. 点击群设置 → 智能群助手 → 添加机器人 → 自定义
3. 设置机器人名称和头像
4. 选择安全设置关键词、加签或IP地址
5. 复制webhook地址到配置文件
## 使用方法
### 1. 启动系统
```bash
source venv/bin/activate
python main.py
```
### 2. 可用命令
```bash
# 显示策略信息
> strategy
# 扫描单只股票K线形态
> scan 000001.SZ
# 扫描市场K线形态使用双数据源同花顺热股+东财人气榜,注意:耗时较长)
> scanmarket
# 测试通知功能
> testnotify
# 显示帮助
> help
# 退出程序
> quit
```
### 3. 程序化使用
```python
from src.data.data_fetcher import ADataFetcher
from src.utils.notification import NotificationManager
from src.strategy.kline_pattern_strategy import KLinePatternStrategy
# 初始化组件
data_fetcher = ADataFetcher()
notification_manager = NotificationManager(notification_config)
strategy_config = {
'min_entity_ratio': 0.55,
'timeframes': ['daily', 'weekly', 'monthly'],
'scan_stocks_count': 50,
'analysis_days': 60
}
strategy = KLinePatternStrategy(data_fetcher, notification_manager, strategy_config)
# 分析单只股票
results = strategy.analyze_stock("000001.SZ")
# 扫描市场
market_results = strategy.scan_market(max_stocks=20)
```
## 信号示例
### 成功信号示例
当检测到形态信号时,系统会:
1. **日志记录**:
```
策略信号: 两阳+阴+阳突破 | 000001.SZ(平安银行) | daily | 11.44元
额外信息: {'阳线1实体比例': '56.2%', '阳线2实体比例': '58.0%', '突破幅度': '0.62%', '阴线最高价': '11.37', '突破价格': '11.44'}
```
2. **钉钉通知**(如已配置):
```markdown
# 📈 两阳+阴+阳突破信号提醒
**股票信息:**
- 代码: `000001.SZ`
- 名称: `平安银行`
- 价格: `11.44`
- 时间周期: `daily`
**信号时间:** 2025-09-16 09:10:15
**策略说明:** 两阳线+阴线+阳线形态突破
**额外信息:**
- 阳线1实体比例: `56.2%`
- 阳线2实体比例: `58.0%`
- 突破幅度: `0.62%`
- 阴线最高价: `11.37`
- 突破价格: `11.44`
```
## 注意事项
### 1. 数据源
- 优先使用adata真实数据
- 如无法获取真实数据,会生成模拟数据进行测试
- 模拟数据中会人为插入形态信号用于验证策略逻辑
### 2. 时间周期
- **daily**: 日线数据,信号较频繁
- **weekly**: 周线数据,从日线转换而来
- **monthly**: 月线数据,信号较少但质量较高
### 3. 风险控制
- 策略仅用于信号识别,不包含仓位管理
- 实盘使用时请结合其他指标和风险控制措施
- 建议设置止损和止盈规则
### 4. 性能优化
- `scan_stocks_count` 控制扫描数量,避免过度消耗资源
- `analysis_days` 控制历史数据量,影响分析速度
- 市场扫描建议在非交易时间进行
## 数据源说明
### 股票扫描范围
系统在进行市场扫描时优先使用**双数据源合并**策略:
1. **数据源组合**:
- **同花顺热股TOP100**:热度值、概念标签、人气标签
- **东方财富人气榜TOP100**:人气排名、价格变动、成交活跃度
- **智能去重**:自动识别重复股票,保留最优质数据
2. **合并优势**:
- 覆盖面更广,减少遗漏优质股票
- 两大平台数据互补,提升准确性
- 关注度和活跃度双重验证
- 提升信号质量和市场代表性
3. **数据特征**:
- 股票代码、名称、涨跌幅
- 热度值、人气排名
- 概念标签AI PC、脑机接口、新能源等
- 数据源标识,便于追踪
4. **回退机制**:
- 双数据源获取失败时,单独使用同花顺数据
- 热股数据完全失败时,回退到全市场股票
- 确保系统稳定运行
## 扩展开发
### 添加新的形态策略
1.`src/strategy/` 下创建新的策略模块
2. 继承或参考 `KLinePatternStrategy` 的设计
3. 在配置文件中添加相应配置项
4. 在主程序中集成新策略
### 自定义通知方式
1.`src/utils/notification.py` 中添加新的通知器类
2.`NotificationManager` 中集成新通知器
3. 在配置文件中添加相应配置
### 优化检测算法
1. 修改 `detect_pattern()` 方法中的逻辑
2. 调整 `calculate_kline_features()` 中的特征计算
3. 添加更多的过滤条件和验证规则
## 故障排除
### 常见问题
1. **无法获取数据**: 检查网络连接和adata配置
2. **钉钉通知失败**: 验证webhook地址和安全设置
3. **策略未启用**: 检查配置文件中的 `enabled` 设置
4. **内存占用过高**: 减少 `scan_stocks_count``analysis_days`
### 调试模式
运行测试脚本进行调试:
```bash
python test_strategy.py
```
### 日志查看
查看详细日志:
```bash
tail -f logs/trading.log
```