Skip to content

博衍通 — 技术架构

版本: v1.0(2026-08) 适用对象: 后续开发与维护人员 文档目的: 完整说明系统的架构设计、模块职责、数据流转、核心业务逻辑与运维要点,作为后续开发与维护的权威参考。 配套文档: 00-系统总览 · 01-功能清单 · 03-数据模型与数据库 · 04-使用手册 · 06-开发指南 · 功能指南(期权研判 / 波动率云图 / 希腊字母 / Gamma热力图


目录

  1. 系统概述
  2. 技术栈
  3. 解决方案与项目结构
  4. 整体架构与数据流
  5. 数据层设计
    • 5.1 PostgreSQL 表结构清单
    • 5.2 Redis 使用规范
    • 5.3 数据库连接与兼容性
  6. Python 数据采集管道
  7. 核心服务(Futures.Core)
    • 7.1 交易执行(仿真撮合)
    • 7.2 风控与结算
    • 7.3 自动交易与止损止盈
    • 7.4 行情与数据读取
    • 7.5 期权与波动率分析
    • 7.6 机会扫描与策略
    • 7.7 宏观(Macro)
    • 7.8 参数与品种管理
    • 7.9 其他服务
  8. 桌面应用(Futures.Desktop)
    • 8.1 启动流程与依赖注入
    • 8.2 主界面(ShellWindow)与导航
    • 8.3 各 UI 模块
  9. 配置管理
  10. 后台定时任务与调度
  11. 测试
  12. 开发与构建指南
  13. 维护注意事项与已知问题
  14. 附录:名词对照表

1. 系统概述

本系统是一套面向国内期货 + 期权的桌面级行情分析、交易机会挖掘、仿真交易与风控一体化平台。核心定位:

  • 数据驱动:通过 Python 采集脚本(天勤 tqsdk + Tushare)全天候采集期货/期权实时行情、日线数据、持仓排名、仓单、宏观事件等,写入 PostgreSQL(TimescaleDB)与 Redis。
  • 分析引擎:提供期货研判、期权研判、波动率云图、Gamma 热力图、期限结构、仓单分析、席位趋势、宏观评分、跨品种套利、事件雷达等分析能力。
  • 仿真交易闭环:内置 SimulatedBrokerService 仿真撮合引擎(PostgreSQL 落账,账户 SimNow-001,初始资金 100 万),支持手动建仓、挂单、自动止损止盈、自动交易执行(·AUTO 标记)、每日结算、风控规则。
  • 桌面 UI:WPF + Prism(DryIoc)MVVM,44 个可导航视图(ViewMap 全量),深色主题,全中文界面(资源文件驱动,预留多语言扩展)。
  • 当前状态CTP 实盘/SimNow 直连尚未接入,系统中所有 CTP 相关代码已于 2026-08 移除,交易通道唯一实现为仿真撮合引擎。若未来需要接入实盘,可在 IBrokerService 接口处扩展。

⚠️ 重要:本系统是分析 + 仿真交易系统,不连接真实期货交易柜台,不会产生真实交易。


2. 技术栈

领域技术版本
运行时.NETnet9.0(Core)/ net9.0-windows(WPF)
UI 框架WPF + Prism(PrismApplication, DryIoc 容器)Prism 9.0.537
图表LiveChartsCore.SkiaSharpView.WPF2.0.5
UI 控件库HandyControl(仅 Desktop)3.5.1
数据库PostgreSQL + TimescaleDB(超表分片)Npgsql 10.0.3
数据访问Dapper(微 ORM)+ 原生 NpgsqlCommandDapper 2.1.35
缓存Redis(阿里云实例,实时行情快速通道)StackExchange.Redis 3.0.11
日志Microsoft.Extensions.Logging(Console + Debug)10.x
可观测性OpenTelemetry API(ActivitySource 定义)1.17.0
系统监控WMI(System.Management),进程指纹识别9.0.0
敏感配置DPAPI(ProtectedData,__ENC__ 前缀)9.0.0
响应式System.Reactive(Desktop 引用)6.1.0
编码System.Text.Encoding.CodePages(GBK 支持)9.0.0
行情采集(Python)tqsdk(天勤)、Tushare、psycopg2、redis-py、scipyPython 3
测试xUnit(net9.0)335 用例

3. 解决方案与项目结构

解决方案文件:Futures.Desktop.slnx(新版 XML 格式解决方案,dotnet sln add 管理)。

D:\code\futures\
├── Futures.Desktop.slnx              # 解决方案
├── src\
│   ├── Futures.Core\                 # 核心类库(net9.0,无 UI)
│   │   ├── Data\                     # 数据访问与服务(140 文件)
│   │   │   ├── Collectors\           # 排名/仓单持久化 + PythonScriptRunner
│   │   │   └── Scheduling\           # 数据采集调度(定时任务框架)
│   │   ├── Models\                   # 领域模型(98 文件)
│   │   ├── Services\                 # ConfigService、OptionPricingService 等
│   │   ├── Helpers\                  # TradingTimeHelper、BrokerMarginAccounting
│   │   ├── Logging\                  # LogManager(全局日志门面)
│   │   ├── Diagnostics\              # DiagnosticConfig(OpenTelemetry)
│   │   └── Tushare\                  # TushareApiClient(真实实现)
│   ├── Futures.Desktop\              # WPF 宿主壳(WinExe)
│   ├── Futures.Module.Shared\        # 共享 UI 基础设施(转换器/图表/导航桥/本地化)
│   ├── Futures.Module.Futures\       # 期货模块(14 视图)
│   ├── Futures.Module.Options\       # 期权模块(4 视图)
│   └── Futures.Module.Stock\         # 股票模块(3 视图 + 数据采集调度)
├── tests\
│   └── Futures.Core.Tests\           # xUnit 测试工程(335 用例)
├── script\                           # Python 采集脚本(随发布复制到 py_scripts\)
├── sql\                              # SQL 迁移脚本 + run_migration.py
├── docs\                             # 文档
└── tools\                            # 一次性维护脚本(extract_ui_strings.ps1)

3.1 项目引用关系

Futures.Desktop (WinExe, net9.0-windows)
├── Futures.Core
├── Futures.Module.Shared
├── Futures.Module.Futures ──┬── Futures.Core
│                            └── Futures.Module.Shared
├── Futures.Module.Stock ────┬── Futures.Core
│                            └── Futures.Module.Shared
└── Futures.Module.Options ──┬── Futures.Core
                             └── Futures.Module.Shared

依赖方向单向:Core ← Shared ← (Futures/Stock/Options) ← Desktop。Core 不引用任何 UI 项目。

3.2 各项目职责

项目职责
Futures.Core纯业务逻辑层:数据访问、仿真撮合、风控、结算、自动交易、分析引擎、配置、日志。不依赖 UI。
Futures.Module.Shared共享 UI 基建:29 个转换器、K 线/分时图控件、图表构建器、导航静态桥(NavigationBridge + 3 个 Carrier)、本地化资源(UIStrings.resx + TrExtension)。
Futures.Module.Futures期货相关视图:期货研判、期货列表、持仓龙虎榜、仓单分析、主力映射、热力图、板块管理、交易机会、信号历史、宏观录入/规则/权重、事件雷达、套利配置。
Futures.Module.Options期权相关视图:期权研判(综合)、期权列表、波动率分析、波动率云图。
Futures.Module.Stock股票相关视图:股票研判、股票列表、个股分析;并注册数据采集调度器(DataCollectionSchedulerService)与股价预警监控。
Futures.Desktop应用壳:DI 注册、模块目录、ShellWindow(侧边栏+标签页)、托盘通知、启动序列。
Futures.Core.TestsCore 的单元测试(xUnit,net9.0,InternalsVisibleTo 暴露内部成员给测试)。

4. 整体架构与数据流

                     ┌────────────────────────────────────────────────┐
                     │            Python 采集层 (script/)             │
                     │  tq_futures_pg / tq_overseas / unified_options │
                     │  daily_update_* / tq_mapping / update_calendar │
                     └───────┬───────────────────┬───────────────────┘
                             │ 每 tick           │ 批量 2-3s
                             ▼                   ▼
                     ┌───────────────┐   ┌────────────────────────────┐
                     │   Redis       │   │ PostgreSQL (TimescaleDB)   │
                     │ quote:{sym}   │   │ quotes_realtime (超表)      │
                     │ 哈希, TTL600s │   │ quotes_option_realtime(超表)│
                     │ (Greeks 字段) │   │ quotes_daily/option_daily   │
                     └───────┬───────┘   │ futures/options/日历/映射    │
                             │           │ 交易/风控/信号/结算表        │
                             │           └──────────┬─────────────────┘
                             ▼                      │
             ┌───────────────────────────────────────┴─────────────────┐
             │              Futures.Core (net9.0 服务层)                │
             │  RealtimePriceCache(Redis→PG 回退)  FuturesDataService   │
             │  SimulatedBrokerService  RiskControlService              │
             │  AutoTradeExecutionService AutoStopService               │
             │  分析引擎: Greeks/波动率/期限结构/宏观/仓单/席位/机会      │
             └───────────────────────┬─────────────────────────────────┘
                                     │ 依赖注入(Prism DryIoc,全单例)

             ┌────────────────────────────────────────────────────────┐
             │   Futures.Desktop (WPF 壳) + 4 个功能模块(44 视图)     │
             │   ShellWindow: 侧边栏导航 + 可关闭标签页 + 托盘通知      │
             └────────────────────────────────────────────────────────┘

4.1 关键数据流(实时行情)

  1. Python 采集脚本(天勤 tqsdk)每 tick 更新 Redis quote:{symbol} 哈希(期货 10 字段,期权另含 8 个 Greeks/IV 字段),TTL 600 秒。
  2. 同时每 2-3 秒批量 INSERT 到 PostgreSQL 超表 quotes_realtime / quotes_option_realtime(TimescaleDB 按天分片)。
  3. .NET 侧 RealtimePriceCache 先读 Redis(亚毫秒),未命中再回退 PG 最新价;UI 因此感知不到 PG 批量写延迟。
  4. 收盘后定时任务(daily_update_*_pg.py)以 api.get_quote() 权威数据 UPDATE quotes_daily / quotes_option_daily(结算价、涨跌停、昨结等)。

4.2 关键数据流(交易闭环)

  1. 分析引擎扫描出交易机会TradingOpportunity)→ 用户在交易机会页记录信号signal_history)。
  2. 手动下单:期货研判/期权研判页 → IBrokerService.PlaceOrderAsync(仿真撮合)→ 成交建仓 trading_positions
  3. 自动交易(AutoTradeExecutionService,默认关闭):机会满足条件自动挂单(·AUTO 标记)→ 10s 轮询成交 → auto_trade_log 记录生命周期(place→fill→tp_exit/sl_exit)。
  4. AutoStopService(5s 后台)+ SignalAutoCloseService(30s 后台)监控止盈止损,触发后平仓并托盘通知。
  5. 收盘后 DailySettlementService 生成每日结算(settlement_history);TradeReviewReportService 每周自动生成复盘报告(review_report)。

