Skip to content

核心对象和服务注册表

字数
1195 字
阅读时间
5 分钟

本文档涵盖构成 Homalos 交易系统主干的基本数据结构和服务发现机制。核心对象定义了市场数据、订单、交易和仓位的主要数据模型,而服务注册表则提供了集中式服务发现和健康监控功能。

EventBus 通讯系统请参见事件驱动系统,TradingEngine 编排请参见交易引擎

核心数据对象

Homalos 系统使用一套全面的数据类来表示交易实体。所有核心对象都继承自BaseData并遵循一致的模式,包括网关属性和合约规范化。

基础数据结构

该类BaseData作为所有交易对象的基础,提供网关归属和可扩展性:

python
@dataclass
class BaseData:
    gateway_name: str
    extra: dict | None = field(default=None, init=False)

所有数据对象都会自动生成ho_symbol格式规范化的符号标识符(),{symbol}.{exchange.value}以确保整个系统的识别一致性。

市场数据对象

TickData 结构

该类TickData提供全面的市场数据,包括五级订单簿、每日统计数据和限价。它支持交易所时间戳和本地时间戳,以便进行延迟分析。

BarData 结构

BarData表示特定交易间隔的K线数据,包含 OHLCV 信息以及交易额和未平仓合约数据。

交易对象

订单管理对象

订单管理系统使用三个主要对象:

  • OrderRequest用于订单创建请求
  • OrderData用于跟踪订单状态
  • TradeData用于记录交易执行情况

该类OrderData包括is_active()检查订单状态ACTIVE_STATUSEScreate_cancel_request()取消订单的方法。

头寸和账户对象

头寸和账户数据提供实时投资组合跟踪,自动计算可用余额和规范化标识符。

合约和数据对象

该系统包括ContractData用于工具规范、QuoteData用于报价管理以及用于市场数据操作的各种请求对象( SubscribeRequestHistoryRequestQuoteRequest

服务注册系统

该类ServiceRegistry为所有系统组件提供集中式服务发现和健康监控。它以事件驱动的服务形式运行,管理服务注册、心跳监控和服务发现请求。

服务生命周期管理

服务注册表处理四种主要事件类型:

事件类型处理程序描述
SERVICE_REGISTERhandle_register()注册新服务并广播SERVICE_UPDATED
SERVICE_UNREGISTERhandle_unregister()删除服务和广播SERVICE_UPDATED
SERVICE_HEART_BEAThandle_heartbeat()更新服务心跳时间戳
SERVICE_DISCOVERYhandle_discovery_request()使用经过过滤的服务信息进行响应

发现系统支持基于模式的过滤,并返回不包含敏感数据的经过清理的服务信息。

心跳监控

注册表运行一个后台线程来监视服务健康状况:

  1. 心跳超时:10秒
  2. 检查间隔:5秒
  3. 自动清理:超过超时的服务将自动取消注册
  4. 失败事件SERVICE_FAILED针对超时场景发布事件

事件驱动集成

核心对象和服务注册表通过标准化的事件类型和数据结构与事件系统无缝集成。

核心对象的事件类型

事件系统为每个核心对象类别定义了特定的事件类型:

对象类别事件类型
市场数据TICK_UPDATEDMARKET_TICK, MARKET_BAR
订单ORDER_UPDATEDORDER_SUBMITTED, ORDER_CANCELLED, ORDER_FILLED
交易TRADE_UPDATEDTRADE
职位POSITION_UPDATED
账户ACCOUNT_UPDATED
合同CONTRACT_UPDATED

数据流和组件关系

线程安全和回调处理

该类BaseGateway通过辅助类实现线程安全回调处理ThreadSafeCallback,确保正确的事件循环集成:

  • 事件循环集成:用于asyncio.run_coroutine_threadsafe()异步任务调度
  • 重试逻辑:使用指数退避实现自动重试
  • 统计跟踪:监控性能分析的成功/失败率
  • 资源管理:适当清理线程池和事件循环

配置集成

服务注册表和核心对象通过system.yaml文件与系统配置集成,该文件定义:

  • 事件总线配置:队列大小、计时器间隔、监控设置
  • 数据库配置:连接池、批处理、WAL 模式
  • 网关配置:连接参数、超时、重试设置
  • 服务管理:健康检查间隔、超时值、自动恢复设置