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