
TradingAgents-CN 分析报告一键应用到模拟交易从投资建议解析到订单落地的完整实现指南【免费下载链接】TradingAgents-CN基于多智能体LLM的中文金融交易框架 - TradingAgents中文增强版项目地址: https://gitcode.com/GitHub_Trending/tr/TradingAgents-CN导读本文围绕 TradingAgents-CN 中「分析报告应用到模拟交易」功能展开系统讲解如何将多智能体分析报告中的投资建议买入/卖出一键解析并提交到模拟交易系统实现从分析结论到订单执行的无缝衔接。你将掌握投资建议的格式约定与解析规则、前端交易确认对话框的实现细节、后端下单 API 的完整链路价格获取、资金/持仓校验、手续费计算以及如何借助analysis_id实现订单与分析报告的溯源关联。功能概述在 TradingAgents-CN 中每个分析报告由多个智能体协作生成最终会沉淀出包含操作方向、目标价格、置信度、风险等级等字段的投资建议。传统流程中用户需要手动切换页面、自行计算数量再下单而「应用到交易」功能把这条链路自动化在报告详情页点击按钮系统自动完成建议解析 → 实时价格获取 → 交易数量计算 → 确认下单 → 跳转模拟交易页面。该功能的核心设计目标有四条智能解析投资建议自动识别买入/卖出操作提取目标价格获取置信度和风险等级同时支持中英文建议格式智能计算交易参数买入时按可用资金自动计算建议仓位默认使用 20% 可用资金、以 100 股为单位、显示最大可买数量卖出时按当前持仓计算且价格与数量均允许用户修改安全确认机制下单前弹出确认对话框完整展示交易信息与账户状态用户确认后才真正执行完整交易记录订单中记录analysis_id将交易与分析报告关联为后续回测和策略评估提供数据基础。使用方法四步完成从报告到交易步骤 1查看分析报告进入「分析报告」页面点击任意报告进入详情页。报告头部展示股票代码、股票名称、分析状态、生成时间、参与智能体及所用模型等信息顶部操作区提供「应用到交易」「下载报告」「返回」三个入口。步骤 2点击「应用到交易」只有报告包含明确买入或卖出建议时右上角才会显示「应用到交易」按钮对应源码中的canApplyToTrading计算属性见 ReportDetail.vue。点击后系统自动解析投资建议并弹出交易确认对话框。步骤 3确认并修改交易信息确认对话框完整展示以下字段字段说明股票代码报告对应的标的操作类型买入绿色或卖出红色目标价格从报告解析出的预期最高价仅供参考当前价格实时行情获取交易价格可修改默认取当前价格交易数量可修改以 100 股为单位预计金额交易价格 × 数量实时联动计算模型置信度从报告解析标注不代表实际成功率风险评估从报告解析的风险等级账户状态买入时显示可用资金与最大可买数量卖出时显示当前持仓步骤 4执行交易修改价格和数量后点击「确认下单」前端先做一轮本地校验数量为 100 的整数倍、不超最大数量、价格大于 0、资金充足再调用下单 API成功后提示订单已提交成功约 1.5 秒后自动跳转到模拟交易页面router.push({ name: PaperTradingHome })。投资建议格式约定系统按关键词与正则两种方式解析建议兼容中英文。推荐的标准格式如下投资建议买入 目标价格7.8元预期最高价 决策依据农业银行具备政策支持、稳定盈利和低估值优势...字段语义需明确区分目标价格模型预期的股价最高可到价格仅作参考不作为实际成交价买入价格使用系统自动获取的当前实时价格实际交易价格/数量用户在确认对话框中可自由修改。支持的格式变体解析层同样兼容操作: buy目标价: 7.8置信度: 0.75建议卖出 目标价45.0元前端实现深入解析1. 按钮显示条件canApplyToTrading按钮并非始终可见而是通过正则判断报告recommendation字段中是否包含买入或卖出语义const canApplyToTrading computed(() { if (!report.value) return false const rec report.value.recommendation || // 检查是否包含买入或卖出建议 return rec.includes(买入) || rec.includes(卖出) || rec.toLowerCase().includes(buy) || rec.toLowerCase().includes(sell) })2. 解析投资建议parseRecommendation解析逻辑同时读取报告的recommendation字段与reports.trader_investment_plan交易员智能体的投资计划以正则目标价[格]?[:]\s*([0-9.])提取目标价格并顺带取出置信度与风险等级const parseRecommendation () { if (!report.value) return null const rec report.value.recommendation || const traderPlan report.value.reports?.trader_investment_plan || // 解析操作类型 let action: buy | sell | null null if (rec.includes(买入) || rec.toLowerCase().includes(buy)) { action buy } else if (rec.includes(卖出) || rec.toLowerCase().includes(sell)) { action sell } if (!action) return null // 解析目标价格从recommendation或trader_investment_plan中提取 let targetPrice: number | null null const traderPlanText typeof traderPlan string ? traderPlan : const priceMatch rec.match(/目标价[格]?[:]\s*([0-9.])/) || traderPlanText.match(/目标价[格]?[:]\s*([0-9.])/) if (priceMatch) { targetPrice parseFloat(priceMatch[1]) } return { action, targetPrice, confidence: report.value.confidence_score || 0, riskLevel: report.value.risk_level || 中等 } }若解析不出操作类型前端会提示无法解析投资建议请检查报告内容并中止流程。3. 获取实时价格前端通过stocksApi.getQuote定义于 stocks.ts实际请求GET /api/stocks/{symbol}/quote获取实时行情。获取失败时回退到默认价格 10 元// 获取当前实时价格 let currentPrice 10 // 默认价格 try { const quoteRes await stocksApi.getQuote(currentReport.stock_symbol) if (quoteRes.success quoteRes.data quoteRes.data.price) { currentPrice quoteRes.data.price } } catch (error) { console.warn(获取实时价格失败使用默认价格) }4. 计算交易数量买入与卖出的数量计算逻辑完全不同。买入受可用资金约束且需按股票所属市场匹配对应币种账户getCashByCurrency会把 A 股/港股/美股分别映射到 CNY/HKD/USD 现金池卖出受当前持仓约束if (recommendation.action buy) { // 买入根据可用资金和当前价格计算 maxQuantity Math.floor(availableCash / currentPrice / 100) * 100 // 100股为单位 const suggested Math.floor(maxQuantity * 0.2) // 建议使用20%资金 suggestedQuantity Math.floor(suggested / 100) * 100 // 向下取整到100的倍数 suggestedQuantity Math.max(100, suggestedQuantity) // 至少100股 } else { // 卖出根据当前持仓计算 if (!currentPosition || currentPosition.quantity 0) { ElMessage.warning(当前没有持仓无法卖出) return } maxQuantity currentPosition.quantity suggestedQuantity Math.floor(maxQuantity / 100) * 100 suggestedQuantity Math.max(100, suggestedQuantity) }5. 可编辑的确认对话框对话框用 Element Plus 的ElMessageBoxh()渲染函数构建价格与数量使用ElInputNumber双向绑定reactive响应式对象预计金额通过computed随输入实时联动h(ElInputNumber, { modelValue: tradeForm.price, onUpdate:modelValue: (val?: number) { tradeForm.price val ?? tradeForm.price }, min: 0.01, max: 9999, precision: 2, step: 0.01 }), h(ElInputNumber, { modelValue: tradeForm.quantity, onUpdate:modelValue: (val?: number) { tradeForm.quantity val ?? tradeForm.quantity }, min: 100, max: maxQuantity, step: 100 })对话框顶部还带有一条醒目的红色风险提示横幅明确基于 AI 分析结果仅供参考不构成投资建议模拟交易使用虚拟资金与实盘存在显著差异等免责声明强调模拟结果不得作为实盘决策依据。6. 本地校验与下单beforeClose钩子在下单前执行校验数量必须为 100 的整数倍且不超过maxQuantity、价格必须大于 0、买入时总金额不得超出可用资金。校验通过后调用paperApi.placeOrder并把报告的analysis_id无则退回报告id一并提交实现订单溯源const orderRes await paperApi.placeOrder({ code: currentReport.stock_symbol, side: recommendation.action, quantity: tradeForm.quantity, analysis_id: currentReport.analysis_id || currentReport.id })paperApi定义于 paper.ts除placeOrder外还封装了getAccountGET /api/paper/account、getPositions、getOrders、resetAccount等接口请求体PlaceOrderPayload中analysis_id为可选字段。后端下单 API 深入解析接口定义下单接口为POST /api/paper/order实现在 paper.py对应的 Pydantic 请求模型如下class PlaceOrderRequest(BaseModel): code: str Field(..., description股票代码支持A股/港股/美股) side: Literal[buy, sell] quantity: int Field(..., gt0) market: Optional[str] Field(None, description市场类型 (CN/HK/US)不传则自动识别) # 可选关联的分析ID便于从分析页面一键下单后追踪 analysis_id: Optional[str] None请求示例{ code: 601288, side: buy, quantity: 100, analysis_id: abc123 }响应示例订单以最新价即时成交status恒为filled{ success: true, data: { order: { code: 601288, side: buy, quantity: 100, price: 7.8, amount: 780.0, status: filled, created_at: 2025-10-04T12:00:00Z } } }市场识别与代码标准化后端支持多市场下单。_detect_market_and_code按以下规则自动识别市场并标准化代码见 paper.py带.HK后缀或 4~5 位数字 → 港股HK统一补齐为 5 位纯字母 → 美股US6 位数字 → A 股CN默认按 A 股处理并补齐 6 位。价格获取链路_get_last_price按市场走不同数据源见 paper.pyA 股优先查询market_quotes集合的close字段失败则回退到stock_basic_info的current_price港股/美股通过ForeignStockService.get_quote获取并兼容price/current_price/close多个字段。若最终拿不到有效价格接口直接返回 400无法获取股票 {code} ({market}) 的最新价格。资金、持仓与手续费校验下单核心流程paper.py买入校验对应币种CNY/HKD/USD可用资金是否覆盖金额 手续费不足则返回 400成交后扣减现金持仓按加权平均成本更新卖出先通过_get_available_quantity校验可用持仓——A 股受 T1 限制今日买入部分不可卖按paper_trades当日买入量扣减港股/美股 T0 全部可用卖出后现金增加净收入扣除手续费已实现盈亏同步累加持仓归零时删除持仓记录手续费_calculate_commission按paper_market_rules中的市场规则计算佣金费率 最低佣金、卖出印花税以及港股交易征费/交易费/结算费、美股 SEC 费仅卖出等差异化费用。账户与持仓按多货币设计INITIAL_CASH_BY_MARKETA 股 100 万人民币、港股 100 万港币、美股 10 万美元并兼容旧版标量现金结构的自动迁移。订单与成交双写 溯源成交后同时写入两张集合paper_orders订单记录与paper_trades成交记录含卖出盈亏pnl。关键设计是只要请求携带analysis_id该 ID 就会被写入订单与成交记录见 paper.py从而让这笔交易来自哪份分析报告在数据库层面可查为后续报告准确率评估与策略回测提供数据锚点。端到端数据流程用户查看报告 ↓ 点击应用到交易 ↓ 解析投资建议canApplyToTrading → parseRecommendation ↓ 获取账户信息paperApi.getAccount ↓ 获取实时价格stocksApi.getQuote ↓ 计算交易数量买入按20%资金/卖出按持仓 ↓ 显示可编辑确认对话框 ↓ 本地校验 → 用户确认 ↓ 调用下单APIPOST /api/paper/order ↓ 后端校验 → 成交 → 写入订单/成交记录含 analysis_id ↓ 跳转到模拟交易页面注意事项与边界约束按钮显示条件仅当报告含明确的买入/卖出或 buy/sell语义时才渲染按钮避免对无方向性建议误操作价格三级处理目标价格解析自报告仅参考→ 当前价格实时行情→ 交易价格默认当前价、可修改实时价获取失败时回退默认价 10 元数量双重限制买入受可用资金约束、卖出受持仓约束最小交易单位 100 股前端与后端均做了校验后端quantity gt0之外还有资金/持仓检查兜底风险提示模拟交易不涉及真实资金AI 建议仅供参考下单前对话框会再次展示风险免责声明实际交易需独立审慎决策。后续优化方向原文档规划了四个演进方向可作为功能迭代的路线图高级交易能力自定义交易数量、设置止损价、分批建仓、定时交易风控能力单笔交易金额限制、单日交易次数限制、持仓集中度检查、风险等级匹配交易计划保存为计划草稿、设置触发条件、批量管理计划、计划执行提醒回测分析利用已记录的analysis_id溯源交易来源统计报告准确率、策略收益并据此优化建议算法。相关文件索引前端ReportDetail.vue — 报告详情页包含canApplyToTrading、parseRecommendation、applyToTrading完整实现paper.ts — 模拟交易 API 封装账户、下单、持仓、订单、重置stocks.ts — 行情 API 封装getQuote后端paper.py — 模拟交易路由账户/下单/持仓/订单/重置多市场、多货币、手续费与 T1 逻辑reports.py — 报告管理路由报告查询兼容_id/analysis_id/task_id三种方式_build_report_query数据库集合paper_accounts— 模拟账户多币种现金、已实现盈亏、账户设置paper_positions— 持仓记录含available_qty与加权平均成本paper_orders— 订单记录含可选analysis_id溯源字段paper_trades— 成交记录含pnl与analysis_idpaper_market_rules— 各市场交易规则手续费、T1 等market_quotes/stock_basic_info— 行情价格数据源【免费下载链接】TradingAgents-CN基于多智能体LLM的中文金融交易框架 - TradingAgents中文增强版项目地址: https://gitcode.com/GitHub_Trending/tr/TradingAgents-CN创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考