QIFI 模块文档
概述
QIFI (QUANTAXIS Isolated Financial Interface) 是 QUANTAXIS 的统一账户系统,提供了跨市场、跨语言的标准化账户管理接口。QIFI 设计用于支持多市场交易(股票、期货、期权等),并保持与 Rust/C++ 版本的账户结构一致性。
模块架构
核心组件
QifiAccount.py: QIFI 账户核心实现
统一的账户管理接口
支持实盘和模拟交易
跨市场持仓管理
动态权益计算
QifiManager.py: QIFI 账户管理器
多账户管理系统
账户组合管理
账户状态监控
qifisql.py: QIFI 数据持久化
账户数据存储
交易记录管理
数据查询接口
核心特性
1. 跨市场支持
QIFI 不区分持仓的具体市场类型,支持:
股票市场
期货市场
期权市场
数字货币市场
2. 多语言一致性
与 QUANTAXIS Rust/C++ 版本保持账户结构一致:
相同的数据格式
统一的接口设计
跨语言数据交换
3. 灵活部署模式
支持多种运行模式:
SIM: 模拟交易模式
REAL: 实盘交易模式
nodatabase: 离线模式
QIFI_Account 类
初始化参数
class QIFI_Account:
def __init__(self,
username, # 用户名
password, # 密码
model="SIM", # 模式:SIM/REAL
broker_name="QAPaperTrading", # 券商名称
portfolioname='QAPaperTrade', # 组合名称
trade_host=mongo_ip, # 交易主机
init_cash=1000000, # 初始资金
taskid=str(uuid.uuid4()), # 任务ID
nodatabase=False, # 是否离线模式
dbname='mongodb', # 数据库名称
clickhouse_ip=clickhouse_ip, # ClickHouse配置
clickhouse_port=clickhouse_port,
clickhouse_user=clickhouse_user,
clickhouse_password=clickhouse_password)
主要属性
# 基础信息
self.user_id # 用户ID
self.qifi_id # QIFI唯一标识
self.source_id # 数据源标识
self.portfolio # 所属组合
self.model # 运行模式
# 券商信息
self.broker_name # 券商名称
self.investor_name # 开户人姓名
self.bank_id # 银行代码
self.bankname # 银行名称
# 交易参数
self.commission_fee # 手续费率
self.trade_host # 交易主机
self.status # 账户状态
核心功能
1. 订单处理
# 订单方向解析
def parse_orderdirection(od):
"""
解析订单方向和开平仓标志
参数:
od: 订单方向代码
1,2,3,4: BUY 方向
-1,-2,-3,-4: SELL 方向
返回:
direction: 'BUY' 或 'SELL'
offset: 'OPEN', 'CLOSE', 'CLOSETODAY'
"""
direction = 'BUY' if od in [1,2,3,4] else 'SELL'
if abs(od) == 2 or od == 1:
offset = 'OPEN'
elif abs(od) == 3 or od == -1:
offset = 'CLOSE'
elif abs(od) == 4:
offset = 'CLOSETODAY'
return direction, offset
2. 持仓管理
# 使用 QAPosition 进行持仓管理
from QUANTAXIS.QAMarket.QAPosition import QA_Position
# 持仓计算和风险控制
position = QA_Position()
position.update_pos(code, direction, volume, price)
3. 权益计算
QIFI 支持动态权益计算:
实时价格更新
浮动盈亏计算
保证金占用计算
可用资金计算
QifiManager 管理器
QA_QIFIMANAGER
from QUANTAXIS.QIFI import QA_QIFIMANAGER
# 创建账户管理器
manager = QA_QIFIMANAGER()
# 添加账户
manager.add_account(account)
# 获取账户
account = manager.get_account(user_id)
# 账户组管理
manager.create_group(group_name)
manager.add_to_group(group_name, account_id)
QA_QIFISMANAGER
多账户批量管理:
from QUANTAXIS.QIFI import QA_QIFISMANAGER
# 批量管理
multi_manager = QA_QIFISMANAGER()
# 批量操作
multi_manager.update_all_accounts()
multi_manager.calculate_portfolio_pnl()
数据库支持
MongoDB 存储
# 账户数据存储
account_data = {
'user_id': self.user_id,
'qifi_id': self.qifi_id,
'positions': positions_dict,
'balance': balance_info,
'trades': trade_records,
'timestamp': datetime.now()
}
ClickHouse 分析
支持高性能数据分析:
交易记录分析
性能统计
风险指标计算
使用示例
基础用法
from QUANTAXIS.QIFI import QIFI_Account
# 创建模拟账户
account = QIFI_Account(
username='test_user',
password='password',
model='SIM',
init_cash=1000000
)
# 获取账户信息
print(f"用户ID: {account.user_id}")
print(f"账户模式: {account.model}")
print(f"初始资金: {account.init_cash}")
实盘账户
# 创建实盘账户
real_account = QIFI_Account(
username='real_user',
password='real_password',
model='REAL',
broker_name='某期货公司',
trade_host='192.168.1.100'
)
离线模式
# 离线账户(不连接数据库)
offline_account = QIFI_Account(
username='offline_user',
password='password',
nodatabase=True
)
多账户管理
from QUANTAXIS.QIFI import QA_QIFIMANAGER
# 创建管理器
manager = QA_QIFIMANAGER()
# 创建多个账户
accounts = []
for i in range(5):
account = QIFI_Account(
username=f'user_{i}',
password='password',
portfolio=f'portfolio_{i}'
)
accounts.append(account)
manager.add_account(account)
# 批量管理
manager.update_all_positions()
manager.calculate_total_pnl()
市场预设支持
from QUANTAXIS.QAMarket.market_preset import MARKET_PRESET
# 获取市场信息
market_preset = MARKET_PRESET()
# 获取合约信息
contract_info = market_preset.get_contract_info('SHFE', 'cu2012')
print(f"合约乘数: {contract_info['volume_multiple']}")
print(f"最小变动价位: {contract_info['price_tick']}")
配置说明
环境变量配置
需要在 qaenv 中配置:
# MongoDB 配置
mongo_ip = 'localhost'
# ClickHouse 配置
clickhouse_ip = 'localhost'
clickhouse_port = 9000
clickhouse_user = 'default'
clickhouse_password = ''
模式配置
SIM 模式:
模拟交易
虚拟资金
用于策略测试
REAL 模式:
实盘交易
真实资金
连接实际券商
最佳实践
账户隔离: 不同策略使用不同的账户或组合
风险控制: 设置合理的持仓限制和止损规则
数据备份: 定期备份账户数据和交易记录
监控告警: 设置账户异常状态的监控告警
注意事项
线程安全: 多线程环境下需要注意账户操作的线程安全
数据一致性: 确保账户数据在各个组件间的一致性
异常处理: 网络中断或数据库异常的处理机制
权限管理: 实盘环境下的账户权限和安全控制
相关模块
QAMarket: 提供市场预设和订单、持仓管理
QAUtil: 提供基础工具和数据库连接
QAStrategy: 策略回测和实盘交易中使用QIFI账户
Last updated
Was this helpful?