第2章:市场数据系统

欢迎回来

第1章:数据库与配置系统中,我们学习了nofx如何作为"大脑与记忆中枢"存储重要设置。但要让AI有效交易,它还需要实时掌握市场动态。

AI的"市场耳目"是什么?

想象nofx如同一位超级侦探。它拥有记忆(数据库),但如何感知外部世界的变化?它需要观察

nofx而言,这些"耳目"就是**市场数据系统**。这个系统持续监控金融市场,收集制定智能交易决策所需的关键信息。它就像一个专业的数据通讯社,不过采集的不是新闻,而是价格、交易量和专业指标等数字信息。

场景:获取市场快照

假设AI交易器需要了解:"当前比特币(BTC)兑美元稳定币(USDT)的市场状况如何?"它需要的不仅是价格,而是完整报告

AI可能要求获取:

  • BTCUSDT当前价格
  • 过去1小时和4小时的价格变化
  • 技术指标(如EMA、MACD、RSI)反映的趋势和动量
  • 合约交易关键数据:未平仓量(OI)和资金费率

市场数据系统就是为回答这些问题而设计,为AI提供清晰的市场分析快照。

核心机制

1. 原始市场数据:基础建材

原始数据是市场提供的基础事实:

  • 实时价格:加密货币的瞬时报价
  • K线数据:特定时段(如3分钟/4小时)的价格摘要,包含开盘价、收盘价、最高价、最低价和成交量
  • 交易量:特定时段内的买卖总量,高成交量通常预示强趋势
  • 未平仓量(OI):未结算的期货合约总量,反映市场资金活跃度
  • 资金费率:永续合约市场中多空双方的资金费用,用于锚定合约价格

nofx直接从币安等交易所获取这些原始数据。

2. 数据获取方式:监听策略

nofx通过两种主要方式从交易所获取数据:

方式 类比 用途 工作原理
API客户端 致电交易所索要报告 历史数据、OI、资金费率等 发送请求后获取单次响应
WebSocket 实时新闻播报 实时价格、持续更新的K线 建立连接后自动推送数据更新

实时数据通常通过"组合流"WebSocket获取,可高效同时监控多种加密货币。

3. 加工数据:理解"为什么"

原始数据只是数字,AI需要理解其含义。技术指标由此产生:

  • EMA(指数移动平均):平滑价格数据识别趋势,侧重近期价格
  • MACD(异同移动平均线):判断趋势强度、方向和持续时间
  • RSI(相对强弱指数):识别超买(可能下跌)/超卖(可能上涨)状态

通过这些计算,nofx将原始数据转化为AI可操作的洞察。

系统调用示例

获取BTCUSDT数据时,系统调用market.Get()函数:

func getBitcoinSnapshot() {
    data, err := market.Get("BTCUSDT")
    fmt.Printf("当前价格: %.2f\n", data.CurrentPrice)
    fmt.Printf("1小时涨跌幅: %.2f%%\n", data.PriceChange1h) 
    fmt.Printf("EMA20: %.3f\n", data.CurrentEMA20)
}

返回的market.Data结构包含完整市场信息:

type Data struct {
    Symbol        string
    CurrentPrice  float64
    PriceChange1h float64 
    CurrentEMA20  float64
    CurrentMACD   float64
    OpenInterest  *OIData
    //...更多字段
}

底层运行

当调用market.Get("BTCUSDT")时:

在这里插入图片描述

关键代码:

  1. market.Get():协调数据收集与指标计算
  2. WSMonitor:管理实时K线数据缓存
  3. APIClient:处理历史数据API请求
  4. CombinedStreams:维护WebSocket实时连接

小结

市场数据系统作为nofx感知市场的感官系统,通过API和WebSocket获取原始数据,并转化为EMA/MACD/RSI等技术指标,为AI决策提供结构化输入

下一章我们将探讨多交易所交易接口,了解系统如何与交易所进行交互


第3章:多交易所交易接口

欢迎回来

第2章:市场数据系统中,我们学习了nofx如何作为AI的"市场耳目"收集处理数据。但理解市场远远不够,AI交易员需要通过下单执行交易决策

AI的"万能交易遥控器"

假设家中有多台不同品牌的电视机,每台都有独特的遥控器操作方式。如果要让机器人控制所有电视,就得教会它每个遥控器的使用方法——这显然费时费力。

加密货币交易所同样如此。币安、Hyperliquid、Aster DEX等交易所各有其API"语言"来处理下单、查询余额等操作。如果让AI直接学习每家交易所的独特API,系统将变得复杂而脆弱。

