如何给AI Market Maker接入新交易所?Exchange Adapter适配器协议完整教程

发布时间:2026/10/8 12:29:44
如何给AI Market Maker接入新交易所?Exchange Adapter适配器协议完整教程
如何给AI Market Maker接入新交易所Exchange Adapter适配器协议完整教程【免费下载链接】ai-market-makerAgentic AI Hedge Fund OS (AIMM)项目地址: https://gitcode.com/gh_mirrors/ai/ai-market-makerAI Market MakerAIMMAgentic AI Hedge Fund OS是一套由多智能体驱动的 AI 对冲基金操作系统它通过Exchange Adapter 交易所适配器协议实现了交易层的彻底解耦——你只需实现 5 个标准接口就能把新交易所或模拟盘、测试网接入整套 AI 交易流水线。本文用零基础也能看懂的方式带你完整拆解 exchange_protocol.py 中定义的ExchangeAdapter协议并给出接入新交易所的 4 步落地指南。一、为什么需要 Exchange Adapter 协议在 AIMM 中AI 智能体负责想信号合成、风险决策而下单这件事被统一收敛到一个抽象层上层的 OMS订单管理系统只依赖协议不关心底层是币安、Hyperliquid 还是富途下层的交易所 SDK 细节认证、限频、字段差异被封装在各自适配器内部测试时可以直接注入假客户端全程无需真实密钥。这正是 src/oms/oms.py 中Oms类的注释所强调的不导入任何交易所 SDK不要求任何真实凭据。二、协议核心5 个方法 1 个结果结构协议定义在 src/adapters/exchange_protocol.py它采用 Python 的结构化协议Protocol 鸭子类型——你的类不需要继承任何东西只要长得像就能用。必须实现的 5 个方法方法作用说明place_order()下单返回交易所原始响应统一为ExchangeOrderResultcancel_order()撤单按exchange_order_id撤销挂单get_order_status()查询订单状态轮询订单是否成交/拒绝get_portfolio_health()账户健康快照余额、持仓、风险上限fetch_market_depth()盘口深度供 AI 做滑点与流动性判断place_order的签名长这样全部为关键字参数def place_order( self, *, symbol: str, side: str, qty: float, order_type: str, price: float | None, client_order_id: str | None, ) - ExchangeOrderResult: ...统一的结果结构 ExchangeOrderResult所有适配器必须返回同一形状的ExchangeOrderResult核心字段statusaccepted | filled | cancelled | rejected | error | dry_run部分成交用partially_filledexchange_order_id/client_order_id交易所订单号 / 本地幂等订单号filled_qty、price、ts成交量、价格、Unix 秒级时间戳raw原始交易所响应用于审计留痕error可选拒绝原因 这个统一形状的价值在于src/oms/oms.py 里的_STATUS_MAP会把status字符串直接映射为订单状态机你的适配器只要状态词用对订单生命周期追踪就自动生效。三、系统如何选中你的适配器适配器不是硬编码的而是通过环境变量 工厂函数选择配置加载逻辑在 src/config/exchange_env.pyEXCHANGEpaper # 默认内置模拟适配器无需任何密钥 EXCHANGEhyperliquid # 换成 Hyperliquid 适配器 AI_MARKET_MAKER_ALLOW_LIVE1 # 双保险开关非 paper 交易所必须显式开启 HYPERLIQUID_DRY_RUN1 # dry-run解析校验但不真实发单选择流程见 src/adapters/nexus_adapter.py 的get_nexus_adapter()工厂默认执行引擎为legacyAI_MARKET_MAKER_EXECUTION_ENGINElegacy→ 返回内置NexusAdapter模拟盘设为oms引擎后工厂读取EXCHANGE环境变量实例化对应适配器并交给Oms包裹订单自动获得幂等键、状态机与 SQLite 账本持久化。完整的环境变量说明可参考 docs/configuration.md 和 docs/run-modes.md。四、实战接入新交易所的 4 步指南以下流程以仓库中两个现成适配器为范本src/adapters/hyperliquid_adapter.py加密货币永续与 src/adapters/futu.py港股/美股。第 1 步写一个假客户端Fake Client每个适配器都遵循三层结构FakeXxxClient纯 Python 测试替身零 SDK 依赖记录提交/撤单并返回预设响应_SdkXxxClient包装真实 SDK延迟导入lazy import——只有真正构造时才检查 SDK 是否安装XxxAdapter对外暴露协议方法客户端可注入方便测试。好处是在没有安装交易所 SDK、甚至没有网络的环境里整套流程和单元测试都能跑通FakeHyperliquidClient可模拟 accepted / rejected / timeout 等多种响应。第 2 步实现 5 个协议方法适配器的核心工作是把交易所方言翻译成平台普通话状态映射如 Hyperliquid 的open → accepted、partial → partially_filled见 src/adapters/hyperliquid_adapter.py 的_map_hl_status符号归一化把BTC/USDT转成 Hyperliquid 的BTCnormalize_hl_symbol把700.HK转成富途的HK.00700normalize_futu_symbol——这是最容易踩坑的一步字段单位转换如富途股票数量必须取整int(round(qty))dry_run 短路dry_runTrue时立即返回statusdry_run绝不触碰交易所 API。第 3 步在工厂中注册在get_nexus_adapter()中按EXCHANGE名称分支实例化你的适配器参考hyperliquid分支的写法若走 OMS 引擎把它传给Oms(adapteryour_adapter, dry_run..., ledger...)即可。第 4 步用协议一致性测试验证仓库自带了协议一致性测试 tests/test_exchange_protocol.py新适配器建议照此写测试同时可参考 tests/test_hyperliquid_adapter.py 与 tests/test_futu_adapter.py 的 Fake 客户端注入方式。五、安全性设计给你的适配器上三道锁 双门控非 paper 交易所必须同时设置EXCHANGE名称和AI_MARKET_MAKER_ALLOW_LIVE1否则启动即报错防止误触实盘dry-run 守卫如HYPERLIQUID_DRY_RUN1让适配器只校验、不下单OMS 引擎下 dry-run 订单只以 CREATED 状态落账永不触碰place_order延迟 SDK 导入缺少依赖包时仅在构造真实客户端时抛出清晰的RuntimeError模拟盘与测试全程不受影响。六、相关文件速查内容路径适配器协议定义src/adapters/exchange_protocol.py内置模拟盘适配器 工厂函数src/adapters/nexus_adapter.pyHyperliquid 适配器范例src/adapters/hyperliquid_adapter.py富途 OpenD 适配器范例src/adapters/futu.py环境变量与配置加载src/config/exchange_env.py执行引擎选择legacy/omssrc/config/execution_engine.py订单管理系统src/oms/oms.py运行模式与实盘门控说明docs/run-modes.md小结给 AI Market Maker 接入新交易所本质上就是实现 5 个方法 一套结果映射 一层 SDK 封装。得益于结构化协议和 Fake 客户端模式你可以先在零风险环境中跑通整条 AI 交易流水线再用 dry-run 灰度验证最后打开实盘开关——整个过程无需改动上层任何智能体或 OMS 代码。【免费下载链接】ai-market-makerAgentic AI Hedge Fund OS (AIMM)项目地址: https://gitcode.com/gh_mirrors/ai/ai-market-maker创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考