5. 数据层设计

5.1 PostgreSQL 表结构清单

数据库:futures(默认 localhost:5432,生产 10.10.44.35:5432),schema public,TimescaleDB 扩展已启用。

A. 行情与基础数据(由 init_timescaledb.py 创建)

表名用途关键列超表
trading_calendar交易日历trade_date DATE PK, is_trading_day SMALLINT
exchanges交易所exchange_id VARCHAR(10) PK
futures期货合约元数据symbol PK, exchange_id, product_id, product_name, instrument_name, expiry_date
session_types交易时段类型字典session_type_id PK, type_name(DAY/NIGHT)
product_trading_hours品种交易时段product_id, exchange_id, session_type_id, start_time, end_time, cross_day
options期权合约元数据symbol PK, exchange_id, underlying_symbol, product_id, option_type(C/P), strike_price, expiry_date, multiplier
quotes_realtime期货实时快照id, symbol, datetime(分区键), last_price, volume, open_interest, average, amount, ask/bid 1..5;PK (id, datetime)(按天分片)
quotes_daily期货日线symbol, trade_date, open/high/low/close, volume, open_interest, amount, settlement, upper/lower_limit, pre_settlement, pre_close, pre_open_interest;PK (symbol, trade_date)
quotes_option_realtime期权实时 + Greeksid, symbol, datetime(分区键), 盘口1..5, greeks_delta/gamma/theta/vega/rho, implied_volatility, intrinsic_value, time_value, historical_volatility;PK (id, datetime)(按天分片)
quotes_option_daily期权日线同 quotes_daily + 结算/涨跌停列

B. 映射与交易所数据

