☰
PanWatch 模拟盘引擎原理:按策略信号自动建仓平仓,虚拟账户真实验证
2026/10/1 20:03:12 网站建设 项目流程

PanWatch 模拟盘引擎原理:按策略信号自动建仓平仓,虚拟账户真实验证

【免费下载链接】PanWatchPanWatch — AI stock monitoring for A-shares, HK & US markets, powered by TradingAgents. Portfolio insights, real-time alerts & automated reports.|盯盘侠:覆盖 A股/港股/美股的 AI 盯盘、持仓分析、实时提醒与自动报告。项目地址: https://gitcode.com/GitHub_Trending/pa/PanWatch

PanWatch 是一款覆盖 A 股、港股、美股的 AI 盯盘工具,其中的模拟盘(Paper Trading)引擎是它的"实战验证场":引擎每 60 秒扫描一次策略信号,自动按信号强度决定买多少、何时卖,用 100 万虚拟资金跑出一套可审计的完整交易记录——不花一分钱,却真实验证你的策略。

一、整体架构:四个文件,一条闭环

模拟盘模块结构非常清晰,全部位于 src/modules/paper_trading/ 目录下:

文件职责
paper_trading_engine.py核心引擎:建仓、平仓、账户资金核算
paper_trading_scheduler.py调度器:60 秒扫描 + 盘前计划 + 日终摘要
paper_trading_notifier.py跟单通知:实时推送、盘前计划、日终摘要
api/paper_trading.pyREST API:账户、持仓、交易记录、手动操作

它的工作闭环是:

  1. 信号层:strategy_engine.py 每日对股票池打分,产出StrategySignalRun信号(含评分、入场区间、止损止盈价、建议持有天数);
  2. 执行层:引擎读到buy/add信号后自动建仓,之后逐笔盯盘;
  3. 记录层:每笔持仓(PaperTradingPosition)与成交(PaperTradingTrade)落库,字段定义见 models.py,可完整复盘;
  4. 通知层:建仓/平仓实时推送,每天 09:00 发盘前计划、15:30 发日终摘要。

二、建仓:信号强度决定仓位大小

引擎的建仓逻辑(_check_entries)可以概括为四步:

  • 选信号:查询状态为active、动作为buy/add且带有入场区间的信号,按rank_score降序取前 50 条,同一只股票只保留评分最高的一条,已有持仓的股票直接跳过;
  • 算仓位:按信号强度分四档分配该市场预算——评分 ≥85 投 25%,≥75 投 18%,≥65 投 12%,其余投 8%(_position_weight);
  • 取整手:A 股按一手 100 股向下取整,并逐手扣减,直到含买入费用后仍在可用现金内,买不起最小一手就放弃;
  • 定止损:优先沿用信号自带的止损/止盈比例并映射到实际入场价,缺失时兜底为-8% 止损 / +15% 止盈。

分市场资金池:三个市场独立记账

账户默认初始资金 100 万,按A 股 50% / 港股 30% / 美股 20%切分(可在界面调整,比例合计不超过 100%)。每个市场的可用现金是独立的:

市场可用现金 = 总资金 × 分配比例 + 该市场已实现盈亏 − 该市场持仓成本

比例设为 0 的市场会被完全排除,信号再强也不投入。这个"子池"设计保证了不同市场的盈亏互不干扰,界面上也能按市场分别查看收益曲线与最大回撤。

真实感的关键:与回测共用的成本模型

模拟盘不是"理想成交",它和回测共用同一个 A 股成本模型 cost_model.py:

  • 佣金:双边万 2.5,单笔最低 5 元
  • 印花税:卖出单边万 5
  • 过户费:双边十万分之 1
  • 滑点:默认 5 个基点,买入价上浮、卖出价下压

也就是说,每一笔盈亏都是扣完全部费用后的净值,与真实交易的资金流向完全一致(买入扣现金、卖出回收现金),这就是"虚拟账户真实验证"的含义。

三、平仓:五条离场规则,优先级从高到低

平仓检查(_check_exits)在每轮扫描中依次判断,命中任意一条即以当前市价成交:

优先级离场规则触发条件
1固定止损stop_loss现价 ≤ 止损价
2目标止盈target_price现价 ≥ 止盈价
3移动止损trailing_stop浮盈 ≥5% 后,从持仓最高价回撤超 10%
4信号反转signal_reversal该股票出现新的sell/reduce活跃信号
5时间止损time_stop持有超过信号建议天数(默认 20 天)仍未触发其他规则

第 3 条是最值得玩味的设计:小赚的票先不动,一旦冲高回落超 10% 就锁住利润离场,避免"坐过山车"。而移动止损只跟踪持仓期最高价(highest_price),不会因为盘中抖动误判。

四、调度与通知:像真人交易员一样工作

调度器 paper_trading_scheduler.py 做了两件贴心事:

  • 智能扫描:每 60 秒一轮,带 20 秒随机抖动错峰(避免与价格提醒同时写库);A/港/美任一市场在交易时段才扫描,全休市时自动跳过,不空转;
  • 定时报告:交易日 09:00 推送盘前计划(当日候选股、入场区间、评分、策略名),15:30 推送日终摘要(总资产、当日平仓盈亏、持仓浮盈、可用资金)。

通知内容会展示盈亏比、策略名称、评分等完整上下文,支持中英文,并可指定推送渠道、发测试通知验证配置(pt_notify_*配置项)。

五、手动操作与数据接口

除了全自动,引擎也留足人工干预空间,对应 API 见 api/paper_trading.py:

  • 立即扫描POST /scan:不用等 60 秒,手动触发一轮建仓+平仓检查
  • 手动平仓POST /positions/{id}/close:按最新市价成交某笔持仓
  • 账户开关/重置:一键暂停扫描或清空数据重新开始
  • 绩效看板:账户汇总、收益曲线、按策略聚合的胜率与平均持有天数(GET /metrics)

每一笔成交都带exit_reason标签,事后可以统计"哪种离场方式最赚钱"。相关行为由 tests/test_paper_trading_position.py、tests/test_paper_trading_allocation.py、tests/test_paper_trading_notify.py 等测试用例保障。

六、总结

PanWatch 的模拟盘引擎把"验证一个策略到底赚不赚钱"拆成了可执行的闭环:信号层负责选什么,引擎层负责买多少、何时卖,成本模型负责真实感,调度通知层负责不缺席。它不追求模拟撮合的每一毫秒,而是用 60 秒级轮询 + 完整费用核算 + 五条离场纪律,让你在真金白银之前,先看到一套策略在三个市场里的真实表现——胜率、回撤、每笔离场原因,全部有据可查。

【免费下载链接】PanWatchPanWatch — AI stock monitoring for A-shares, HK & US markets, powered by TradingAgents. Portfolio insights, real-time alerts & automated reports.|盯盘侠:覆盖 A股/港股/美股的 AI 盯盘、持仓分析、实时提醒与自动报告。项目地址: https://gitcode.com/GitHub_Trending/pa/PanWatch

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询