notes_works/ccxt.md
zhangkun9038@dingtalk.com 7bf77f5282 first add
2025-03-22 00:16:05 +08:00

3.3 KiB
Raw Blame History

类与接口

Exchange

  • 描述: Exchange 是一个表示交易所的基本结构体。它包含了交易所的名称、API密钥等信息并实现了一系列用于交互的方法。

OKXExchange示例

  • 描述: OKXExchange 是继承自 Exchange 的一个具体实现专门为OKX交易所提供API调用功能。

方法说明

Exchange 类中的公共方法

  1. NewExchange

    • 整体说明: 创建并返回一个新的 Exchange 实例。
    • 方法签名: func NewExchange(config Config) (*Exchange, error)
    • 入参:
      • config: 用于配置交易所信息的结构体。
  2. GetTicker

    • 整体说明: 获取当前市场的最新价格。
    • 方法签名: func (e *Exchange) GetTicker(symbol string) (*Ticker, error)
    • 入参:
      • symbol: 表示货币对,如 "BTC/USDT"。
  3. PlaceOrder

    • 整体说明: 在交易所下单。
    • 方法签名: func (e *Exchange) PlaceOrder(order Order) (*OrderResponse, error)
    • 入参:
      • order: 包含订单信息的结构体,如买卖类型、价格等。

OKXExchange 类中的公共方法

  1. FetchOHLCV
    • 整体说明: 从OKX交易所获取K线数据。
    • 方法签名: func (o *OKXExchange) FetchOHLCV(symbol string, interval time.Duration, since, limit int64) ([]OHLCV, error)
    • 入参:
      • symbol: 货币对,如 "BTC/USDT"。
      • interval: K线周期如1分钟、5分钟等。
      • since: 从该时间戳开始获取数据。
      • limit: 获取的K线数量限制。

使用示例

以下是一个使用 ExchangeOKXExchange 的示例代码:

package main

import (
    "fmt"
    "time"
)

func main() {
    // 创建配置结构体,填入必要信息
    config := Config{
        APIKey:     "your_api_key",
        SecretKey:  "your_secret_key",
        BaseURL:    "https://www.okx.com/api/v5/",
        EnableRateLimit: true,
    }

    // 使用NewExchange创建一个新的交易所实例
    exchange, err := NewExchange(config)
    if err != nil {
        fmt.Println("Error creating exchange:", err)
        return
    }

    // 获取BTC/USDT的最新价格
    ticker, err := exchange.GetTicker("BTC/USDT")
    if err != nil {
        fmt.Println("Error fetching ticker:", err)
        return
    }
    fmt.Printf("Latest Ticker: %+v\n", ticker)

    // 创建一个OKXExchange实例
    okxExchange := &OKXExchange{
        Exchange: exchange,
    }

    // 获取BTC/USDT的1分钟K线数据
    ohlcv, err := okxExchange.FetchOHLCV("BTC/USDT", 1*time.Minute, 0, 10)
    if err != nil {
        fmt.Println("Error fetching OHLCV:", err)
        return
    }
    fmt.Printf("Latest OHLCV: %+v\n", ohlcv)

    // 下单示例假设Order结构体已定义
    order := Order{
        Symbol: "BTC/USDT",
        Type:   "buy",
        Price:  50000,
        Amount: 0.01,
    }
    response, err := exchange.PlaceOrder(order)
    if err != nil {
        fmt.Println("Error placing order:", err)
        return
    }
    fmt.Printf("Order Response: %+v\n", response)
}

在这个示例中我们展示了如何创建交易所实例、获取最新价格和K线数据并下单。请根据实际情况调整API密钥和其他配置信息。