表名用途关键列
fut_mappings主力/连续合约映射(Python 采集 + .NET 读取)trade_date, ts_code(如 SHFE.cu), mapping_ts_code;UNIQUE (trade_date, ts_code)
member_position_ranking交易所会员持仓排名(Tushare fut_holding)exchange, symbol, trade_date, member_name, rank, long/short_volume, long/short_change
warehouse_receipt仓单数据exchange, symbol, warehouse, trade_date, registered_qty, registered_change, effective_forecast_qty
inventory_weekly周度库存exchange, symbol, report_date, inventory_qty, inventory_change, unit
fut_wsrTushare fut_wsr 仓单明细trade_date, symbol, fut_name, warehouse, pre_vol, vol, vol_chg, area, year, grade, brand, ...

C. 交易 / 风控 / 信号 / 结算表(由 .NET 服务幂等自建)

表名用途创建方
broker_account模拟账户(单行:余额/冻结/保证金/累计盈亏)SimulatedBrokerService
broker_orders模拟委托/成交(Pending/Filled/Cancelled 等状态机)SimulatedBrokerService
trading_positions期货持仓账本(含多腿期权字段、typed 止盈止损规则)TradingPositionService
saved_strategies期权多腿策略持仓(legs JSONB + 风控字段)sql/create_saved_strategies.sql
signal_history信号历史 + 计划止盈止损快照 + 归因SignalHistoryService
settlement_history每日结算历史(UNIQUE (settlement_date, account_id)DailySettlementService
risk_rules / risk_alerts风控规则 / 风控预警RiskControlService
auto_trade_log自动交易生命周期日志(含去重唯一索引)AutoTradeExecutionService
review_report / review_report_strategy / review_report_suggestion每周复盘报告TradeReviewReportService
product_params / contract_params品种/合约参数(乘数/保证金/手续费),参数回退链ProductParamService / ContractParamService
macro_event_rules / macro_user_entries / macro_product_weights宏观事件规则/录入/品种权重MacroDbInitializer
calendar_memos日历备忘sql/create_calendar_memos.sql
custom_sectors / sector_product_mapping自定义板块SectorService
stock_* 系列股票基础/日线/指数/财务/停牌Stock*CollectionTask

📌 命名说明:系统没有 orders/positions/daily_settlements 表——真实表名分别是 broker_orderstrading_positionssettlement_history

5.2 Redis 使用规范

  • 实例:阿里云 Redis r-bp1x66eyd9f5757bxipd.redis.rds.aliyuncs.com:6379,db=0。
  • Key 模式:每合约一个哈希 quote:{symbol}(如 quote:SHFE.cu2501quote:CFFEX.IO2506-C-4000)。
  • 字段
    • 期货:last_price, volume, open_interest, average, amount, ask_price1, ask_volume1, bid_price1, bid_volume1, update_time
    • 期权:上述 + delta, gamma, theta, vega, rho, implied_volatility, intrinsic_value, time_value
  • TTL:每次写入 EXPIRE 600s(采集脚本停止后 ~10 分钟内 Key 过期,UI 自动回退 PG,数据可能滞后但不错)。
  • 消费方RealtimePriceCacheHashGet("quote:{symbol}", "last_price"))、SystemMonitorServiceDBSIZE 心跳)。
  • 连接容错AbortOnConnectFail=falseConnectTimeout=3sSyncTimeout=1000ms → Redis 不可用时静默回退 PostgreSQL。

5.3 数据库连接与兼容性

  • DbConnectionFactory 持有单一 NpgsqlDataSource(连接池),构造时注入连接串(来自 IConfigService.Load().GetPgConnectionString())。
  • 注册了 LegacyDateAndTimeResolverFactory#pragma warning disable NPG9001),让 Npgsql 10 将 date/time 映射回 DateTime/TimeSpan,保持 Dapper 对旧表的映射兼容——升级 Npgsql 时必须保留此解析器
  • 建表采用幂等 DDL 模式CREATE TABLE IF NOT EXISTS + ALTER TABLE ... ADD COLUMN IF NOT EXISTS,多数服务带静态锁/信号量(EnsureTablesAsync)。
  • 超表 PK 必须是 (id, datetime)(TimescaleDB 要求分区键在 PK/唯一约束内);对超表不做 ON CONFLICT 更新,采集脚本只 INSERT。

6. Python 数据采集管道

脚本位于 script/,构建时由 Desktop csproj <Content Include="..\..\script\*.py" ... LinkBase="py_scripts\"> 复制到输出目录 py_scripts\仅 Desktop 输出目录有一份)。所有脚本从 settings.py 读配置(优先 local_config.py——git 忽略的真实凭据 → 环境变量 → 内置默认),日志滚动写入 script/log/

