Skip to content

pseudocodes/dceapi-go

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

dceapi-go

大连商品交易所 (DCE) API v1.0 Go SDK

功能特性

  • 类型安全的 API 访问
  • 自动 Token 管理和刷新
  • 完整的错误处理
  • 支持期货和期权交易类型
  • 支持中英文语言切换

安装

go get github.com/pseudocodes/dceapi-go/dceapi

快速开始

环境变量配置

export DCE_API_KEY="your-api-key"
export DCE_SECRET="your-secret"

基本使用

package main

import (
    "context"
    "fmt"
    "log"

    "github.com/pseudocodes/dceapi-go/dceapi"
)

func main() {
    // 从环境变量创建客户端
    config := dceapi.NewConfigFromEnv()
    client, err := dceapi.NewClient(config)
    if err != nil {
        log.Fatal(err)
    }

    ctx := context.Background()

    // 获取当前交易日期
    tradeDate, err := client.Common.GetCurrTradeDate(ctx)
    if err != nil {
        log.Fatal(err)
    }
    fmt.Printf("当前交易日期: %s\n", tradeDate.Date)

    // 获取品种列表
    varieties, err := client.Common.GetVarietyList(ctx, 1) // 1=期货
    if err != nil {
        log.Fatal(err)
    }
    fmt.Printf("品种数量: %d\n", len(varieties))
}

自定义配置

config := &dceapi.Config{
    APIKey:    "your-api-key",
    Secret:    "your-secret",
    BaseURL:   dceapi.DefaultBaseURL,
    Timeout:   30 * time.Second,
    Lang:      "zh",      // "zh" 或 "en"
    TradeType: 1,         // 1=期货, 2=期权
}

client, err := dceapi.NewClient(config)

项目结构

dceapi-go/
├── dceapi/              # SDK 实现代码
│   ├── client.go        # 客户端入口
│   ├── config.go        # 配置管理
│   ├── errors.go        # 错误类型定义
│   ├── http.go          # HTTP 请求处理
│   ├── models.go        # 数据模型
│   ├── token.go         # Token 管理
│   ├── common_service.go
│   ├── news_service.go
│   ├── market_service.go
│   ├── trade_service.go
│   ├── settle_service.go
│   ├── member_service.go
│   └── delivery_service.go
├── examples/            # 使用示例
│   ├── basic/           # 基础示例
│   └── complete/        # 完整示例
└── README.md

API 参考

服务列表

服务 描述
client.Common 通用服务 - 交易日期、品种列表
client.News 资讯服务 - 新闻和公告
client.Market 行情服务 - 日/夜盘/周/月行情数据
client.Trade 交易服务 - 交易参数、合约信息、套利合约
client.Settle 结算服务 - 结算参数
client.Member 会员服务 - 成交持仓排名
client.Delivery 交割服务 - 交割数据、仓单

通用服务 (CommonService)

// 获取当前交易日期
tradeDate, err := client.Common.GetCurrTradeDate(ctx)

// 获取品种列表 (1=期货, 2=期权)
varieties, err := client.Common.GetVarietyList(ctx, 1)

资讯服务 (NewsService)

// 分页获取文章列表
// columnId: "244"=交易所公告, "245"=交易所通知, "1076"=期权公告, "242"=新闻
resp, err := client.News.GetArticleByPage(ctx, &dceapi.GetArticleByPageRequest{
    ColumnID: "244",
    PageNo:   1,
    PageSize: 10,
    SiteID:   5,
})

行情服务 (MarketService)

// 获取日行情
quotes, err := client.Market.GetDayQuotes(ctx, &dceapi.QuotesRequest{
    VarietyID: "m",           // 品种代码
    TradeDate: "20251230",    // 交易日期 YYYYMMDD
    TradeType: "1",           // 1=期货, 2=期权
    Lang:      "zh",
})

// 获取夜盘行情
quotes, err := client.Market.GetNightQuotes(ctx, &dceapi.QuotesRequest{
    Variety:   "i",           // 夜盘使用 variety 字段
    TradeDate: "20251230",
    TradeType: "1",
})

// 获取周行情
quotes, err := client.Market.GetWeekQuotes(ctx, &dceapi.QuotesRequest{
    VarietyID: "m",
    TradeDate: "20251230",
    TradeType: "1",
    Lang:      "zh",
})

