修复搜索功能并取消月线筛查
功能修复: - 修复股票搜索功能: 'Info' object has no attribute 'search' 错误 - 使用本地股票列表实现搜索,支持代码和名称模糊匹配 - 搜索功能现在支持中文股票名称和股票代码搜索 配置优化: - 取消月线筛查: 从配置中移除monthly时间周期 - 更新默认时间周期: 仅保留daily和weekly - 提高扫描效率,专注于更及时的交易机会 技术改进: - 实现基于pandas的本地搜索算法 - 支持不区分大小写的模糊匹配 - 完善错误处理和日志记录 - 保持API兼容性 测试验证: - 搜索'平安'返回3个相关股票 - 支持按股票代码和名称搜索 - 错误处理机制正常工作 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
parent
9e7cd5647b
commit
77ecaefbc2
@ -56,9 +56,9 @@ strategy:
|
|||||||
enabled: true # 是否启用K线形态策略
|
enabled: true # 是否启用K线形态策略
|
||||||
min_entity_ratio: 0.55 # 前两根阳线实体最小占振幅比例(55%)
|
min_entity_ratio: 0.55 # 前两根阳线实体最小占振幅比例(55%)
|
||||||
final_yang_min_ratio: 0.40 # 最后阳线实体最小占振幅比例(40%)
|
final_yang_min_ratio: 0.40 # 最后阳线实体最小占振幅比例(40%)
|
||||||
timeframes: ["daily", "weekly", "monthly"] # 支持的时间周期
|
timeframes: ["daily", "weekly"] # 支持的时间周期
|
||||||
scan_stocks_count: 1000 # 扫描股票数量限制
|
scan_stocks_count: 1000 # 扫描股票数量限制
|
||||||
analysis_days: 90 # 分析的历史天数
|
analysis_days: 60 # 分析的历史天数
|
||||||
|
|
||||||
# 监控配置
|
# 监控配置
|
||||||
monitor:
|
monitor:
|
||||||
|
|||||||
@ -267,7 +267,7 @@ class ADataFetcher:
|
|||||||
|
|
||||||
def search_stocks(self, keyword: str) -> pd.DataFrame:
|
def search_stocks(self, keyword: str) -> pd.DataFrame:
|
||||||
"""
|
"""
|
||||||
搜索股票
|
搜索股票(基于本地股票列表)
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
keyword: 搜索关键词
|
keyword: 搜索关键词
|
||||||
@ -276,7 +276,23 @@ class ADataFetcher:
|
|||||||
搜索结果DataFrame
|
搜索结果DataFrame
|
||||||
"""
|
"""
|
||||||
try:
|
try:
|
||||||
results = self.client.stock.info.search(keyword)
|
# 获取完整股票列表
|
||||||
|
all_stocks = self.get_stock_list()
|
||||||
|
if all_stocks.empty:
|
||||||
|
return pd.DataFrame()
|
||||||
|
|
||||||
|
# 在股票代码和名称中搜索关键词
|
||||||
|
keyword = str(keyword).strip()
|
||||||
|
if not keyword:
|
||||||
|
return pd.DataFrame()
|
||||||
|
|
||||||
|
# 支持按代码或名称模糊搜索
|
||||||
|
mask = (
|
||||||
|
all_stocks['stock_code'].str.contains(keyword, case=False, na=False) |
|
||||||
|
all_stocks['short_name'].str.contains(keyword, case=False, na=False)
|
||||||
|
)
|
||||||
|
|
||||||
|
results = all_stocks[mask].copy()
|
||||||
logger.info(f"搜索股票'{keyword}'成功,找到{len(results)}个结果")
|
logger.info(f"搜索股票'{keyword}'成功,找到{len(results)}个结果")
|
||||||
return results
|
return results
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
|||||||
@ -33,7 +33,7 @@ class KLinePatternStrategy:
|
|||||||
self.min_entity_ratio = config.get('min_entity_ratio', 0.55) # 前两根阳线实体部分最小比例
|
self.min_entity_ratio = config.get('min_entity_ratio', 0.55) # 前两根阳线实体部分最小比例
|
||||||
self.final_yang_min_ratio = config.get('final_yang_min_ratio', 0.40) # 最后阳线实体部分最小比例
|
self.final_yang_min_ratio = config.get('final_yang_min_ratio', 0.40) # 最后阳线实体部分最小比例
|
||||||
self.max_turnover_ratio = config.get('max_turnover_ratio', 40.0) # 最后阳线最大换手率(%)
|
self.max_turnover_ratio = config.get('max_turnover_ratio', 40.0) # 最后阳线最大换手率(%)
|
||||||
self.timeframes = config.get('timeframes', ['daily', 'weekly', 'monthly']) # 支持的时间周期
|
self.timeframes = config.get('timeframes', ['daily', 'weekly']) # 支持的时间周期
|
||||||
|
|
||||||
logger.info("K线形态策略初始化完成")
|
logger.info("K线形态策略初始化完成")
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user