脚本角色数据源 → 输出
tq_futures_pg.py国内期货实时采集(常驻)tqsdk → quotes_realtime(3s 批) + quotes_daily + Redis
tq_overseas_futures_pg.py境外期货实时采集(常驻,KQD 接口,UTC 日期)tqsdk → 同上
unified_options_main.py期权实时采集(常驻,6 线程:SHFE/DCE/CZCE/INE/GFEX/CFFEX 各一个 TqApi,2s 错峰启动 + 看门狗重启)tqsdk → quotes_option_realtime(2s) + quotes_option_daily + Redis(含 Greeks)
options_utils.py期权共享库(BS 定价/Greeks/IV、合成指数、会话管理、DB/Redis 工具)被 unified_options_main 导入
daily_update_futures_pg.py收盘后日线补齐(~16:30,仅 UPDATE 已有行)tqsdk get_quotequotes_daily
daily_update_options_pg.py收盘后期权日线补齐(跳过无实时数据的合约)tqsdk → quotes_option_daily
daily_update_overseas_pg.py收盘后境外日线补齐(UTC 日期,无记录则跳过)tqsdk → quotes_daily
tq_mapping_pg.py主力合约映射采集(一次性;stdout 输出 {"saved":N} 供调度器解析,日志走 stderr)tqsdk query_cont_quotesfut_mappings
update_calendar.py交易日历同步(幂等,可重复运行;--years-back Ntqsdk → trading_calendar
init_timescaledb.py建库初始化:超表、种子数据(日历/交易所/合约/时段/期权),可选从 MySQL RDS 迁移tqsdk + 可选 RDS → 全表
check_sr_data.py / check_symbols.py只读诊断脚本PG 查询

Greeks 计算(options_utils.py):BS 公式(RISK_FREE_RATE=0.02),scipy.optimize.brentq 反解隐含波动率;商品期权用标的期货 last_price 作为 S,CFFEX 指数期权用看涨-看跌平价合成指数 S = K + (C−P)·e^(rT)(配对时间差 ≤ 2s)。historical_volatility 字段当前硬编码 0.2。

会话模型:国内按北京时间(夜盘 21:00-03:00 计入下一交易日),境外按 UTC 日期。会话门控优先读 product_trading_hours,兜底内置交易所默认品种。


7. 核心服务(Futures.Core)

目录:src/Futures.Core/Data + Services。所有服务均以接口 + 实现成对出现,注册在 Desktop 的 App.RegisterTypes 中(详见 §8.1)。

7.1 交易执行(仿真撮合)

  • IBrokerServiceSimulatedBrokerService(唯一实现,单例):
    • 账户表 broker_accountSimNow-001,初始余额 1,000,000,冻结/保证金/盈亏字段)。
    • 撮合:市价单在交易时段内立即成交(默认 1 tick 滑点);非交易时段转挂单并冻结保证金;限价单冻结保证金挂 Pending,RefreshAsync 轮询价格穿越后成交。
    • 保证金/手续费解析走回退链:contract_params → product_params → 内置默认,确保"扣款 = 持仓记账"一致。
    • 幂等对账:ReconcileFrozenMarginAsync(冻结 == Σ活跃单冻结)、ReconcileAccountAsync(账户与持仓账本对齐,期权腿经 saved_strategies 走账)。
    • 每个品种内置 TickSizes 最小变动价位字典(DCE/SHFE/CZCE/CFFEX/INE)。
  • ITradingPositionServiceTradingPositionServicetrading_positions 持仓账本 CRUD;RefreshPricesAsync 批量刷价 + symbol 自动修复(损坏的合约代码自动 UPDATE 修复)。
  • IPortfolioServicePortfolioService:期货持仓 + 期权策略(saved_strategies)统一视图。
  • IPortfolioGreekServicePortfolioGreekService:组合级 Δ/Γ/Θ/ν/ρ 聚合(期货仅贡献方向性 Delta;期权腿从 quotes_option_realtime 拉实时 Greeks,DISTINCT ON (symbol) 取最新)。

7.2 风控与结算

  • IRiskControlServiceRiskControlService:规则引擎——6 类规则(MaxLoss/MaxDrawdown/MinMarginRatio/MaxLossPerDay/MaxPosition/MaxConcentration)× 作用域(global/product/symbol)× 动作(warn_only/reject_order/auto_close_position/auto_close_all)。权益 = 余额 + 保证金 + 冻结 + 浮动盈亏。预警去重(同一条未解决预警原地更新),恢复时重置已通知集合;ShouldRejectOrderAsync 门控新报单。
  • IDailySettlementServiceDailySettlementService:逐日盯市——期初权益(上次结算)+ 浮动持仓盈亏 + 已实现交易盈亏 − 手续费(broker_orders 当日,兜底 成交额×0.0001)→ 期末权益/保证金比例/风险等级,写 settlement_history

7.3 自动交易与止损止盈

  • IAutoStopServiceAutoStopService:5s 后台定时器 + 信号量;扫描期货持仓与期权策略 → 刷价 → 判定 typed 规则/文本规则止盈止损 → 平仓(期货走 broker,期权走 SavedStrategyService.CloseStrategyAsync)→ 触发 OnAutoClose
  • ISignalAutoCloseServiceSignalAutoCloseService:30s 后台监控 signal_history 中未平仓且有计划止盈止损的行;主力合约映射(MainContractMap + fut_mappings)解析合约 → 最新价(Redis→PG)→ EvaluateTrigger(看多:价≤SL 止损失/价≥TP 止盈得,看空反转)→ 触发 OnSignalAutoClosed
  • IAutoTradeExecutionServiceAutoTradeExecutionService:默认关闭,需在交易机会页开启。机会评估 → 方向/去重/单品种单在途 守卫 → 挂单(策略名拼 ·AUTO)→ 10s 填充检查 → 记录 fill → 止盈止损联动(订阅 OnAutoClose)→ 关闭关联信号。DB 唯一索引 ux_auto_trade_log_place_dedup 防重复挂单。
  • ITradeReviewReportServiceTradeReviewReportService:每周复盘(≥7 天幂等)——auto_trade_log 执行统计 + 策略回测快照 + 规则引擎生成改进建议 → review_report* 表 + OnReportGenerated 托盘通知。

7.4 行情与数据读取

  • IRealtimePriceCacheRealtimePriceCache:Redis 优先(quote:{symbol} 哈希 last_price),批量接口并行 HashGet,未命中逐符号回退 PG(quotes_realtimequotes_option_realtime)。懒加载 ConnectionMultiplexer(双重检查锁)。
  • IFuturesDataServiceFuturesDataService:只读查询中枢,约 33 个方法覆盖 futures/options/quotes_realtime/quotes_option_realtime/quotes_daily/quotes_option_daily/trading_calendar(列表、最新报价、日线、日历、到期提醒、合约/乘数等)。
  • IFuturesMappingPersistenceService:主力映射 fut_mappings(Python 采集,.NET 读取)。
  • IProductSessionServiceProductSessionService:交易时段模型(product_trading_hours + session_types),判断夜盘/是否交易时段(撮合与下单门禁用)。
  • ISystemMonitorServiceSystemMonitorService:进程监护(WMI Win32_Process 命令行指纹识别 Python 脚本)、数据库健康(各表行数与最新时间戳)、Redis 状态(DBSIZE)、日志文件列表/尾读。健康检查覆盖 futures/options/quotes_realtime/quotes_daily/quotes_option_realtime/quotes_option_daily/trading_calendar/exchanges/product_trading_hours,并做脚本级存活检查(如 tq_futures_pg → 最近 5 分钟 quotes_realtime 行数)。

