QIFI协议规范

QIFI: Quantaxis Differential Information Flow for Finance Integration QUANTAXIS统一多市场、多语言账户系统协议

作者: @yutiansut @quantaxis 版本: v2.1.0 最后更新: 2025-10-25


概述

QIFI协议是QUANTAXIS生态系统中的核心账户协议,提供跨语言(Python/Rust/C++)、跨市场(股票/期货/期权)的统一账户表示。

协议特点

  1. 跨语言兼容: Python/Rust/C++完全一致的数据结构

  2. 完整账户状态: 包含账户、持仓、订单、成交、转账的完整信息

  3. 增量更新支持: 通过Diff机制支持高效的状态同步

  4. MongoDB友好: 直接映射到MongoDB文档结构

  5. JSON序列化: 标准JSON格式,便于跨系统传输


核心数据结构

1. QIFI主结构

QIFI是账户的顶层数据结构,包含账户的所有信息:

2. Account - 账户信息

关键公式:

  • balance = pre_balance + deposit - withdraw + close_profit + position_profit - commission

  • available = balance - margin - frozen_margin

  • risk_ratio = margin / balance

3. Position - 持仓信息

关键说明:

  • 股票: 只使用多头字段 (volume_long, open_price_long等)

  • 期货: 同时支持多空双向持仓

  • 今昨仓: 区分今仓和昨仓用于上期所平今/平昨规则

4. Order - 订单信息

订单状态:

  • ALIVE: 活跃订单

  • FINISHED: 完成 (全部成交或撤单)

  • CANCELLED: 已撤销

订单方向:

  • BUY: 买入

  • SELL: 卖出

开平标志:

  • OPEN: 开仓

  • CLOSE: 平仓

  • CLOSETODAY: 平今

  • CLOSEYESTERDAY: 平昨

5. Trade - 成交信息

6. Transfer - 转账记录

7. BankDetail - 银行详情

8. Frozen - 冻结信息


QIFI协议使用规范

1. 数据存储

MongoDB存储

QIFI结构直接对应MongoDB文档:

字段命名约定

  • 使用snake_case命名 (account_cookie, trading_day)

  • 时间戳使用纳秒级Unix时间戳 (insert_date_time, trade_date_time)

  • HashMap的key使用字符串 (positions, orders, trades)

2. 跨语言兼容性

Python实现

Rust实现

C++实现

3. 增量更新机制

QIFI支持通过Diff枚举进行增量更新:

用途:

  • WebSocket实时推送

  • 数据库增量更新

  • 前后端状态同步

4. MiniAccount/MiniPosition

为了减少传输数据量,QIFI提供简化版本:


实现要点

1. Python包装器要求

在实现Python包装器时,必须:

  1. 保持字段名一致: 与Rust结构体字段名完全一致

  2. 保持类型一致: f64float, Stringstr, HashMapdict

  3. 保持嵌套结构: positions, orders, trades使用字典

  4. 时间戳格式: 使用纳秒级Unix时间戳

2. 数据验证

实现时应验证:

3. 序列化/反序列化


MIFI协议

MIFI (Market Information Flow Interface) 是QIFI的市场数据对应协议,目前在qars2中定义较少,主要包括:

  • mifi/future.rs: 期货市场信息

  • mifi/stock.rs: 股票市场信息

  • mifi/union.rs: 联合市场信息

: MIFI协议仍在开发中,未来版本将补充完整定义。


版本兼容性

QUANTAXIS版本
QIFI版本
QARS2版本
兼容性

2.0.x

v2.0

-

2.1.x

v2.1

0.0.45+


参考资源

  • QARS2源码: /home/quantaxis/qars2/src/qaprotocol/qifi/

  • Python实现: QUANTAXIS/QIFI/

  • Rust实现: qars3::qaprotocol::qifi

  • 示例代码: examples/qarsbridge_example.py


文档维护: @yutiansut @quantaxis 最后审核: 2025-10-25

Last updated

Was this helpful?