多交易所交易接口正是为此而生。它如同一个"万能遥控器",让AI只需掌握一套通用指令,由接口自动转换为各交易所特定的API调用。

核心场景:“开多仓”

假设AI决策:“以0.001数量、5倍杠杆做多BTCUSDT”。

若无统一接口,AI需要了解:

  • 币安的API密钥格式和接入方式
  • 币安设置杠杆的特殊参数
  • 币安市价单的精确API格式
  • 币安特有的错误消息处理

若切换到Hyperliquid交易,又需重新学习整套流程。

  • 通过多交易所交易接口,AI只需发出通用指令:“交易器,做多BTCUSDT,数量0.001,杠杆5”。接口自动完成底层适配。

核心架构

1. Trader接口:通用语言

在编程中,"接口"是定义行为契约的蓝图。nofxTrader接口规定了所有交易所必须实现的标准操作:

方法 说明
GetBalance() 查询账户余额
GetPositions() 获取当前持仓
OpenLong() 开多仓
OpenShort() 开空仓
SetLeverage() 调整杠杆
SetStopLoss() 设置止损
GetMarketPrice() 获取当前价格

AI只需了解这些通用方法,无需关心具体实现。

2. 交易所适配器:翻译官

每个支持的交易所都有专属适配器,实现Trader接口并处理交易所特有逻辑:

  • BinanceTrader:将OpenLong()转换为币安API调用
  • HyperliquidTrader:适配Hyperliquid的特殊参数
  • AsterTrader:处理Aster DEX的独特规则

这种设计使nofx能灵活扩展新交易所支持,只需新增适配器而无需修改AI核心逻辑

接口调用示例

AI决策引擎(详见第4章)通过统一接口执行交易:

func executeTrade() {
    // 1. 设置全仓模式
    myTrader.SetMarginMode("BTCUSDT", true)
    
    // 2. 通用做多指令
    result, _ := myTrader.OpenLong("BTCUSDT", 0.001, 5)
    
    // 3. 查询统一格式的余额
    balance, _ := myTrader.GetBalance()
}

无论底层是币安还是Hyperliquid,AI代码保持完全一致。

底层实现

在这里插入图片描述

执行流程剖析

当AI调用OpenLong()时:

在这里插入图片描述

代码实现示例

  1. 接口定义 (trader/interface.go)
type Trader interface {
    OpenLong(symbol string, qty float64, leverage int) (map[string]interface{}, error)
    //...其他标准方法
}
  1. Hyperliquid适配器 (trader/hyperliquid_trader.go)
func (t *HyperliquidTrader) OpenLong(symbol string, qty float64, leverage int) (map[string]interface{}, error) {
    // 1. 设置杠杆
    t.SetLeverage(symbol, leverage)
    
    // 2. 转换数量精度
    adjQty := t.roundToSzDecimals(convertSymbol(symbol), qty)
    
    // 3. 构造Hyperliquid特定订单
    order := hyperliquid.CreateOrderRequest{
        Coin:  "BTC",
        IsBuy: true,
        Size:  adjQty,
        //...其他参数
    }
    
    // 4. 提交订单
    _, err := t.exchange.Order(order)
    return map[string]interface{}{"status":"FILLED"}, err
}
  1. 币安适配器 (trader/binance_futures.go)
func (t *FuturesTrader) OpenLong(symbol string, qty float64, leverage int) (map[string]interface{}, error) {
    // 1. 币安杠杆设置
    t.client.NewChangeLeverageService().Symbol(symbol).Leverage(leverage).Do()
    
    // 2. 数量格式化
    qtyStr := t.FormatQuantity(symbol, qty)
    
    // 3. 币安订单类型
    order, err := t.client.NewCreateOrderService().
        Symbol(symbol).
        Side(futures.SideTypeBuy).  // 币安多单枚举
        //...其他参数
        .Do()
    
    return map[string]interface{}{"orderId":order.OrderID}, err
}

小结

多交易所交易接口通过标准化操作和适配器模式,使AI能够无缝对接不同加密货币交易所

这种设计将复杂的交易所API差异封装在适配器中,为上层提供统一调用方式,极大提升了系统的扩展性和维护性。

现在nofx已具备市场感知和交易执行能力,下一步需要构建智能决策大脑。在第4章:AI决策引擎中,我们将探索系统如何分析市场数据并生成交易信号。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