update pay function

This commit is contained in:
2025-11-30 13:47:47 +08:00
parent 05aa0c89f0
commit 4127e4c816

View File

@@ -2623,70 +2623,158 @@ async def calc_price_entropy(code: str, days: int = 60) -> Dict[str, Any]:
# ==================== 工具注册供MCP使用 ====================
# 包装函数:将 args 字典解构为函数参数
# MCP 调用时传入的是 args: Dict[str, Any],需要解构后调用实际函数
async def _wrap_get_macd_signal(args: Dict[str, Any]):
return await get_macd_signal(args.get("code"), args.get("days", 60))
async def _wrap_check_oscillator_status(args: Dict[str, Any]):
return await check_oscillator_status(args.get("code"), args.get("days", 30))
async def _wrap_analyze_bollinger_bands(args: Dict[str, Any]):
return await analyze_bollinger_bands(args.get("code"), args.get("days", 60), args.get("period", 20))
async def _wrap_calc_stop_loss_atr(args: Dict[str, Any]):
return await calc_stop_loss_atr(args.get("code"), args.get("days", 30), args.get("multiplier", 2.0))
async def _wrap_analyze_market_heat(args: Dict[str, Any]):
return await analyze_market_heat(args.get("code"), args.get("days", 20))
async def _wrap_check_volume_price_divergence(args: Dict[str, Any]):
return await check_volume_price_divergence(args.get("code"), args.get("days", 30))
async def _wrap_check_new_high_breakout(args: Dict[str, Any]):
return await check_new_high_breakout(args.get("code"), args.get("days", 250))
async def _wrap_identify_candlestick_pattern(args: Dict[str, Any]):
return await identify_candlestick_pattern(args.get("code"), args.get("days", 10))
async def _wrap_find_price_gaps(args: Dict[str, Any]):
return await find_price_gaps(args.get("code"), args.get("days", 60), args.get("min_gap_pct", 2.0))
async def _wrap_calc_max_drawdown(args: Dict[str, Any]):
return await calc_max_drawdown(args.get("code"), args.get("days", 250))
async def _wrap_check_valuation_rank(args: Dict[str, Any]):
return await check_valuation_rank(args.get("code"), args.get("days", 250))
async def _wrap_calc_price_zscore(args: Dict[str, Any]):
return await calc_price_zscore(args.get("code"), args.get("days", 60))
async def _wrap_calc_market_profile_vpoc(args: Dict[str, Any]):
return await calc_market_profile_vpoc(args.get("code"), args.get("date"))
async def _wrap_calc_realized_volatility(args: Dict[str, Any]):
return await calc_realized_volatility(args.get("code"), args.get("date"))
async def _wrap_analyze_buying_pressure(args: Dict[str, Any]):
return await analyze_buying_pressure(args.get("code"), args.get("date"))
async def _wrap_get_comprehensive_analysis(args: Dict[str, Any]):
return await get_comprehensive_analysis(args.get("code"))
async def _wrap_calc_rsi_divergence(args: Dict[str, Any]):
return await calc_rsi_divergence(args.get("code"), args.get("days", 60))
async def _wrap_calc_bollinger_squeeze(args: Dict[str, Any]):
return await calc_bollinger_squeeze(args.get("code"), args.get("days", 60))
async def _wrap_analyze_obv_trend(args: Dict[str, Any]):
return await analyze_obv_trend(args.get("code"), args.get("days", 60))
async def _wrap_calc_amihud_illiquidity(args: Dict[str, Any]):
return await calc_amihud_illiquidity(args.get("code"), args.get("days", 60))
async def _wrap_calc_parkinson_volatility(args: Dict[str, Any]):
return await calc_parkinson_volatility(args.get("code"), args.get("date"))
async def _wrap_calc_trend_slope(args: Dict[str, Any]):
return await calc_trend_slope(args.get("code"), args.get("days", 60))
async def _wrap_calc_hurst_exponent(args: Dict[str, Any]):
return await calc_hurst_exponent(args.get("code"), args.get("days", 100))
async def _wrap_test_cointegration(args: Dict[str, Any]):
return await test_cointegration(args.get("code1"), args.get("code2"), args.get("days", 120))
async def _wrap_calc_kelly_position(args: Dict[str, Any]):
return await calc_kelly_position(args.get("win_rate"), args.get("win_loss_ratio"), args.get("max_position", 0.25))
async def _wrap_search_similar_kline(args: Dict[str, Any]):
return await search_similar_kline(args.get("code"), args.get("lookback", 5), args.get("search_range", 250))
async def _wrap_decompose_trend_simple(args: Dict[str, Any]):
return await decompose_trend_simple(args.get("code"), args.get("days", 120))
async def _wrap_calc_price_entropy(args: Dict[str, Any]):
return await calc_price_entropy(args.get("code"), args.get("days", 60), args.get("bins", 10))
QUANT_TOOLS = {
# 经典技术指标
"get_macd_signal": get_macd_signal,
"check_oscillator_status": check_oscillator_status,
"analyze_bollinger_bands": analyze_bollinger_bands,
"calc_stop_loss_atr": calc_stop_loss_atr,
"get_macd_signal": _wrap_get_macd_signal,
"check_oscillator_status": _wrap_check_oscillator_status,
"analyze_bollinger_bands": _wrap_analyze_bollinger_bands,
"calc_stop_loss_atr": _wrap_calc_stop_loss_atr,
# 资金与情绪
"analyze_market_heat": analyze_market_heat,
"check_volume_price_divergence": check_volume_price_divergence,
"analyze_market_heat": _wrap_analyze_market_heat,
"check_volume_price_divergence": _wrap_check_volume_price_divergence,
# 形态与突破
"check_new_high_breakout": check_new_high_breakout,
"identify_candlestick_pattern": identify_candlestick_pattern,
"find_price_gaps": find_price_gaps,
"check_new_high_breakout": _wrap_check_new_high_breakout,
"identify_candlestick_pattern": _wrap_identify_candlestick_pattern,
"find_price_gaps": _wrap_find_price_gaps,
# 风险与估值
"calc_max_drawdown": calc_max_drawdown,
"check_valuation_rank": check_valuation_rank,
"calc_price_zscore": calc_price_zscore,
"calc_max_drawdown": _wrap_calc_max_drawdown,
"check_valuation_rank": _wrap_check_valuation_rank,
"calc_price_zscore": _wrap_calc_price_zscore,
# 分钟级高阶算子
"calc_market_profile_vpoc": calc_market_profile_vpoc,
"calc_realized_volatility": calc_realized_volatility,
"analyze_buying_pressure": analyze_buying_pressure,
"calc_market_profile_vpoc": _wrap_calc_market_profile_vpoc,
"calc_realized_volatility": _wrap_calc_realized_volatility,
"analyze_buying_pressure": _wrap_analyze_buying_pressure,
# 综合分析
"get_comprehensive_analysis": get_comprehensive_analysis,
"get_comprehensive_analysis": _wrap_get_comprehensive_analysis,
# ==================== 新增12个因子 ====================
# RSI背离检测
"calc_rsi_divergence": calc_rsi_divergence,
"calc_rsi_divergence": _wrap_calc_rsi_divergence,
# 布林带挤压
"calc_bollinger_squeeze": calc_bollinger_squeeze,
"calc_bollinger_squeeze": _wrap_calc_bollinger_squeeze,
# OBV能量潮独立分析
"analyze_obv_trend": analyze_obv_trend,
"analyze_obv_trend": _wrap_analyze_obv_trend,
# Amihud非流动性因子
"calc_amihud_illiquidity": calc_amihud_illiquidity,
"calc_amihud_illiquidity": _wrap_calc_amihud_illiquidity,
# 帕金森波动率
"calc_parkinson_volatility": calc_parkinson_volatility,
"calc_parkinson_volatility": _wrap_calc_parkinson_volatility,
# 趋势线性回归斜率
"calc_trend_slope": calc_trend_slope,
"calc_trend_slope": _wrap_calc_trend_slope,
# Hurst指数
"calc_hurst_exponent": calc_hurst_exponent,
"calc_hurst_exponent": _wrap_calc_hurst_exponent,
# 协整性测试
"test_cointegration": test_cointegration,
"test_cointegration": _wrap_test_cointegration,
# 凯利公式仓位
"calc_kelly_position": calc_kelly_position,
"calc_kelly_position": _wrap_calc_kelly_position,
# 相似K线检索
"search_similar_kline": search_similar_kline,
"search_similar_kline": _wrap_search_similar_kline,
# 趋势分解简化版不依赖Prophet
"decompose_trend_simple": decompose_trend_simple,
"decompose_trend_simple": _wrap_decompose_trend_simple,
# 价格熵值计算
"calc_price_entropy": calc_price_entropy,
"calc_price_entropy": _wrap_calc_price_entropy,
}