7.5 期权与波动率分析

  • IOptionPricingService(Services/OptionPricingService.cs):Black-76 期货期权定价 + 解析 Greeks + ImpliedVolatility(Brent 法,σ∈[0.001,5.0],容差 1e-8);CalculatePnL 估值多腿策略。注意:UI 展示的实时 Greeks 直接来自 PG(Python 计算),本服务主要用于回测与策略估值。
  • IGreekExposureServiceGreekExposureService:行权价级 Greek 敞口分析(期权表国内交易所、未到期、净敞口区域检测、DetectZones 净 GEX 阻力/支撑)。
  • IVolatilityHeatmapServiceVolatilityHeatmapService:期货热力图——单条 SQL(LATERAL JOIN 索引命中)取 7 天最新价 + 45 天前结算价 → changeRate% → 色强 min(|Δ%|×10,100),按板块着色。
  • IVolatilityCloudServiceVolatilityCloudService:波动率云图——按品种/合约月分 7 个 Delta 桶(20P/30P/40P/50/40C/30C/20C),桶内 IV/ΔIV/持仓量;skew = IV(20P) − IV(20C);按板块分组。
  • IVolatilityAnalysisServiceVolatilityAnalysisService:IV 期限结构、IV 曲线、波动率分析行。
  • IOptionsStrategyMatcherOptionsStrategyMatcher:内存策略库匹配——输入市场条件 → 对内置 OptionsStrategy.All 预设打分(方向/波动率/Theta/Gamma 权重 + 复杂度 + 最低置信度)→ 生成执行计划(真实行权价选腿)。
  • 回测IOptionsBacktestService(Black-76 PnL 估值)、IStrategyBacktestServiceIPlanBacktestService(计划回测,缓存日线)。

7.6 机会扫描与策略

  • ITradingOpportunityServiceTradingOpportunityService:综合机会扫描——按品种融合 7 大维度(RAG 为第 7 路):
    1. 期货信号投票 SignalVotingEngine(期限结构/仓单/席位趋势/基差 Z/均线结构/持仓量趋势 → 中线信号 MidTermSignal);
    2. 波动率云(SelectMainCloudMonth、平均 ΔIV);
    3. 期权策略匹配(OptionsStrategyMatcher.Match);
    4. 宏观评分(MacroScoreEngine);
    5. 市场状态;
    6. RAG 情报RagFactorService:Qdrant 检索 + LLM 提取 Top3 因素 → 加权方向分,SignalVotingEngine.W_RAG=1.5 计入投票;RagClientService/RemoteRagClientService 双实现,RagServerUrl 配置即切远程共享); → 汇总为 TradingOpportunity(方向/置信度/入场时机/总评分/推荐理由/通俗摘要)。事件:HotOpportunitiesDetectedMidTermReversalsDetected
  • IFuturesStrategyServiceFuturesStrategyService:期货策略评分/执行计划/止盈止损文本生成。
  • IMidTermSignalService/IMidTermBacktestService:双周期中线信号 + 回测(RolloverSplicer 拼接主力/次主力日线 → 5/10/20 日收益采样 → 胜率/期望)。
  • ISavedStrategyService:期权多腿策略持仓(saved_strategies)。
  • ITermStructureService:期限结构状态(升水/贴水);ISpotBasisService:现货基差;ITechnicalSrService:支撑阻力;ISpreadAnalysisService 跨品种价差;ISeatTrendService/IExchangeRankingService 席位趋势/龙虎榜;IOvernightOverseasService 隔夜外盘;IEventRadarService P1-6 事件雷达;IExitRuleComparisonService 出场规则对比回测;IStatisticalTestingService 统计检验。
  • 仓单/排名IWarehouseReceiptService(仓单)、IRankingPersistenceService(持仓排名入库)、IFutHoldingPersistenceService(fut_wsr)。

7.7 宏观(Macro)

  • 表:macro_event_rules(事件→影响品种/方向/分数)、macro_user_entries(用户录入值)、macro_product_weights(品种×事件权重)。
  • 服务:IMacroScoreEngine(评分引擎)、DbMacroCalendarServiceDbUserMacroEntryServiceDbProductMacroWeightServiceDbMacroEventRuleServiceIAutoMacroService → Jin10MacroService(金十数据自动采集)。
  • MacroDbInitializer:启动时由 Desktop 以连接串直接初始化上述 3 表 + 种子数据。

7.8 参数与品种管理

  • IProductParamServiceproduct_params(品种级乘数/保证金/手续费),首次建表播种内置默认值。
  • IContractParamServicecontract_params(合约级覆盖,source='manual'/'exchange',手动行不被 Tushare 同步覆盖)。
  • IContractParamSyncService:Tushare fut_settle 每日结算参数 → contract_params;TsCodeToTqContract 转换(如 CU2601.SHFSHFE.cu2601)。
  • ISectorService:自定义板块与品种映射。ICalendarMemoService:日历备忘。

7.9 其他服务

  • IConfigService / ConfigEncryption:见 §9。
  • LogManager(Logging/):全局日志门面(ILoggerFactory,默认 NoOp,Desktop 启动时装配 Console+Debug)。
  • CustomStrategyStore:自定义策略变体持久化(静态,启动加载)。
  • FuturesOptionProductMapper:CZCE C/P 后缀、CFFEX 希腊字母前缀映射。
  • BrokerMarginAccounting(Helpers/):冻结保证金/盈亏记账公式。
  • TradingTimeHelper(Helpers/):夜盘会话表工具。
  • PythonScriptRunner(Data/Collectors/):启动 Python 脚本(输出目录 py_scripts)。

8. 桌面应用(Futures.Desktop)

8.1 启动流程与依赖注入

入口App : PrismApplication(DryIoc)。CreateShell()ShellWindow(注意不是 MainWindow,MainWindow 是保留的空壳)。

ModuleInitializer:注册 GBK 代码页(CodePagesEncodingProvider)。

模块目录ConfigureModuleCatalog):FuturesModuleStockModuleOptionsModule

DI 注册RegisterTypes,除特别标注外全部单例,按领域分组):