// 获取月行情
quotes, err := client.Market.GetMonthQuotes(ctx, &dceapi.QuotesRequest{
    Variety:   "m",
    TradeDate: "20251230",
    TradeType: "1",
    Lang:      "zh",
})

交易服务 (TradeService)

// 获取日交易参数
params, err := client.Trade.GetDayTradeParam(ctx, &dceapi.DayTradeParamRequest{
    VarietyID: "m",
    TradeType: "1",
    Lang:      "zh",
})

// 获取合约信息
contracts, err := client.Trade.GetContractInfo(ctx, &dceapi.ContractInfoRequest{
    VarietyID: "c",
    TradeType: "1",
    Lang:      "zh",
})

// 获取套利合约
arbitrages, err := client.Trade.GetArbitrageContract(ctx, "zh")

// 获取月交易参数
monthParams, err := client.Trade.GetMonthTradeParam(ctx)

结算服务 (SettleService)

// 获取结算参数
params, err := client.Settle.GetSettleParam(ctx, &dceapi.SettleParamRequest{
    VarietyID: "m",
    TradeDate: "20251230",
    TradeType: "1",
    Lang:      "zh",
})

会员服务 (MemberService)

// 获取日成交持仓排名
rankings, err := client.Member.GetDailyRanking(ctx, &dceapi.DailyRankingRequest{
    VarietyID:  "a",
    ContractID: "a2505",
    TradeDate:  "20251230",
    TradeType:  "1",
})
// 返回 DailyRankingResponse 包含:
// - QtyFutureList  成交量排名
// - BuyFutureList  持买排名
// - SellFutureList 持卖排名

// 获取阶段成交排名
phaseRankings, err := client.Member.GetPhaseRanking(ctx, &dceapi.PhaseRankingRequest{
    Variety:    "a",
    StartMonth: "202512",
    EndMonth:   "202512",
    TradeType:  "1",
})

交割服务 (DeliveryService)

// 获取交割数据
data, err := client.Delivery.GetDeliveryData(ctx, &dceapi.DeliveryDataRequest{
    VarietyCode: "a",
    TradeDate:   "20251230",
})

// 获取仓单数据
receipts, err := client.Delivery.GetWarehouseReceipt(ctx, &dceapi.WarehouseReceiptRequest{
    VarietyCode: "a",
    TradeDate:   "20251230",
})

// 获取交割费用
cost, err := client.Delivery.GetDeliveryCost(ctx, "a")

// 获取仓库升贴水
premiums, err := client.Delivery.GetWarehousePremium(ctx, "c")

请求选项

可以为单个请求设置选项:

// 设置交易类型 (覆盖客户端默认值)
quotes, err := client.Market.GetDayQuotes(ctx, req, dceapi.WithTradeType(2))

// 设置语言
quotes, err := client.Market.GetDayQuotes(ctx, req, dceapi.WithLang("en"))

错误处理

SDK 提供类型化的错误类型:

import "errors"

quotes, err := client.Market.GetDayQuotes(ctx, req)
if err != nil {
    var apiErr *dceapi.APIError
    var authErr *dceapi.AuthError
    var netErr *dceapi.NetworkError
    var validErr *dceapi.ValidationError
    var parseErr *dceapi.ParseError

    switch {
    case errors.As(err, &apiErr):
        // API 错误
        switch apiErr.Code {
        case dceapi.ErrCodeParamError:   // 400 - 参数错误
        case dceapi.ErrCodeNoPermission: // 401 - 无权限
        case dceapi.ErrCodeTokenExpired: // 402 - Token 过期
        case dceapi.ErrCodeServerError:  // 500 - 服务器错误
        case dceapi.ErrCodeRateLimit:    // 501 - 限流
        }

    case errors.As(err, &authErr):
        // 认证错误

    case errors.As(err, &netErr):
        // 网络错误

    case errors.As(err, &validErr):
        // 验证错误

    case errors.As(err, &parseErr):
        // 解析错误
    }
}

示例

常用品种代码

代码 品种名称 代码 品种名称
a 豆一 m 豆粕
b 豆二 y 豆油
c 玉米 p 棕榈油
i 铁矿石 j 焦炭
jm 焦煤 eg 乙二醇
pp 聚丙烯 l 聚乙烯
v PVC eb 苯乙烯
pg LPG

许可证

MIT License

About

大商所对外门户 API go sdk

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages