v5sdkgo/main.go

239 lines
4.9 KiB
Go
Raw Permalink Normal View History

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()
}