注册
配置/数据访问IConfigServiceIDbConnectionFactory(工厂 lambda:new DbConnectionFactory(config.GetPgConnectionString())
行情IRealtimePriceCacheIFuturesDataServiceIProductSessionServiceIVolatilityHeatmapService
交易IBrokerService→SimulatedBrokerServiceITradingPositionServiceIPortfolioServiceIPortfolioGreekServiceIAutoStopServiceISignalAutoCloseServiceIAutoTradeExecutionServiceITradeReviewReportServiceISavedStrategyService
风控/结算IDailySettlementServiceIRiskControlService
期权/波动率IGreekExposureServiceIOptionsStrategyMatcherIVolatilityAnalysisServiceIVolatilityCloudServiceIOptionsBacktestService
排名/行情持久化IRankingPersistenceServiceIExchangeRankingService→TushareExchangeRankingServiceIRankingAnalysisServiceIFutHoldingPersistenceServiceTushareApiClient
股票IStockMarketServiceIStockServiceIStockWatchlistServiceIStockPriceAlertService
仓单/期限/价差ITermStructureServiceIWarehouseReceiptPersistenceServiceWarehouseReceiptCollectorServiceIWarehouseReceiptServiceISpreadAnalysisServiceISpreadPairConfigService
宏观IMacroCalendarServiceIUserMacroEntryServiceIProductMacroWeightServiceIMacroScoreEngineIAutoMacroService→Jin10MacroServiceIMacroEventRuleService
分析IEventRadarServiceISpotBasisServiceISeatTrendServiceITechnicalSrServiceIMidTermSignalServiceIMidTermBacktestServiceIOvernightOverseasServiceIFuturesStrategyServiceIPlanBacktestServiceIStrategyBacktestServiceIExitRuleComparisonServiceIStatisticalTestingServicetransient
参数/调度/监控IProductParamServiceIContractParamServiceIContractParamSyncServiceISchedulerConfigServiceISchedulerLogServiceISystemMonitorServiceITrayNotificationService
定时任务FutHoldingCollectionTaskWarehouseReceiptCollectionTaskRegister<ScheduledTaskBase,...>,transient,自动注册进调度器)
已移除IOpportunityScannerServiceOpportunityScannerView(注释保留)

视图注册

  • Desktop 自身注册 19 个导航视图(RegisterForNavigation:Dashboard/Settings/CampSettings/TradingCalendar/StrategyBuilder/StrategyPnL/PositionMonitor/Backtest/OptionsBacktest/StrategyWeightEditor/StatisticalTesting/ExitComparison/PortfolioGreek/SystemMonitor/SchedulerConfig/ContractParam/ExchangeRanking/WarehouseReceiptCollector/FuturesMappingCollector)+ 4 个直接经 ViewMap 解析的视图(RiskDashboard/SchedulerLog/ProductParam/CampAnalysis,未走 RegisterForNavigation,仅注册 VM + 由 ContainerLocator.Current.Resolve(viewType) 创建)。
  • 模块各自注册:Futures 14、Options 4、Stock 3。
  • 合计 19 + 4 + 14 + 4 + 3 = 44,与 ShellWindowViewModel.ViewMap 条目数一致。

启动序列OnStartup):

  1. 装配日志(Console+Debug,Information)。
  2. base.OnStartup(Prism 初始化容器)→ 挂 AppDomain.UnhandledException / DispatcherUnhandledException(弹框 + 日志)。
  3. CustomStrategyStore.Load()
  4. IAutoStopService.Start()(5s 止盈止损)。
  5. ISignalAutoCloseService 启动 + OnSignalAutoClosed → 托盘通知 → 跳转信号历史页。
  6. ITrayNotificationService + IRiskControlService.OnAlertTriggered → 托盘气泡。
  7. IAutoTradeExecutionService 启动(默认关闭)+ OnExecutionLogAdded → 托盘 → 交易机会页。
  8. ITradeReviewReportService.OnReportGenerated → 托盘;GenerateWeeklyIfDueAsync()(≥7 天幂等)。
  9. ITradingOpportunityServiceHotOpportunitiesDetected_notifiedHotKeys 去重)→ 🔥 托盘 + 详情窗口;MidTermReversalsDetected → 🔁 托盘 → 期货研判。
  10. IConfigService.EnsureEncrypted()(DPAPI 就地加密)+ MacroDbInitializer.InitializeAsync()(宏观表 + 种子)。
  11. OnExit → 释放托盘图标。

8.2 主界面(ShellWindow)与导航

  • 布局:左侧深色侧边栏 7 个可折叠菜单组(市场总览/期货/期权/股票/机会与策略/数据采集/系统)+ 右侧可关闭标签页 TabControl(自定义 ItemContainerStyle 带 ✕ 按钮)+ 顶部 TodayReminderBar(今日到期期货/期权 + 备忘)。
  • 导航模型不使用 Prism RegionManagerShellWindowViewModel.ViewMap(静态字典:44 个视图名 → CLR Type)→ ContainerLocator.Current.Resolve(type) 创建标签页;NavigateTo(viewName) 存在即选中(StockDetail 例外:每次重建),未知名弹本地化错误。标签关闭时调用 VM/视图的 IDisposable.Dispose()(停定时器、退订静态事件,防页面切换泄漏)。
  • 跨页通信:静态桥 NavigationBridgeNavigateToShowAutoTradeChain)+ 3 个静态 Carrier:
    • AnalysisPageSelectionCarrier(交易机会页 → 期货/期权研判的产品跳转);
    • FuturesBacktestCarrier(研判页 → 回测页的一键回测请求);
    • OptionsBacktestCarrier(同上,期权版)。

    代码注释明确说明后续可重构为 Prism IEventAggregatorINavigationService

  • 托盘:WinForms NotifyIconITrayNotificationService:ShowAlert/ShowOpportunityAlert/ShowMidTermReversalAlert/ShowInfoAlert),气泡点击可导航或打开详情窗口。
  • 弹窗窗口StrategyPnLChartWindow(期权策略盈亏曲线)、AutoTradeChainWindow(自动执行全链路:挂单→成交→止盈/止损)、HotOpportunityDetailWindow(🔥 机会详情)。

8.3 各 UI 模块

Futures.Module.Futures(14 视图)

