feat: 新增外部因素分析模块+综合评分引擎+算法文档重构
新增模块: - fund_flow_analyzer.py: 主力资金流向分析(P0, ±20) - market_sentiment.py: 市场情绪指标(P1, ±10) - external_factors.py: 北向资金/美股/大宗商品/汇率(P2-P4,P7) - news_analyzer.py: 公告/并购/政策面LLM分析(P5-P6) - score_engine.py: 综合评分引擎,整合技术面+外部因素 路由更新: - analysis.py: deep_analyze接入综合评分,根据最终评级修正买卖建议 - market.py: 新增4个外部因素API端点 - trades.py: 交易路由更新 算法文档重构: - 章节重排: 技术面(二三)→外部因素(四)→买卖决策(五)→数据源(六)→性能(七) - 架构图更新为五层,标注章节对应 - 5.1/5.2标注纯技术面,5.3整合外部因素修正推荐
This commit is contained in:
@@ -523,3 +523,52 @@ def get_fundamental(stock_code):
|
||||
return jsonify({'success': True, 'data': result, 'source': 'api'})
|
||||
except Exception as e:
|
||||
return jsonify({'error': str(e)}), 500
|
||||
|
||||
|
||||
# ============ 市场情绪 & 外部因素 API ============
|
||||
|
||||
@bp.route('/market_sentiment', methods=['GET'])
|
||||
def market_sentiment():
|
||||
"""获取市场情绪指标(涨停跌停比、连板高度、换手率中位数、两市成交额)"""
|
||||
try:
|
||||
from services.market_sentiment import calc_market_sentiment
|
||||
result = calc_market_sentiment()
|
||||
return jsonify({'success': True, 'data': result})
|
||||
except Exception as e:
|
||||
return jsonify({'success': False, 'error': str(e)}), 500
|
||||
|
||||
|
||||
@bp.route('/external_factors', methods=['GET'])
|
||||
def external_factors():
|
||||
"""获取外部因素综合数据(北向资金、美股隔夜、大宗商品、汇率)"""
|
||||
try:
|
||||
from services.external_factors import get_all_external_factors
|
||||
result = get_all_external_factors()
|
||||
return jsonify({'success': True, 'data': result})
|
||||
except Exception as e:
|
||||
return jsonify({'success': False, 'error': str(e)}), 500
|
||||
|
||||
|
||||
@bp.route('/fund_flow_analysis/<stock_code>', methods=['GET'])
|
||||
def fund_flow_analysis(stock_code):
|
||||
"""获取个股资金流向分析(P0:主力资金进出评分和信号)"""
|
||||
try:
|
||||
from services.fund_flow_analyzer import analyze_fund_flow
|
||||
days = request.args.get('days', 5, type=int)
|
||||
result = analyze_fund_flow(stock_code, days=days)
|
||||
return jsonify({'success': True, 'data': result})
|
||||
except Exception as e:
|
||||
return jsonify({'success': False, 'error': str(e)}), 500
|
||||
|
||||
|
||||
@bp.route('/news_analysis/<stock_code>', methods=['GET'])
|
||||
def news_analysis(stock_code):
|
||||
"""获取个股消息面分析(P5公告+P6政策+异动检测)"""
|
||||
try:
|
||||
from services.news_analyzer import analyze_news_factors
|
||||
from services.stock_service import get_stock_name
|
||||
stock_name = get_stock_name(stock_code) or ''
|
||||
result = analyze_news_factors(stock_code, stock_name)
|
||||
return jsonify({'success': True, 'data': result})
|
||||
except Exception as e:
|
||||
return jsonify({'success': False, 'error': str(e)}), 500
|
||||
|
||||
Reference in New Issue
Block a user