Skip to content

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 IDHomalos Exchange描述
CFFEXExchange.CFFEX中国金融期货交易所
SHFEExchange.SHFE上海期货交易所
DCEExchange.DCE大连商品交易所
CZCEExchange.CZCE郑州商品交易所
INEExchange.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_statuslogin_status标志
  • 断开连接处理onFrontDisconnected()带有原因代码的方法
  • 自动重新订阅:重新连接后重新订阅市场数据
  • 心跳监控:基于计时器的连接健康检查