视图ViewModel功能
FuturesAnalysisViewFuturesAnalysisViewModel期货研判(旗舰页,注入 21 个服务):多因子分析(Greeks 敞口/龙虎榜/期限结构/仓单/跨品种价差/宏观/基差/席位/策略评分/中线信号/隔夜外盘/技术 SR)+ 一键回测 + 买入建仓/挂单
FuturesListViewFuturesListViewModel期货列表:按交易所/期限结构过滤,产品迷你价格图
FuturesRankingQueryViewFuturesRankingQueryViewModel持仓龙虎榜查询/采集
WarehouseReceiptCollectionViewWarehouseReceiptCollectionViewModel仓单分析:历史浏览 + 趋势图
FuturesMappingViewFuturesMappingViewModel主力合约映射查看
HeatmapViewHeatmapViewModel期货热力图(已注册导航并进入 ViewMap,但侧边栏无菜单入口,布局逻辑为 TODO 桩
SectorManagerViewSectorManagerViewModel板块管理
TradingOpportunityViewTradingOpportunityViewModel交易机会:🔥 扫描/评分过滤/记录信号/自动执行日志/周报;跨页跳转 + AutoTradeChainWindow
SignalHistoryViewSignalHistoryViewModel信号历史:胜率统计、手动/计划平仓
MacroManualEntryViewMacroManualEntryViewModel宏观数据录入(触发评分引擎)
MacroEventRuleManagementViewMacroEventRuleManagementViewModel宏观规则 CRUD
MacroEventWeightManagementViewMacroEventWeightManagementViewModel宏观品种权重 CRUD
EventRadarViewEventRadarViewModelP1-6 事件雷达
SpreadPairConfigViewSpreadPairConfigViewModel跨品种套利配置

Futures.Module.Options(4 视图)

视图ViewModel功能
CombinedAnalysisViewCombinedAnalysisViewModel期权研判(旗舰页,注入 15 个服务):多因子评分 + 策略匹配 + 一键回测 + 买入建仓
OptionsListViewOptionsListViewModel期权列表:完整期权链、IV 微笑图、标的日内走势、5s 实时报价 + 30s 刷新
VolatilityAnalysisViewVolatilityAnalysisViewModel波动率分析:IV 期限结构、偏度
VolatilityCloudViewVolatilityCloudViewModel波动率云图(60s 自动刷新)

Futures.Module.Stock(3 视图 + 调度)

视图ViewModel功能
StockAnalysisViewStockAnalysisViewModel股票研判:主要指数卡片(30s 刷新)
StockListViewStockListViewModel股票列表:搜索 + 自选股
StockDetailViewStockDetailViewModel个股分析:K 线/成交量/RSI/MACD 4 图 + 财务 + 自选/预警

StockModule.OnInitialized:启动 IDataCollectionSchedulerService + IStockPriceAlertService.StartMonitoring()(30s 股价预警)。

Futures.Module.Shared

  • 29 个转换器Converters/,类 + XAML 资源键成对):方向色、涨跌色、Bool→可见性/颜色、期权类型色、分数色等。
  • 控件KLineChartControl(K 线 + 成交量双图 UserControl,DP:KLineBars/ShowVolume)、BindingProxy(Freezable 绑定桥)、SelectableTextBlock
  • 图表构建器KLineChartBuilderIntradayChartBuilder(BuildFromFutures/BuildFromOptions)。
  • 本地化UIStrings.resx(默认 zh-CN,约 117 个 key),UIStrings.Get/Format/TabTitle(TabTitle 字典含 emoji);XAML 用 {local:Tr Key=...} 标记扩展。部分硬编码中文仍在 Shell 与 Dashboard 中。
  • 主题DarkTheme.xaml(深色重定义 SystemColors/控件样式)+ SharedConverters.xaml 合并进 App.xaml;Styles.xaml(DashboardCardStyle)为次要字典,未合并。

9. 配置管理

  • 位置<程序运行目录>/config/appsettings.json(开发时源码位于 src/Futures.Desktop/config/,随构建复制 PreserveNewest)。另有 appsettings.example.json 模板(不含真实凭据)。
  • 结构(对应 AppConfig):PgHost/PgPort/PgDatabase/PgUser/PgPasswordRedisHost/RedisPort/RedisPasswordTqUser/TqPassword(天勤凭据)、RefreshInterval(默认 3s)、TushareToken/TushareProxyUrl/TushareProxyEnabled/TushareBypassSsl/TushareUseHostHeaderCampSettings(五大机构/五大家人/外资 → 经纪商关键词)。
  • 加载优先级ConfigService.Load):
    1. 基础文件 appsettings.json
    2. 环境文件 appsettings.{DOTNET_ENVIRONMENT|ASPNETCORE_ENVIRONMENT}.json(非默认值覆盖);
    3. 环境变量 PG_* / REDIS_* / TUSHARE_TOKEN / TQ_USER / TQ_PASSWORD(最高优先级)。
  • 加密:敏感字段(PgPassword/RedisPassword/TqPassword/TushareToken)用 DPAPIProtectedData,CurrentUser 范围)加密,值前缀 __ENC__Encrypt 幂等,Decrypt 解最多 10 层(兼容历史叠加 bug);EnsureEncrypted() 启动时幂等就地加密。注意:配置受加密的 Windows 用户绑定,换用户解密会抛异常。
  • 缓存_cached 双重检查锁;InvalidateCache() 强制重读。

10. 后台定时任务与调度

  • 框架Futures.Core/Data/Scheduling/IDataCollectionSchedulerService(单例)编排 ScheduledTaskBase 任务(ScheduledTaskConfig 配置、SchedulerLogService 记录日志)。
  • 任务注册StockModule 注册 5 个股票采集任务 + Desktop 注册 FutHoldingCollectionTaskWarehouseReceiptCollectionTask
  • 内置 Python 调度任务PythonScriptScheduledTask 运行 py_scripts 下脚本(如 tq_mapping_pg.py解析 stdout 的 {"saved":N} JSON——脚本日志必须走 stderr,否则破坏协议)。
  • UI:系统菜单"数据采集"组的 SchedulerConfig(任务配置)、SchedulerLog(日志)、ExchangeRanking/WarehouseReceiptCollector/FuturesMappingCollector(手动触发采集)。
  • 非调度常驻后台:AutoStopService(5s)、SignalAutoCloseService(30s)、AutoTradeExecutionService(10s 填充检查)、RiskControlService(风控告警)、StockPriceAlertService(30s)、IStockPriceAlertService。

11. 测试

  • 工程:tests/Futures.Core.Tests(xUnit,net9.0),引用 Core,InternalsVisibleTo("Futures.Core.Tests") 暴露内部成员(如 SignalAutoCloseService.EvaluateTrigger)。
  • 运行:dotnet test tests/Futures.Core.Tests/Futures.Core.Tests.csproj(当前 335 个用例全部通过,~300ms)。
  • 覆盖重点:配置序列化/加密、价格缓存回退、撮合/保证金记账、止损止盈触发判定、风控规则、结算计算等纯逻辑(不依赖外部 DB/Redis 的用例)。

12. 开发与构建指南

powershell
# 还原并构建整个解决方案(.slnx 格式,VS2022 17.10+/dotnet 9 SDK)
dotnet build Futures.Desktop.slnx

# 仅运行 Core 测试
dotnet test tests/Futures.Core.Tests/Futures.Core.Tests.csproj

# 添加新工程到解决方案
dotnet sln Futures.Desktop.slnx add src/MyNew/MyNew.csproj

