
Nof1-tracker 架构深度解析从API分析到交易执行的全流程【免费下载链接】nof1-trackerA command-line tool for tracking nof1.ai AI Agent trading signals and automatically executing Binance futures trades项目地址: https://gitcode.com/gh_mirrors/no/nof1-trackerNof1-tracker 是一款功能强大的命令行工具专为跟踪 nof1.ai AI Agent 交易信号并自动执行 Binance 期货交易而设计。本文将深入剖析其架构设计从 API 数据获取到交易执行的完整流程帮助您全面理解这款工具的工作原理和核心组件。系统整体架构概览Nof1-tracker 采用分层设计将业务逻辑与数据获取、交易执行等功能模块清晰分离确保系统的可维护性和扩展性。整体架构分为五个主要层次形成了从用户输入到实际交易执行的完整链路。核心架构层次CLI 层提供用户交互接口处理命令输入和参数解析命令处理层实现具体命令逻辑协调各服务组件业务逻辑层核心策略分析与决策制定服务层封装各类功能服务如 API 通信、风险评估等外部接口层与交易所 API 和数据源交互这种分层架构确保了关注点分离使系统各部分可以独立开发、测试和维护。数据获取与处理架构数据获取是 Nof1-tracker 的基础系统采用了灵活的适配器模式实现了业务逻辑与数据源的解耦支持多数据源切换和扩展。数据提供者架构演进系统经历了从紧耦合到松耦合的架构演进极大提升了灵活性和可扩展性。重构前的架构紧耦合┌─────────────────────────────────────────┐ │ ApiAnalyzer │ │ (业务逻辑 数据获取) │ └────────────────┬────────────────────────┘ │ ▼ ┌─────────────────────────────────────────┐ │ ApiClient │ │ (直接调用 nof1 API) │ │ - axios 实例 │ │ - 缓存管理 │ │ - 数据转换 │ └────────────────┬────────────────────────┘ │ ▼ ┌───────────────┐ │ nof1 API │ │ (固定依赖) │ └───────────────┘问题:❌ 业务逻辑与数据源紧耦合❌ 无法切换数据源❌ 难以测试重构后的架构松耦合┌─────────────────────────────────────────┐ │ ApiAnalyzer │ │ (纯业务逻辑) │ └────────────────┬────────────────────────┘ │ ▼ ┌─────────────────────────────────────────┐ │ ApiClient │ │ (适配器模式 - 保持向后兼容) │ └────────────────┬────────────────────────┘ │ ▼ ┌─────────────────────────────────────────┐ │ IDataProvider (接口) │ │ - getAccountTotals() │ │ - getAvailableAgents() │ │ - getAgentData() │ │ - clearCache() │ │ - getCacheStats() │ └────────────────┬────────────────────────┘ │ ┌────────┴────────┐ ▼ ▼ ┌──────────────┐ ┌──────────────────┐ │ Nof1Data │ │ CustomData │ │ Provider │ │ Provider │ │ (默认实现) │ │ (你的新API) │ └──────┬───────┘ └──────┬───────────┘ │ │ ▼ ▼ ┌─────────────┐ ┌─────────────────┐ │ nof1 API │ │ 你的新 API │ └─────────────┘ └─────────────────┘优势:✅ 业务逻辑与数据源解耦✅ 可以轻松切换数据源✅ 易于测试和维护✅ 保持向后兼容数据流向以获取 Agent 数据为例系统采用了清晰的数据流程设计用户命令 │ ▼ ApiAnalyzer.followAgent() │ ▼ ApiClient.getAgentData() │ ▼ IDataProvider.getAgentData() │ ├─→ Nof1DataProvider (默认) │ │ │ ▼ │ nof1 API │ └─→ CustomDataProvider (可选) │ ▼ 你的新 API这种设计使得切换数据源变得异常简单只需实现 IDataProvider 接口并在构造函数中注入新的实现即可无需修改业务代码。跟单策略核心架构跟单策略是 Nof1-tracker 的核心功能系统设计了一套完整的策略执行流程确保准确跟踪 AI Agent 的交易信号并执行相应操作。服务层组件与职责跟单系统由多个专业化服务组件构成每个组件负责特定功能协同工作完成整个跟单流程┌─────────────────────────────────────────────────────────────────┐ │ ApiAnalyzer (scripts/) │ │ • followAgent() • getAvailableAgents() │ │ • analyzeAccountTotals() • 环境验证 │ └─────────────────────────────────────────────────────────────────┘ │ ┌─────────────┴─────────────┐ ▼ ▼ ┌───────────────────────────┐ ┌───────────────────────────┐ │ ApiClient (services/) │ │ FollowService (services/)│ │ • getAccountTotals() │ │ • 仓位变化检测 │ │ • getAgentData() │ │ • 资金分配 │ │ • 缓存管理 │ │ • 止盈止损检查 │ └───────────────────────────┘ └───────────────────────────┘ │ ┌───────────────────────────┼───────────────────────────┐ ▼ ▼ ▼ ┌───────────────────────┐ ┌───────────────────────┐ ┌──────────────────────┐ │ PositionManager │ │ RiskManager │ │ FuturesCapitalManager│ │ • openPosition() │ │ • assessRisk() │ │ • allocateMargin() │ │ • closePosition() │ │ • priceTolerance() │ │ • 资金分配计算 │ │ • cleanOrphanedOrders│ │ • 风险评分 │ │ • 数量调整 │ └───────────────────────┘ └───────────────────────┘ └──────────────────────┘ │ │ ▼ ▼ ┌───────────────────────┐ ┌───────────────────────┐ │ TradingExecutor │ │ OrderHistoryManager │ │ • executePlan() │ │ • isOrderProcessed() │ │ • 止盈止损设置 │ │ • saveProcessedOrder()│ │ • 余额检查 │ │ • 订单去重 │ └───────────────────────┘ └───────────────────────┘ │ ▼ ┌───────────────────────┐ │ BinanceService │ │ • placeOrder() │ │ • getPositions() │ │ • setLeverage() │ │ • API签名认证 │ └───────────────────────┘核心服务组件详解1. FollowService - 跟单核心逻辑FollowService 是整个跟单流程的协调中心负责检测仓位变化并生成相应的交易计划仓位变化检测新开仓、平仓、换仓止盈止损条件检查资金分配协调孤立挂单清理2. PositionManager - 仓位管理PositionManager 处理具体的仓位操作确保交易准确执行开仓/平仓操作执行仓位验证挂单清理止盈止损单平仓验证机制3. RiskManager - 风险控制RiskManager 负责评估交易风险确保符合预设的风险控制策略风险评分计算价格容忍度检查警告生成配置管理4. FuturesCapitalManager - 资金管理FuturesCapitalManager 处理资金分配和杠杆设置确保交易规模合理按比例分配保证金杠杆倍数保持交易数量调整精度控制5. TradingExecutor - 交易执行TradingExecutor 负责最终的订单执行与交易所直接交互订单执行止盈止损单设置余额检查杠杆设置6. OrderHistoryManager - 订单历史OrderHistoryManager 跟踪已处理的订单防止重复执行订单去重防止重复执行历史记录持久化统计信息旧记录清理关键流程解析Nof1-tracker 实现了多种交易场景的处理逻辑确保在各种市场情况下都能准确跟踪 AI Agent 的交易信号。entry_oid变化检测换仓处理当 AI Agent 更换入场订单时系统会先平掉旧仓位再根据新信号开仓private async handleEntryChanged( change: PositionChange, agentId: string, plans: FollowPlan[] ): Promisevoid { const { previousPosition, currentPosition } change; // 1. 平仓旧仓位 const closeReason Entry order changed (old: ${previousPosition.entry_oid} → new: ${currentPosition.entry_oid}); const closeResult await this.positionManager.closePosition( previousPosition.symbol, closeReason ); if (closeResult.success) { // 2. 等待平仓确认 await new Promise(resolve setTimeout(resolve, 1000)); // 3. 订单去重检查 if (this.orderHistoryManager.isOrderProcessed( currentPosition.entry_oid, currentPosition.symbol )) { console.log(SKIPPED: ${currentPosition.symbol} already processed); return; } // 4. 价格容忍度检查 const priceTolerance this.riskManager.checkPriceTolerance( currentPosition.entry_price, currentPosition.current_price, currentPosition.symbol ); if (priceTolerance.shouldExecute) { // 5. 开新仓位 const openReason New entry order (${currentPosition.entry_oid}) by ${agentId}; await this.positionManager.openPosition( currentPosition, openReason, agentId ); } } }止盈止损检测系统会持续监控价格变化当达到预设的止盈或止损条件时自动平仓shouldExitPosition(position: Position): boolean { if (position.quantity 0) { return false; } const { current_price, exit_plan } position; if (position.quantity 0) { // 多头仓位 return current_price exit_plan.profit_target || current_price exit_plan.stop_loss; } else { // 空头仓位 return current_price exit_plan.profit_target || current_price exit_plan.stop_loss; } }孤立挂单清理每次轮询前系统会自动清理没有对应仓位的止盈止损单避免无效挂单影响交易async cleanOrphanedOrders(): Promise{ success: boolean; cancelledOrders: number; errors: string[]; } { // 1. 获取所有开放订单 const allOpenOrders await this.binanceService.getOpenOrders(); if (allOpenOrders.length 0) { return { success: true, cancelledOrders: 0, errors: [] }; } // 2. 获取所有仓位 const allPositions await this.binanceService.getAllPositions(); // 创建仓位映射 const positionMap new Mapstring, boolean(); for (const position of allPositions) { const positionAmt parseFloat(position.positionAmt); positionMap.set(position.symbol, Math.abs(positionAmt) 0); } // 3. 找出孤立的挂单 const orphanedOrders allOpenOrders.filter(order { const isStopOrder order.type TAKE_PROFIT_MARKET || order.type STOP_MARKET || order.type TAKE_PROFIT || order.type STOP; if (!isStopOrder) return false; const hasPosition positionMap.get(order.symbol) || false; return !hasPosition; }); // 4. 取消孤立的挂单 const errors: string[] []; let cancelledCount 0; for (const order of orphanedOrders) { try { const baseSymbol order.symbol.replace(USDT, ); await this.binanceService.cancelOrder(baseSymbol, order.orderId); cancelledCount; } catch (error) { errors.push(Failed to cancel order ${order.orderId}); } } return { success: errors.length 0, cancelledOrders: cancelledCount, errors }; }扩展性设计Nof1-tracker 在架构设计时充分考虑了扩展性支持多种扩展场景满足不同用户的需求。添加新的数据源通过实现 IDataProvider 接口可以轻松添加新的数据源// 1. 创建新的实现 class MyDataProvider implements IDataProvider { // 实现接口方法 } // 2. 注入使用 const provider new MyDataProvider(); const apiClient new ApiClient(undefined, undefined, provider); // 3. 业务代码无需改动 const analyzer new ApiAnalyzer(configManager, apiClient);动态切换数据源可以根据配置动态选择不同的数据源// 可以根据配置动态选择数据源 const provider config.useCustomApi ? new CustomDataProvider(config.customApiUrl) : new Nof1DataProvider(); const apiClient new ApiClient(undefined, undefined, provider);多数据源聚合还可以实现聚合数据源从多个来源获取数据并合并class AggregatedDataProvider implements IDataProvider { constructor( private providers: IDataProvider[] ) {} async getAccountTotals() { // 从多个数据源聚合数据 const results await Promise.all( this.providers.map(p p.getAccountTotals()) ); // 合并结果 return this.mergeResults(results); } }风险控制机制风险控制是交易系统的重要组成部分Nof1-tracker 实现了一套完整的风险评估系统。风险评分算法系统根据杠杆倍数计算风险评分riskScore Math.min(基础分数 杠杆风险系数, 100) 其中: - 基础分数 20 - 杠杆风险系数 杠杆倍数 × 10 - 最大风险分数 100上限风险等级分类根据风险评分系统将交易分为不同风险等级杠杆倍数风险分数风险等级警告信息1x30/100低风险无5x70/100中等风险无8x100/100高风险High risk score10x100/100高风险High risk score15x100/100极高风险High risk score, High leverage detected实际使用场景Nof1-tracker 支持多种使用场景满足不同用户的需求正常跟单新开仓当 AI Agent 开启新仓位时系统会自动跟随开仓 NEW POSITION: BTC BUY 0.05 109538 (OID: 210131632249) ⚠️ Risk Score: 100/100 Warnings: High risk score ✅ Risk assessment: PASSED Executing trade... ✅ Trade executed successfully!换仓操作OID变化当 AI Agent 更换入场订单时系统会先平掉旧仓位再开新仓位 ENTRY OID CHANGED: BTC - closing old position (210131632249 → 210131632250) Position closed: BTC SELL 0.05 109590 NEW ENTRY ORDER: BTC BUY 0.05 109600 (OID: 210131632250) ✅ Both trades executed successfully!止盈退出当价格达到预设的止盈目标时系统会自动平仓获利 EXIT SIGNAL: BTC - Take profit at 112880.2 Taking profit: BTC SELL 0.05 112900 ✅ Profit taken successfully!风险控制模式用户可以使用风险控制模式进行测试只分析不执行实际交易npm start -- follow gpt-5 --risk-only总结Nof1-tracker 采用现代化的分层架构设计将数据获取、业务逻辑和交易执行清晰分离通过接口抽象实现了高度的灵活性和可扩展性。系统核心的跟单策略模块能够准确跟踪 AI Agent 的交易信号并通过完善的风险控制机制确保交易安全。无论是数据源扩展、策略定制还是风险控制Nof1-tracker 都提供了良好的架构支持为用户提供了一个强大而灵活的 AI 交易信号跟踪和执行工具。通过深入理解 Nof1-tracker 的架构设计用户可以更好地使用这款工具甚至根据自己的需求进行定制和扩展以适应不同的交易场景和策略需求。相关文档:快速参考手册孤立挂单清理功能说明资金管理系统说明价格容忍度机制说明【免费下载链接】nof1-trackerA command-line tool for tracking nof1.ai AI Agent trading signals and automatically executing Binance futures trades项目地址: https://gitcode.com/gh_mirrors/no/nof1-tracker创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考