Skip to content

FQuant 后端项目地图

本文档旨在提供 FQuant.Server 的高层结构概览,明确每个模块的核心职责与功能,作为新开发者快速理解项目的“地图”。


1. FQData/ - 数据层 (Data Layer)

职责: 项目的数据基础,负责从外部(主要是通达信)获取原始数据,并进行标准化的清洗、转换和存储。

  • QAFetch/: 数据获取模块

    • QATdx.py: 封装 pytdx,与通达信服务器交互的核心,获取行情数据。
    • QAQuery.py, QAQuery_Advance.py: 对原始数据进行二次封装,提供更友好的上层查询接口。
    • QACrawler.py: 用于爬取特定网页数据的模块。
  • QAData/: 数据结构模块

    • QADataStruct.py 等: 定义项目中核心数据对象(如日线、财务数据)的 Pandas DataFrame 标准结构。
    • data_resample.py: 提供时间序列数据重采样(如分钟转日线)的工具。
  • QASU/ (Save/Update): 数据存储与更新模块

    • save_tdx.py 等: 将 QAFetch 获取的数据,按照 QAData 的标准结构,存入 MongoDB。这是实现数据每日增量更新的核心。
  • QAUtil/: 通用工具模块

    • QADate_trade.py: 强大的交易日期处理工具库。
    • 其他工具如日志、数据库连接等。

2. FQFactor/ - 因子层 (Factor Layer)

职责: 基于数据层提供的基础数据,计算各种技术指标和复合因子。

  • Indicator/: 技术指标库

    • IKDJ.py, IMACD.py 等: 每个文件都是一个独立的技术指标算法实现(如 KDJ, MACD),是所有因子计算的原子单位。
  • Factor/: 复合因子模块

    • Indicator/ 中的基础指标进行组合,形成更复杂的复合因子(如“KDJ金叉”叠加“MACD红柱”等)。
  • Analysis/: 因子分析模块

    • 对单个证券的多个因子进行综合分析、计算评分或生成分析结论。

3. FQMarket/ - 市场/策略层 (Market/Strategy Layer)

职责: 项目的业务逻辑核心,负责市场分析、策略筛选和模拟回测。

  • FQUtil/: 市场层工具模块

    • Parameter.py: 项目核心配置文件,定义了绝大部分业务参数、文件路径、阈值和全局变量。
    • ToolsGetData.py: 核心数据访问接口,封装了从数据库获取各类预计算数据(如因子、指数、市场数据)的标准方法。
    • ToolsSaveData.py: 负责将 FQMarket 计算出的结果(如策略池)保存到数据库或生成供前端使用的 JSON 文件。
  • StrategyPools/: 策略池生成模块

    • sp_*.py: 包含一系列以 sp_ 开头的独立选股策略文件。每个文件都是一套完整的选股逻辑,是所有回测和推荐的股票来源。
  • Simulate/: 模拟回测模块

    • CPoolsSimulate.py: 回测引擎的核心,负责驱动整个模拟交易流程。
    • CPools_BuyStra.py, CPools_SellStra.py 等: 定义了具体的买入、卖出、仓位管理等可被回测引擎调用的原子化策略组件。
  • RealTime/: 实时分析模块

    • CAnalysisRealTime.py: 负责在交易时段内,进行实时的市场统计(如成交量预测、涨跌分布)和数据更新。

4. FQServer/ - 服务层 (Service Layer)

职责: 任务调度与服务入口。

  • Celery/: 异步任务调度模块

    • Application.py: Celery 应用的入口点。
    • TaskData.py: 定义了所有核心的数据处理定时任务(如每日收盘后的数据下载、因子计算、策略池生成等)。
    • TaskMessage.py: 定义了所有消息推送相关的定时任务。
  • Flask/: 一个临时的测试服务,在开发中可以忽略