新增一个页面的标准流程

  1. 在对应模块(或 Desktop)新建 Views/MyView.xaml(.cs) + ViewModels/MyViewModel.cs(继承 BindableBase)。
  2. 模块 RegisterTypesRegisterForNavigation<MyView, MyViewModel>("MyView")(Desktop 页面则在 App.RegisterTypes)。
  3. 若需出现在菜单:在 ShellWindowViewModel.ViewMap 注册视图名 → 类型,并在 ShellWindow.xaml 对应菜单组添加子菜单按钮(OnMenuClick)。
  4. 服务注入:构造器注入所需 Core 接口(全部经 Prism/DryIoc 自动装配)。
  5. 若 VM 含定时器/事件订阅 → 实现 IDisposable(标签关闭时自动释放)。
  6. 跨页跳转用 NavigationBridge.NavigateTo;跨页传参用静态 Carrier。
  7. UI 文案走 UIStrings 资源 + {local:Tr},颜色/方向用共享转换器。

新增一个 Core 服务:接口 + 实现成对放入 Futures.Core/Data(或 Services),App.RegisterTypes 注册单例;若需后台运行,参照 AutoStopService 的 timer + 事件 + 启动接线模式。

Python 采集脚本约定

  • 常驻采集:无限循环 + 会话感知休眠 + 批量刷库 + Redis 每 tick 写入 + 滚动日志到 log/
  • 一次性采集:stdout 输出机器可读结果(JSON),日志走 stderr。
  • 配置文件:settings.pylocal_config.py(git 忽略,真实凭据)。严禁把真实凭据提交进仓库

13. 维护注意事项与已知问题

13.1 已知待清理项(技术债)

  1. 空文件垃圾src/Futures.Core/ConfigService.csData/nonexistent_file.csData/NonExistentFile.csData/TushareApiClient.cs(均 0 字节,重复/占位);.bak 文件:Models/FutHoldingRecord.cs.bakData/IFutHoldingPersistenceService.cs.bakData/FutHoldingPersistenceService.cs.bak。可安全删除。
  2. Tushare 客户端重复:真实实现 Tushare/TushareApiClient.csFutures.Core.Tushare);Data/TushareApiClient.cs 是空壳。
  3. MainWindow 未使用:内容为占位提示,CreateShell 用的是 ShellWindow。可删。
  4. StockDataCollectorView/ViewModel:已在 csproj 中 Remove 出构建,文件内容仅为 DELETED 占位,无任何引用。可彻底删除。
  5. HeatmapView 未接入菜单:已注册导航并进入 ViewMap,但 ShellWindow.xaml 侧边栏无其菜单入口(44 个 ViewMap 条目中唯一无菜单项的视图),布局为 TODO。
  6. 部分硬编码中文:ShellWindow.xaml.cs、DashboardView 中的提示文案未走 UIStrings
  7. 静态桥导航(NavigationBridge/Carrier):功能正常,但代码注释自述可重构为 Prism IEventAggregator/INavigationService
  8. historical_volatility 硬编码 0.2(options_utils.py):当前不是真实历史波动率。
  9. INavigationDescriptor 接口:声明但未消费(Shell 侧边栏菜单硬编码)。

13.2 运维要点

  1. 凭据轮换:PG/Redis/MySQL 密码同时存在于 script/local_config.py(Python 侧)与 appsettings.json(.NET 侧),需协同更新。
  2. Redis 不可用:系统自动回退 PG(AbortOnConnectFail=false),UI 不报错但可能滞后最多一个批量周期。
  3. 采集脚本停止:Redis Key 10 分钟过期后 UI 读 PG 旧数据;SystemMonitor 页面(系统→系统监控)可查看各脚本存活/数据库新鲜度。
  4. tq_mapping_pg.py stdout 协议:调度解析依赖 stdout JSON,脚本日志改动时勿污染 stdout。
  5. 超表维护quotes_realtime/quotes_option_realtime 按天分片,注意数据量与 TimescaleDB 压缩策略(当前未配置压缩/保留策略)。
  6. Npgsql 升级:务必保留 LegacyDateAndTimeResolverFactory(NPG9001 pragma)。
  7. DPAPI 绑定__ENC__ 加密值绑定当前 Windows 用户;换机/换用户需重新配置。
  8. 构建产物:仅 Desktop 输出目录有 py_scripts\(含 settings.py + local_config.py + 全部 .py),其余项目输出目录无脚本副本(2026-08 清理后的现状)。

13.3 数据一致性设计要点(勿破坏)

  • 撮合扣款 = 持仓记账:SimulatedBrokerService 通过 contract_params → product_params → 内置默认 回退链解析乘数/保证金率,保证扣款与 trading_positions 记账一致。
  • 撤单恢复冻结BrokerMarginAccounting.ReleaseFrozenOnCancel 按未成交数量比例释放冻结(修复过"撤单不恢复"历史 bug)。
  • 对账幂等ReconcileFrozenMarginAsync/ReconcileAccountAsync 幂等,可安全重复执行。
  • 自动执行去重:DB 唯一索引 ux_auto_trade_log_place_dedup(同日同品种同方向只挂一次)+ 内存 _loggedOrderIds 双重守卫。
  • 期权腿走 saved_strategies 账:组合对账时期权腿排除出 broker 账户总盈亏,避免双重记账。

14. 附录:名词对照表

名词含义
tqsdk / 天勤国内期货行情数据 SDK(Python),采集主源
Tushare财经数据接口(持仓排名/仓单/合约参数等)
主力合约映射 (fut_mappings)tqsdk query_cont_quotes 连续合约 → 实际主力合约代码
龙虎榜/持仓排名交易所会员持仓排名(member_position_ranking)
仓单交易所注册仓单数据(warehouse_receipt / fut_wsr)
波动率云 (Volatility Cloud)按 Delta 桶分布的 IV 曲面(7 桶 + skew)
Gamma 热力图 (Heatmap)期货涨跌幅 → 板块着色 treemap
合成指数指数期权用看涨-看跌平价计算的隐含标的价 S
·AUTO自动交易标记(自动挂单/成交/平仓的策略名后缀)
typed 止盈止损规则TypedRuleSpec(tp_condition/tp_operator/tp_threshold/trailing 等结构化字段)
DPAPIWindows 数据保护 API(配置加密)
TimescaleDB 超表按 datetime 分片的 PostgreSQL 扩展表

瓯衍期货分析系统 · 温州博益网络科技有限公司