108 lines
3.3 KiB
Markdown
108 lines
3.3 KiB
Markdown
### 类与接口
|
||
|
||
#### 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线数量限制。
|
||
|
||
### 使用示例
|
||
|
||
以下是一个使用 `Exchange` 和 `OKXExchange` 的示例代码:
|
||
|
||
```go
|
||
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密钥和其他配置信息。
|