TTS网关
字数
815 字
阅读时间
4 分钟
目的和范围
TTS 网关为 Homalos 量化交易系统提供了另一种交易接口集成方案。它通过 TTS 交易平台实现市场数据接收和订单执行功能,作为 CTP 网关的替代方案。该网关由两个主要组件组成:市场数据处理和订单交易功能,均以 C++ 扩展实现,以实现高性能运行。
有关主要 CTP 网关集成的信息,请参阅CTP 网关。
架构概述
TTS 网关通过事件驱动架构集成到 Homalos 系统中,通过独立但协调的组件提供市场数据和交易功能。
市场数据网关
该MarketDataGateway
课程通过TTS平台提供实时市场数据接收和处理能力。
关键市场数据操作
操作 | 方法 | 描述 |
---|---|---|
连接 | connect(setting: dict) | 建立与 TTS 市场数据服务器的连接 |
订阅 | subscribe(req: SubscribeRequest) | 订阅特定工具的市场数据 |
数据处理 | onRtnDepthMarketData(data: dict) | 处理传入的刻度数据并转换为TickData 对象 |
错误处理 | onRspError(error: dict) | 处理 API 错误和连接问题 |
订单交易网关
该类OrderTradingGateway
通过TTS交易系统处理订单的下达、取消和仓位管理。
交易业务
操作 | 方法 | 目的 |
---|---|---|
下单 | send_order(req: OrderRequest) | 向TTS系统提交新订单 |
取消订单 | cancel_order(req: CancelRequest) | 取消现有订单 |
持仓查询 | query_position() | 检索当前位置 |
账户查询 | query_account() | 检索帐户信息 |
合约查询 | reqQryInstrument() | 查询可用合约 |
配置和设置
默认配置设置
TTS 网关需要针对市场数据和交易连接的特定配置参数:
python
# Market Data Gateway Settings
md_default_setting = {
"user_id": "",
"password": "",
"broker_id": "",
"md_address": "",
"appid": "",
"auth_code": ""
}
# Trading Gateway Settings
td_default_setting = {
"userid": "",
"password": "",
"broker_id": "",
"td_address": "",
"md_address": "",
"appid": "",
"auth_code": ""
}
支持的交易所
TTS 网关通过映射支持以下交换EXCHANGE_TTS2VT
:
TTS Exchange ID | Homalos Exchange | 描述 |
---|---|---|
CFFEX | Exchange.CFFEX | 中国金融期货交易所 |
SHFE | Exchange.SHFE | 上海期货交易所 |
DCE | Exchange.DCE | 大连商品交易所 |
CZCE | Exchange.CZCE | 郑州商品交易所 |
INE | Exchange.INE | 上海国际能源交易中心 |
构建系统集成
TTS 网关需要在使用前构建 C++ 扩展。构建系统通过 Meson 构建配置来管理这些扩展。
错误处理和日志记录
两个 TTS 网关组件都实现了全面的错误处理和日志记录机制:
错误处理模式
python
# Market Data Error Handling
def write_error(self, msg: str, error: dict) -> None:
error_id = error.get("ErrorID", "N/A")
error_msg = error.get("ErrorMsg", str(error))
log_msg = f"{msg},{'代码'}:{error_id},{'信息'}:{error_msg}"
self.write_log(log_msg)
# Trading Error Handling
def onRspOrderInsert(self, data: dict, error: dict, reqid: int, last: bool) -> None:
# Handle order insertion failures
order = OrderData(status=Status.REJECTED, ...)
self.gateway.on_order(order)
self.gateway.write_error("交易委托失败", error)
连接管理
两个网关都实现了自动重连和状态监控:
- 连接状态跟踪:
connect_status
和login_status
标志 - 断开连接处理:
onFrontDisconnected()
带有原因代码的方法 - 自动重新订阅:重新连接后重新订阅市场数据
- 心跳监控:基于计时器的连接健康检查