2024-12-16 11:41:20 +08:00
|
|
|
package v5sdkgo
|
2024-12-14 19:09:06 +08:00
|
|
|
|
|
|
|
import (
|
|
|
|
"context"
|
|
|
|
"fmt"
|
2025-03-05 20:52:20 +08:00
|
|
|
. "gitea.zjmud.xyz/phyer/v5sdkgo/rest"
|
|
|
|
. "gitea.zjmud.xyz/phyer/v5sdkgo/ws"
|
2024-12-16 11:41:20 +08:00
|
|
|
|
2024-12-14 19:09:06 +08:00
|
|
|
"log"
|
|
|
|
"time"
|
|
|
|
)
|
|
|
|
|
|
|
|
/*
|
2024-12-16 11:41:20 +08:00
|
|
|
rest API请求
|
|
|
|
更多示例请查看 rest/rest_test.go
|
2024-12-14 19:09:06 +08:00
|
|
|
*/
|
|
|
|
func REST() {
|
|
|
|
// 设置您的APIKey
|
|
|
|
apikey := APIKeyInfo{
|
|
|
|
ApiKey: "eca767d4-fda5-4a1b-bb28-49ae18093307",
|
|
|
|
SecKey: "8CA3628A556ED137977DB298D37BC7F3",
|
|
|
|
PassPhrase: "Op3Druaron",
|
|
|
|
}
|
|
|
|
|
|
|
|
// 第三个参数代表是否为模拟环境,更多信息查看接口说明
|
|
|
|
cli := NewRESTClient("https://www.okex.win", &apikey, false)
|
|
|
|
rsp, err := cli.Get(context.Background(), "/api/v5/account/balance", nil)
|
|
|
|
if err != nil {
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
fmt.Println("Response:")
|
|
|
|
fmt.Println("\thttp code: ", rsp.Code)
|
|
|
|
fmt.Println("\t总耗时: ", rsp.TotalUsedTime)
|
|
|
|
fmt.Println("\t请求耗时: ", rsp.ReqUsedTime)
|
|
|
|
fmt.Println("\t返回消息: ", rsp.Body)
|
|
|
|
fmt.Println("\terrCode: ", rsp.V5Response.Code)
|
|
|
|
fmt.Println("\terrMsg: ", rsp.V5Response.Msg)
|
|
|
|
fmt.Println("\tdata: ", rsp.V5Response.Data)
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
// 订阅私有频道
|
|
|
|
func wsPriv() {
|
|
|
|
ep := "wss://ws.okex.com:8443/ws/v5/private?brokerId=9999"
|
|
|
|
|
|
|
|
// 填写您自己的APIKey信息
|
|
|
|
apikey := "xxxx"
|
|
|
|
secretKey := "xxxxx"
|
|
|
|
passphrase := "xxxxx"
|
|
|
|
|
|
|
|
// 创建ws客户端
|
|
|
|
r, err := NewWsClient(ep)
|
|
|
|
if err != nil {
|
|
|
|
log.Println(err)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
// 设置连接超时
|
|
|
|
r.SetDailTimeout(time.Second * 2)
|
|
|
|
err = r.Start()
|
|
|
|
if err != nil {
|
|
|
|
log.Println(err)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
defer r.Stop()
|
|
|
|
var res bool
|
|
|
|
|
|
|
|
res, _, err = r.Login(apikey, secretKey, passphrase)
|
|
|
|
if res {
|
|
|
|
fmt.Println("登录成功!")
|
|
|
|
} else {
|
|
|
|
fmt.Println("登录失败!", err)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
// 订阅账户频道
|
|
|
|
var args []map[string]string
|
|
|
|
arg := make(map[string]string)
|
|
|
|
arg["ccy"] = "BTC"
|
|
|
|
args = append(args, arg)
|
|
|
|
|
|
|
|
start := time.Now()
|
|
|
|
res, _, err = r.PrivAccout(OP_SUBSCRIBE, args)
|
|
|
|
if res {
|
|
|
|
usedTime := time.Since(start)
|
|
|
|
fmt.Println("订阅成功!耗时:", usedTime.String())
|
|
|
|
} else {
|
|
|
|
fmt.Println("订阅失败!", err)
|
|
|
|
}
|
|
|
|
|
|
|
|
time.Sleep(100 * time.Second)
|
|
|
|
start = time.Now()
|
|
|
|
res, _, err = r.PrivAccout(OP_UNSUBSCRIBE, args)
|
|
|
|
if res {
|
|
|
|
usedTime := time.Since(start)
|
|
|
|
fmt.Println("取消订阅成功!", usedTime.String())
|
|
|
|
} else {
|
|
|
|
fmt.Println("取消订阅失败!", err)
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
// 订阅公共频道
|
|
|
|
func wsPub() {
|
|
|
|
ep := "wss://wsaws.okex.com:8443/ws/v5/public?brokerId=9999"
|
|
|
|
|
|
|
|
// 创建ws客户端
|
|
|
|
r, err := NewWsClient(ep)
|
|
|
|
if err != nil {
|
|
|
|
log.Println(err)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
// 设置连接超时
|
|
|
|
r.SetDailTimeout(time.Second * 2)
|
|
|
|
err = r.Start()
|
|
|
|
if err != nil {
|
|
|
|
log.Println(err)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
defer r.Stop()
|
|
|
|
// 订阅产品频道
|
|
|
|
// 在这里初始化instrument列表
|
|
|
|
var args []map[string]string
|
|
|
|
arg := make(map[string]string)
|
|
|
|
arg["instType"] = FUTURES
|
|
|
|
//arg["instType"] = OPTION
|
|
|
|
args = append(args, arg)
|
|
|
|
|
|
|
|
start := time.Now()
|
|
|
|
//订阅
|
|
|
|
res, _, err := r.PubInstruemnts(OP_SUBSCRIBE, args)
|
|
|
|
fmt.Println("args:", args)
|
|
|
|
if res {
|
|
|
|
usedTime := time.Since(start)
|
|
|
|
fmt.Println("订阅成功!", usedTime.String())
|
|
|
|
} else {
|
|
|
|
fmt.Println("订阅失败!", err)
|
|
|
|
}
|
|
|
|
|
|
|
|
// 在这里 args1 初始化tickerList的列表
|
|
|
|
var args1 []map[string]string
|
|
|
|
arg1 := make(map[string]string)
|
|
|
|
arg1["instId"] = "ETH-USDT"
|
|
|
|
//arg["instType"] = OPTION
|
|
|
|
args1 = append(args1, arg1)
|
|
|
|
//------------------------------------------------------
|
|
|
|
start1 := time.Now()
|
|
|
|
res, _, err = r.PubTickers(OP_SUBSCRIBE, args1)
|
|
|
|
fmt.Println("args:", args)
|
|
|
|
if res {
|
|
|
|
usedTime := time.Since(start1)
|
|
|
|
fmt.Println("订阅成功!", usedTime.String())
|
|
|
|
} else {
|
|
|
|
fmt.Println("订阅失败!", err)
|
|
|
|
}
|
|
|
|
time.Sleep(300 * time.Second)
|
|
|
|
//
|
|
|
|
// start = time.Now()
|
|
|
|
// res, _, err = r.PubInstruemnts(OP_UNSUBSCRIBE, args)
|
|
|
|
// if res {
|
|
|
|
// usedTime := time.Since(start)
|
|
|
|
// fmt.Println("取消订阅成功!", usedTime.String())
|
|
|
|
// } else {
|
|
|
|
// fmt.Println("取消订阅失败!", err)
|
|
|
|
// }
|
|
|
|
}
|
|
|
|
|
|
|
|
// websocket交易
|
|
|
|
func wsJrpc() {
|
|
|
|
ep := "wss://ws.okex.com:8443/ws/v5/private?brokerId=9999"
|
|
|
|
|
|
|
|
// 填写您自己的APIKey信息
|
|
|
|
apikey := "xxxx"
|
|
|
|
secretKey := "xxxxx"
|
|
|
|
passphrase := "xxxxx"
|
|
|
|
|
|
|
|
var res bool
|
|
|
|
var req_id string
|
|
|
|
|
|
|
|
// 创建ws客户端
|
|
|
|
r, err := NewWsClient(ep)
|
|
|
|
if err != nil {
|
|
|
|
log.Println(err)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
// 设置连接超时
|
|
|
|
r.SetDailTimeout(time.Second * 2)
|
|
|
|
err = r.Start()
|
|
|
|
if err != nil {
|
|
|
|
log.Println(err)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
defer r.Stop()
|
|
|
|
|
|
|
|
res, _, err = r.Login(apikey, secretKey, passphrase)
|
|
|
|
if res {
|
|
|
|
fmt.Println("登录成功!")
|
|
|
|
} else {
|
|
|
|
fmt.Println("登录失败!", err)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
start := time.Now()
|
|
|
|
param := map[string]interface{}{}
|
|
|
|
param["instId"] = "BTC-USDT"
|
|
|
|
param["tdMode"] = "cash"
|
|
|
|
param["side"] = "buy"
|
|
|
|
param["ordType"] = "market"
|
|
|
|
param["sz"] = "200"
|
|
|
|
req_id = "00001"
|
|
|
|
|
|
|
|
res, _, err = r.PlaceOrder(req_id, param)
|
|
|
|
if res {
|
|
|
|
usedTime := time.Since(start)
|
|
|
|
fmt.Println("下单成功!", usedTime.String())
|
|
|
|
} else {
|
|
|
|
usedTime := time.Since(start)
|
|
|
|
fmt.Println("下单失败!", usedTime.String(), err)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func main() {
|
|
|
|
// 公共订阅
|
|
|
|
wsPub()
|
|
|
|
|
|
|
|
// 私有订阅
|
|
|
|
// wsPriv()
|
|
|
|
|
|
|
|
// websocket交易
|
|
|
|
// wsJrpc()
|
|
|
|
|
|
|
|
// rest请求
|
|
|
|
// REST()
|
|
|
|
}
|