module changes
This commit is contained in:
parent
a72a120dd7
commit
1dc006253a
@ -1,3 +0,0 @@
|
||||
module v5sdk_go/config
|
||||
|
||||
go 1.14
|
5
go.mod
5
go.mod
@ -1,3 +1,8 @@
|
||||
module github.com/phyer/v5sdkgo
|
||||
|
||||
go 1.15
|
||||
|
||||
require (
|
||||
github.com/gorilla/websocket v1.5.3
|
||||
github.com/stretchr/testify v1.10.0
|
||||
)
|
||||
|
21
go.sum
21
go.sum
@ -0,0 +1,21 @@
|
||||
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
||||
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
github.com/gorilla/websocket v1.5.3 h1:saDtZ6Pbx/0u+bgYQ3q96pZgCzfhKXGPqt7kZ72aNNg=
|
||||
github.com/gorilla/websocket v1.5.3/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
|
||||
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
||||
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
|
||||
github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
|
||||
github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA=
|
||||
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
||||
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
|
||||
github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
|
||||
github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA=
|
||||
github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
|
||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
|
||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
|
||||
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
11
main.go
11
main.go
@ -1,17 +1,18 @@
|
||||
package main
|
||||
package v5sdkgo
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
. "github.com/phyer/v5sdkgo/rest"
|
||||
. "github.com/phyer/v5sdkgo/ws"
|
||||
|
||||
"log"
|
||||
"time"
|
||||
. "v5sdk_go/rest"
|
||||
. "v5sdk_go/ws"
|
||||
)
|
||||
|
||||
/*
|
||||
rest API请求
|
||||
更多示例请查看 rest/rest_test.go
|
||||
rest API请求
|
||||
更多示例请查看 rest/rest_test.go
|
||||
*/
|
||||
func REST() {
|
||||
// 设置您的APIKey
|
||||
|
28
rest/rest.go
28
rest/rest.go
@ -6,11 +6,11 @@ import (
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
. "github.com/phyer/v5sdkgo/utils"
|
||||
"io/ioutil"
|
||||
"net/http"
|
||||
"strings"
|
||||
"time"
|
||||
. "v5sdk_go/utils"
|
||||
)
|
||||
|
||||
type RESTAPI struct {
|
||||
@ -51,9 +51,9 @@ type Okexv5APIResponse struct {
|
||||
}
|
||||
|
||||
/*
|
||||
endPoint:请求地址
|
||||
apiKey
|
||||
isSimulate: 是否为模拟环境
|
||||
endPoint:请求地址
|
||||
apiKey
|
||||
isSimulate: 是否为模拟环境
|
||||
*/
|
||||
func NewRESTClient(endPoint string, apiKey *APIKeyInfo, isSimulate bool) *RESTAPI {
|
||||
|
||||
@ -230,7 +230,7 @@ func (this *RESTAPI) Run(ctx context.Context) (res *RESTAPIResult, err error) {
|
||||
}
|
||||
|
||||
/*
|
||||
生成请求对应的参数
|
||||
生成请求对应的参数
|
||||
*/
|
||||
func (this *RESTAPI) GenReqInfo() (uri string, body string, err error) {
|
||||
uri = this.Uri
|
||||
@ -265,14 +265,14 @@ func (this *RESTAPI) GenReqInfo() (uri string, body string, err error) {
|
||||
}
|
||||
|
||||
/*
|
||||
Set http request headers:
|
||||
Accept: application/json
|
||||
Content-Type: application/json; charset=UTF-8 (default)
|
||||
Cookie: locale=en_US (English)
|
||||
OK-ACCESS-KEY: (Your setting)
|
||||
OK-ACCESS-SIGN: (Use your setting, auto sign and add)
|
||||
OK-ACCESS-TIMESTAMP: (Auto add)
|
||||
OK-ACCESS-PASSPHRASE: Your setting
|
||||
Set http request headers:
|
||||
Accept: application/json
|
||||
Content-Type: application/json; charset=UTF-8 (default)
|
||||
Cookie: locale=en_US (English)
|
||||
OK-ACCESS-KEY: (Your setting)
|
||||
OK-ACCESS-SIGN: (Use your setting, auto sign and add)
|
||||
OK-ACCESS-TIMESTAMP: (Auto add)
|
||||
OK-ACCESS-PASSPHRASE: Your setting
|
||||
*/
|
||||
func (this *RESTAPI) SetHeaders(request *http.Request, timestamp string, sign string) (header string) {
|
||||
|
||||
@ -306,7 +306,7 @@ func (this *RESTAPI) SetHeaders(request *http.Request, timestamp string, sign st
|
||||
}
|
||||
|
||||
/*
|
||||
打印header信息
|
||||
打印header信息
|
||||
*/
|
||||
func (this *RESTAPI) PrintRequest(request *http.Request, body string, preHash string) {
|
||||
if this.ApiKeyInfo.SecKey != "" {
|
||||
|
@ -2,10 +2,10 @@ package ws
|
||||
|
||||
import (
|
||||
"errors"
|
||||
. "github.com/phyer/v5sdkgo/ws/wImpl"
|
||||
. "github.com/phyer/v5sdkgo/ws/wInterface"
|
||||
"log"
|
||||
"runtime/debug"
|
||||
. "v5sdk_go/ws/wImpl"
|
||||
. "v5sdk_go/ws/wInterface"
|
||||
)
|
||||
|
||||
// 判断返回结果成功失败
|
||||
|
@ -1,11 +1,11 @@
|
||||
/*
|
||||
JRPC请求/响应数据
|
||||
JRPC请求/响应数据
|
||||
*/
|
||||
package wImpl
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
. "v5sdk_go/utils"
|
||||
. "github.com/phyer/v5sdkgo/utils"
|
||||
)
|
||||
|
||||
// jrpc请求结构体
|
||||
|
@ -6,7 +6,7 @@ package wImpl
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
. "v5sdk_go/utils"
|
||||
. "github.com/phyer/v5sdkgo/utils"
|
||||
)
|
||||
|
||||
// 客户端请求消息格式
|
||||
|
@ -1,6 +1,8 @@
|
||||
package wInterface
|
||||
|
||||
import . "v5sdk_go/ws/wImpl"
|
||||
import (
|
||||
. "github.com/phyer/v5sdkgo/ws/wImpl"
|
||||
)
|
||||
|
||||
// 请求数据
|
||||
type WSParam interface {
|
||||
|
53
ws/ws_cli.go
53
ws/ws_cli.go
@ -5,14 +5,14 @@ import (
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
. "github.com/phyer/v5sdkgo/config"
|
||||
. "github.com/phyer/v5sdkgo/utils"
|
||||
. "github.com/phyer/v5sdkgo/ws/wImpl"
|
||||
"log"
|
||||
"regexp"
|
||||
"runtime/debug"
|
||||
"sync"
|
||||
"time"
|
||||
. "v5sdk_go/config"
|
||||
. "v5sdk_go/utils"
|
||||
. "v5sdk_go/ws/wImpl"
|
||||
|
||||
"github.com/gorilla/websocket"
|
||||
)
|
||||
@ -55,9 +55,9 @@ type WsClient struct {
|
||||
}
|
||||
|
||||
/*
|
||||
服务端响应详细信息
|
||||
Timestamp: 接受到消息的时间
|
||||
Info: 接受到的消息字符串
|
||||
服务端响应详细信息
|
||||
Timestamp: 接受到消息的时间
|
||||
Info: 接受到的消息字符串
|
||||
*/
|
||||
type Msg struct {
|
||||
Timestamp time.Time `json:"timestamp"`
|
||||
@ -71,7 +71,7 @@ func (this *Msg) Print() {
|
||||
}
|
||||
|
||||
/*
|
||||
订阅结果封装后的消息结构体
|
||||
订阅结果封装后的消息结构体
|
||||
*/
|
||||
type ProcessDetail struct {
|
||||
EndPoint string `json:"endPoint"`
|
||||
@ -112,7 +112,7 @@ func NewWsClient(ep string) (r *WsClient, err error) {
|
||||
}
|
||||
|
||||
/*
|
||||
新增记录深度信息
|
||||
新增记录深度信息
|
||||
*/
|
||||
func (a *WsClient) addDepthDataList(key string, dd DepthDetail) error {
|
||||
a.DepthDataLock.Lock()
|
||||
@ -122,7 +122,7 @@ func (a *WsClient) addDepthDataList(key string, dd DepthDetail) error {
|
||||
}
|
||||
|
||||
/*
|
||||
更新记录深度信息(如果没有记录不会更新成功)
|
||||
更新记录深度信息(如果没有记录不会更新成功)
|
||||
*/
|
||||
func (a *WsClient) updateDepthDataList(key string, dd DepthDetail) error {
|
||||
a.DepthDataLock.Lock()
|
||||
@ -136,7 +136,7 @@ func (a *WsClient) updateDepthDataList(key string, dd DepthDetail) error {
|
||||
}
|
||||
|
||||
/*
|
||||
删除记录深度信息
|
||||
删除记录深度信息
|
||||
*/
|
||||
func (a *WsClient) deleteDepthDataList(key string) error {
|
||||
a.DepthDataLock.Lock()
|
||||
@ -146,7 +146,7 @@ func (a *WsClient) deleteDepthDataList(key string) error {
|
||||
}
|
||||
|
||||
/*
|
||||
设置是否自动深度管理,开启 true,关闭 false
|
||||
设置是否自动深度管理,开启 true,关闭 false
|
||||
*/
|
||||
func (a *WsClient) EnableAutoDepthMgr(b bool) error {
|
||||
a.DepthDataLock.Lock()
|
||||
@ -162,7 +162,7 @@ func (a *WsClient) EnableAutoDepthMgr(b bool) error {
|
||||
}
|
||||
|
||||
/*
|
||||
获取当前的深度快照信息(合并后的)
|
||||
获取当前的深度快照信息(合并后的)
|
||||
*/
|
||||
func (a *WsClient) GetSnapshotByChannel(data DepthData) (snapshot *DepthDetail, err error) {
|
||||
key, err := json.Marshal(data.Arg)
|
||||
@ -310,7 +310,7 @@ func (a *WsClient) work() {
|
||||
}
|
||||
|
||||
/*
|
||||
处理接受到的消息
|
||||
处理接受到的消息
|
||||
*/
|
||||
func (a *WsClient) receive() {
|
||||
defer func() {
|
||||
@ -444,7 +444,7 @@ func (a *WsClient) receive() {
|
||||
}
|
||||
|
||||
/*
|
||||
开启了深度数据管理功能后,系统会自动合并深度信息
|
||||
开启了深度数据管理功能后,系统会自动合并深度信息
|
||||
*/
|
||||
func (a *WsClient) MergeDepth(depData DepthData) (err error) {
|
||||
if !a.autoDepthMgr {
|
||||
@ -497,7 +497,7 @@ func (a *WsClient) MergeDepth(depData DepthData) (err error) {
|
||||
}
|
||||
|
||||
/*
|
||||
通过ErrorCode判断事件类型
|
||||
通过ErrorCode判断事件类型
|
||||
*/
|
||||
func GetInfoFromErrCode(data ErrData) Event {
|
||||
switch data.Code {
|
||||
@ -529,9 +529,10 @@ func GetInfoFromErrCode(data ErrData) Event {
|
||||
}
|
||||
|
||||
/*
|
||||
从error返回中解析出对应的channel
|
||||
error信息样例
|
||||
{"event":"error","msg":"channel:index-tickers,instId:BTC-USDT1 doesn't exist","code":"60018"}
|
||||
从error返回中解析出对应的channel
|
||||
error信息样例
|
||||
|
||||
{"event":"error","msg":"channel:index-tickers,instId:BTC-USDT1 doesn't exist","code":"60018"}
|
||||
*/
|
||||
func GetInfoFromErrMsg(raw string) (channel string) {
|
||||
reg := regexp.MustCompile(`channel:(.*?),`)
|
||||
@ -548,7 +549,7 @@ func GetInfoFromErrMsg(raw string) (channel string) {
|
||||
}
|
||||
|
||||
/*
|
||||
解析消息类型
|
||||
解析消息类型
|
||||
*/
|
||||
func (a *WsClient) parseMessage(raw []byte) (evt Event, data interface{}, err error) {
|
||||
evt = EVENT_UNKNOWN
|
||||
@ -679,7 +680,7 @@ func (a *WsClient) Stop() error {
|
||||
}
|
||||
|
||||
/*
|
||||
添加全局消息处理的回调函数
|
||||
添加全局消息处理的回调函数
|
||||
*/
|
||||
func (a *WsClient) AddMessageHook(fn ReceivedDataCallback) error {
|
||||
a.onMessageHook = fn
|
||||
@ -687,7 +688,7 @@ func (a *WsClient) AddMessageHook(fn ReceivedDataCallback) error {
|
||||
}
|
||||
|
||||
/*
|
||||
添加订阅消息处理的回调函数
|
||||
添加订阅消息处理的回调函数
|
||||
*/
|
||||
func (a *WsClient) AddBookMsgHook(fn ReceivedMsgDataCallback) error {
|
||||
a.onBookMsgHook = fn
|
||||
@ -695,9 +696,9 @@ func (a *WsClient) AddBookMsgHook(fn ReceivedMsgDataCallback) error {
|
||||
}
|
||||
|
||||
/*
|
||||
添加深度消息处理的回调函数
|
||||
例如:
|
||||
cli.AddDepthHook(func(ts time.Time, data DepthData) error { return nil })
|
||||
添加深度消息处理的回调函数
|
||||
例如:
|
||||
cli.AddDepthHook(func(ts time.Time, data DepthData) error { return nil })
|
||||
*/
|
||||
func (a *WsClient) AddDepthHook(fn ReceivedDepthDataCallback) error {
|
||||
a.onDepthHook = fn
|
||||
@ -705,7 +706,7 @@ func (a *WsClient) AddDepthHook(fn ReceivedDepthDataCallback) error {
|
||||
}
|
||||
|
||||
/*
|
||||
添加错误类型消息处理的回调函数
|
||||
添加错误类型消息处理的回调函数
|
||||
*/
|
||||
func (a *WsClient) AddErrMsgHook(fn ReceivedDataCallback) error {
|
||||
a.OnErrorHook = fn
|
||||
@ -713,7 +714,7 @@ func (a *WsClient) AddErrMsgHook(fn ReceivedDataCallback) error {
|
||||
}
|
||||
|
||||
/*
|
||||
判断连接是否存活
|
||||
判断连接是否存活
|
||||
*/
|
||||
func (a *WsClient) IsAlive() bool {
|
||||
res := false
|
||||
|
@ -2,19 +2,20 @@ package ws
|
||||
|
||||
import (
|
||||
"context"
|
||||
. "github.com/phyer/v5sdkgo/ws/wImpl"
|
||||
"log"
|
||||
"time"
|
||||
. "v5sdk_go/ws/wImpl"
|
||||
)
|
||||
|
||||
/*
|
||||
websocket交易 通用请求
|
||||
参数说明:
|
||||
evtId:封装的事件类型
|
||||
id: 请求ID
|
||||
op: 请求参数op
|
||||
params: 请求参数
|
||||
timeOut: 超时时间
|
||||
websocket交易 通用请求
|
||||
参数说明:
|
||||
|
||||
evtId:封装的事件类型
|
||||
id: 请求ID
|
||||
op: 请求参数op
|
||||
params: 请求参数
|
||||
timeOut: 超时时间
|
||||
*/
|
||||
func (a *WsClient) jrpcReq(evtId Event, op string, id string, params []map[string]interface{}, timeOut ...int) (res bool, detail *ProcessDetail, err error) {
|
||||
res = true
|
||||
@ -56,11 +57,12 @@ func (a *WsClient) jrpcReq(evtId Event, op string, id string, params []map[strin
|
||||
}
|
||||
|
||||
/*
|
||||
单个下单
|
||||
参数说明:
|
||||
id: 请求ID
|
||||
params: 请求参数
|
||||
timeOut: 超时时间
|
||||
单个下单
|
||||
参数说明:
|
||||
|
||||
id: 请求ID
|
||||
params: 请求参数
|
||||
timeOut: 超时时间
|
||||
*/
|
||||
func (a *WsClient) PlaceOrder(id string, param map[string]interface{}, timeOut ...int) (res bool, detail *ProcessDetail, err error) {
|
||||
op := "order"
|
||||
@ -74,11 +76,12 @@ func (a *WsClient) PlaceOrder(id string, param map[string]interface{}, timeOut .
|
||||
}
|
||||
|
||||
/*
|
||||
批量下单
|
||||
参数说明:
|
||||
id: 请求ID
|
||||
params: 请求参数
|
||||
timeOut: 超时时间
|
||||
批量下单
|
||||
参数说明:
|
||||
|
||||
id: 请求ID
|
||||
params: 请求参数
|
||||
timeOut: 超时时间
|
||||
*/
|
||||
func (a *WsClient) BatchPlaceOrders(id string, params []map[string]interface{}, timeOut ...int) (res bool, detail *ProcessDetail, err error) {
|
||||
|
||||
@ -89,11 +92,12 @@ func (a *WsClient) BatchPlaceOrders(id string, params []map[string]interface{},
|
||||
}
|
||||
|
||||
/*
|
||||
单个撤单
|
||||
参数说明:
|
||||
id: 请求ID
|
||||
params: 请求参数
|
||||
timeOut: 超时时间
|
||||
单个撤单
|
||||
参数说明:
|
||||
|
||||
id: 请求ID
|
||||
params: 请求参数
|
||||
timeOut: 超时时间
|
||||
*/
|
||||
func (a *WsClient) CancelOrder(id string, param map[string]interface{}, timeOut ...int) (res bool, detail *ProcessDetail, err error) {
|
||||
|
||||
@ -108,11 +112,12 @@ func (a *WsClient) CancelOrder(id string, param map[string]interface{}, timeOut
|
||||
}
|
||||
|
||||
/*
|
||||
批量撤单
|
||||
参数说明:
|
||||
id: 请求ID
|
||||
params: 请求参数
|
||||
timeOut: 超时时间
|
||||
批量撤单
|
||||
参数说明:
|
||||
|
||||
id: 请求ID
|
||||
params: 请求参数
|
||||
timeOut: 超时时间
|
||||
*/
|
||||
func (a *WsClient) BatchCancelOrders(id string, params []map[string]interface{}, timeOut ...int) (res bool, detail *ProcessDetail, err error) {
|
||||
|
||||
@ -123,11 +128,12 @@ func (a *WsClient) BatchCancelOrders(id string, params []map[string]interface{},
|
||||
}
|
||||
|
||||
/*
|
||||
单个改单
|
||||
参数说明:
|
||||
id: 请求ID
|
||||
params: 请求参数
|
||||
timeOut: 超时时间
|
||||
单个改单
|
||||
参数说明:
|
||||
|
||||
id: 请求ID
|
||||
params: 请求参数
|
||||
timeOut: 超时时间
|
||||
*/
|
||||
func (a *WsClient) AmendOrder(id string, param map[string]interface{}, timeOut ...int) (res bool, detail *ProcessDetail, err error) {
|
||||
|
||||
@ -142,11 +148,12 @@ func (a *WsClient) AmendOrder(id string, param map[string]interface{}, timeOut .
|
||||
}
|
||||
|
||||
/*
|
||||
批量改单
|
||||
参数说明:
|
||||
id: 请求ID
|
||||
params: 请求参数
|
||||
timeOut: 超时时间
|
||||
批量改单
|
||||
参数说明:
|
||||
|
||||
id: 请求ID
|
||||
params: 请求参数
|
||||
timeOut: 超时时间
|
||||
*/
|
||||
func (a *WsClient) BatchAmendOrders(id string, params []map[string]interface{}, timeOut ...int) (res bool, detail *ProcessDetail, err error) {
|
||||
|
||||
|
@ -2,9 +2,9 @@ package ws
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
. "github.com/phyer/v5sdkgo/ws/wImpl"
|
||||
"testing"
|
||||
"time"
|
||||
. "v5sdk_go/ws/wImpl"
|
||||
)
|
||||
|
||||
func PrintDetail(d *ProcessDetail) {
|
||||
@ -155,7 +155,7 @@ func (r *WsClient) makeOrder(instId string, tdMode string, side string, ordType
|
||||
// }
|
||||
|
||||
/*
|
||||
修改订单
|
||||
修改订单
|
||||
*/
|
||||
func TestAmendlOrder(t *testing.T) {
|
||||
r := prework_pri(CROSS_ACCOUNT)
|
||||
|
34
ws/ws_op.go
34
ws/ws_op.go
@ -3,19 +3,19 @@ package ws
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
. "github.com/phyer/v5sdkgo/config"
|
||||
. "github.com/phyer/v5sdkgo/rest"
|
||||
. "github.com/phyer/v5sdkgo/utils"
|
||||
. "github.com/phyer/v5sdkgo/ws/wImpl"
|
||||
. "github.com/phyer/v5sdkgo/ws/wInterface"
|
||||
"log"
|
||||
"sync"
|
||||
"time"
|
||||
. "v5sdk_go/config"
|
||||
"v5sdk_go/rest"
|
||||
. "v5sdk_go/utils"
|
||||
. "v5sdk_go/ws/wImpl"
|
||||
. "v5sdk_go/ws/wInterface"
|
||||
)
|
||||
|
||||
/*
|
||||
Ping服务端保持心跳。
|
||||
timeOut:超时时间(毫秒),如果不填默认为5000ms
|
||||
Ping服务端保持心跳。
|
||||
timeOut:超时时间(毫秒),如果不填默认为5000ms
|
||||
*/
|
||||
func (a *WsClient) Ping(timeOut ...int) (res bool, detail *ProcessDetail, err error) {
|
||||
tm := 5000
|
||||
@ -54,7 +54,7 @@ func (a *WsClient) Ping(timeOut ...int) (res bool, detail *ProcessDetail, err er
|
||||
}
|
||||
|
||||
/*
|
||||
登录私有频道
|
||||
登录私有频道
|
||||
*/
|
||||
func (a *WsClient) Login(apiKey, secKey, passPhrase string, timeOut ...int) (res bool, detail *ProcessDetail, err error) {
|
||||
|
||||
@ -140,7 +140,7 @@ func (a *WsClient) Login(apiKey, secKey, passPhrase string, timeOut ...int) (res
|
||||
}
|
||||
|
||||
/*
|
||||
等待结果响应
|
||||
等待结果响应
|
||||
*/
|
||||
func (a *WsClient) waitForResult(e Event, timeOut int) (data interface{}, err error) {
|
||||
|
||||
@ -168,7 +168,7 @@ func (a *WsClient) waitForResult(e Event, timeOut int) (data interface{}, err er
|
||||
}
|
||||
|
||||
/*
|
||||
发送消息到服务端
|
||||
发送消息到服务端
|
||||
*/
|
||||
func (a *WsClient) Send(ctx context.Context, op WSReqData) (err error) {
|
||||
select {
|
||||
@ -293,8 +293,8 @@ func (a *WsClient) process(ctx context.Context, e Event, op WSReqData) (data []*
|
||||
}
|
||||
|
||||
/*
|
||||
根据args请求参数判断请求类型
|
||||
如:{"channel": "account","ccy": "BTC"} 类型为 EVENT_BOOK_ACCOUNT
|
||||
根据args请求参数判断请求类型
|
||||
如:{"channel": "account","ccy": "BTC"} 类型为 EVENT_BOOK_ACCOUNT
|
||||
*/
|
||||
func GetEventByParam(param map[string]string) (evtId Event) {
|
||||
evtId = EVENT_UNKNOWN
|
||||
@ -308,8 +308,8 @@ func GetEventByParam(param map[string]string) (evtId Event) {
|
||||
}
|
||||
|
||||
/*
|
||||
订阅频道。
|
||||
req:请求json字符串
|
||||
订阅频道。
|
||||
req:请求json字符串
|
||||
*/
|
||||
func (a *WsClient) Subscribe(param map[string]string, timeOut ...int) (res bool, detail *ProcessDetail, err error) {
|
||||
res = true
|
||||
@ -359,8 +359,8 @@ func (a *WsClient) Subscribe(param map[string]string, timeOut ...int) (res bool,
|
||||
}
|
||||
|
||||
/*
|
||||
取消订阅频道。
|
||||
req:请求json字符串
|
||||
取消订阅频道。
|
||||
req:请求json字符串
|
||||
*/
|
||||
func (a *WsClient) UnSubscribe(param map[string]string, timeOut ...int) (res bool, detail *ProcessDetail, err error) {
|
||||
res = true
|
||||
@ -408,7 +408,7 @@ func (a *WsClient) UnSubscribe(param map[string]string, timeOut ...int) (res boo
|
||||
}
|
||||
|
||||
/*
|
||||
jrpc请求
|
||||
jrpc请求
|
||||
*/
|
||||
func (a *WsClient) Jrpc(id, op string, params []map[string]interface{}, timeOut ...int) (res bool, detail *ProcessDetail, err error) {
|
||||
res = true
|
||||
|
@ -1,39 +1,39 @@
|
||||
package ws
|
||||
|
||||
import (
|
||||
. "v5sdk_go/ws/wImpl"
|
||||
. "github.com/phyer/v5sdkgo/ws/wImpl"
|
||||
)
|
||||
|
||||
/*
|
||||
订阅账户频道
|
||||
订阅账户频道
|
||||
*/
|
||||
func (a *WsClient) PrivAccout(op string, params []map[string]string, timeOut ...int) (res bool, msg []*Msg, err error) {
|
||||
return a.PubChannel(EVENT_BOOK_ACCOUNT, op, params, PERIOD_NONE, timeOut...)
|
||||
}
|
||||
|
||||
/*
|
||||
订阅持仓频道
|
||||
订阅持仓频道
|
||||
*/
|
||||
func (a *WsClient) PrivPostion(op string, params []map[string]string, timeOut ...int) (res bool, msg []*Msg, err error) {
|
||||
return a.PubChannel(EVENT_BOOK_POSTION, op, params, PERIOD_NONE, timeOut...)
|
||||
}
|
||||
|
||||
/*
|
||||
订阅订单频道
|
||||
订阅订单频道
|
||||
*/
|
||||
func (a *WsClient) PrivBookOrder(op string, params []map[string]string, timeOut ...int) (res bool, msg []*Msg, err error) {
|
||||
return a.PubChannel(EVENT_BOOK_ORDER, op, params, PERIOD_NONE, timeOut...)
|
||||
}
|
||||
|
||||
/*
|
||||
订阅策略委托订单频道
|
||||
订阅策略委托订单频道
|
||||
*/
|
||||
func (a *WsClient) PrivBookAlgoOrder(op string, params []map[string]string, timeOut ...int) (res bool, msg []*Msg, err error) {
|
||||
return a.PubChannel(EVENT_BOOK_ALG_ORDER, op, params, PERIOD_NONE, timeOut...)
|
||||
}
|
||||
|
||||
/*
|
||||
订阅账户余额和持仓频道
|
||||
订阅账户余额和持仓频道
|
||||
*/
|
||||
func (a *WsClient) PrivBalAndPos(op string, params []map[string]string, timeOut ...int) (res bool, msg []*Msg, err error) {
|
||||
return a.PubChannel(EVENT_BOOK_B_AND_P, op, params, PERIOD_NONE, timeOut...)
|
||||
|
@ -2,11 +2,11 @@ package ws
|
||||
|
||||
import (
|
||||
"errors"
|
||||
. "v5sdk_go/ws/wImpl"
|
||||
. "github.com/phyer/v5sdkgo/ws/wImpl"
|
||||
)
|
||||
|
||||
/*
|
||||
产品频道
|
||||
产品频道
|
||||
*/
|
||||
func (a *WsClient) PubInstruemnts(op string, params []map[string]string, timeOut ...int) (res bool, msg []*Msg, err error) {
|
||||
|
||||
@ -19,7 +19,7 @@ func (a *WsClient) PubStatus(op string, timeOut ...int) (res bool, msg []*Msg, e
|
||||
}
|
||||
|
||||
/*
|
||||
行情频道
|
||||
行情频道
|
||||
*/
|
||||
func (a *WsClient) PubTickers(op string, params []map[string]string, timeOut ...int) (res bool, msg []*Msg, err error) {
|
||||
|
||||
@ -27,14 +27,14 @@ func (a *WsClient) PubTickers(op string, params []map[string]string, timeOut ...
|
||||
}
|
||||
|
||||
/*
|
||||
持仓总量频道
|
||||
持仓总量频道
|
||||
*/
|
||||
func (a *WsClient) PubOpenInsterest(op string, params []map[string]string, timeOut ...int) (res bool, msg []*Msg, err error) {
|
||||
return a.PubChannel(EVENT_BOOK_OPEN_INTEREST, op, params, PERIOD_NONE, timeOut...)
|
||||
}
|
||||
|
||||
/*
|
||||
K线频道
|
||||
K线频道
|
||||
*/
|
||||
func (a *WsClient) PubKLine(op string, period Period, params []map[string]string, timeOut ...int) (res bool, msg []*Msg, err error) {
|
||||
|
||||
@ -42,7 +42,7 @@ func (a *WsClient) PubKLine(op string, period Period, params []map[string]string
|
||||
}
|
||||
|
||||
/*
|
||||
交易频道
|
||||
交易频道
|
||||
*/
|
||||
func (a *WsClient) PubTrade(op string, params []map[string]string, timeOut ...int) (res bool, msg []*Msg, err error) {
|
||||
|
||||
@ -50,7 +50,7 @@ func (a *WsClient) PubTrade(op string, params []map[string]string, timeOut ...in
|
||||
}
|
||||
|
||||
/*
|
||||
预估交割/行权价格频道
|
||||
预估交割/行权价格频道
|
||||
*/
|
||||
func (a *WsClient) PubEstDePrice(op string, params []map[string]string, timeOut ...int) (res bool, msg []*Msg, err error) {
|
||||
|
||||
@ -59,7 +59,7 @@ func (a *WsClient) PubEstDePrice(op string, params []map[string]string, timeOut
|
||||
}
|
||||
|
||||
/*
|
||||
标记价格频道
|
||||
标记价格频道
|
||||
*/
|
||||
func (a *WsClient) PubMarkPrice(op string, params []map[string]string, timeOut ...int) (res bool, msg []*Msg, err error) {
|
||||
|
||||
@ -67,7 +67,7 @@ func (a *WsClient) PubMarkPrice(op string, params []map[string]string, timeOut .
|
||||
}
|
||||
|
||||
/*
|
||||
标记价格K线频道
|
||||
标记价格K线频道
|
||||
*/
|
||||
func (a *WsClient) PubMarkPriceCandle(op string, pd Period, params []map[string]string, timeOut ...int) (res bool, msg []*Msg, err error) {
|
||||
|
||||
@ -75,7 +75,7 @@ func (a *WsClient) PubMarkPriceCandle(op string, pd Period, params []map[string]
|
||||
}
|
||||
|
||||
/*
|
||||
限价频道
|
||||
限价频道
|
||||
*/
|
||||
func (a *WsClient) PubLimitPrice(op string, params []map[string]string, timeOut ...int) (res bool, msg []*Msg, err error) {
|
||||
|
||||
@ -83,7 +83,7 @@ func (a *WsClient) PubLimitPrice(op string, params []map[string]string, timeOut
|
||||
}
|
||||
|
||||
/*
|
||||
深度频道
|
||||
深度频道
|
||||
*/
|
||||
func (a *WsClient) PubOrderBooks(op string, channel string, params []map[string]string, timeOut ...int) (res bool, msg []*Msg, err error) {
|
||||
|
||||
@ -109,7 +109,7 @@ func (a *WsClient) PubOrderBooks(op string, channel string, params []map[string]
|
||||
}
|
||||
|
||||
/*
|
||||
期权定价频道
|
||||
期权定价频道
|
||||
*/
|
||||
func (a *WsClient) PubOptionSummary(op string, params []map[string]string, timeOut ...int) (res bool, msg []*Msg, err error) {
|
||||
|
||||
@ -117,7 +117,7 @@ func (a *WsClient) PubOptionSummary(op string, params []map[string]string, timeO
|
||||
}
|
||||
|
||||
/*
|
||||
资金费率频道
|
||||
资金费率频道
|
||||
*/
|
||||
func (a *WsClient) PubFundRate(op string, params []map[string]string, timeOut ...int) (res bool, msg []*Msg, err error) {
|
||||
|
||||
@ -125,7 +125,7 @@ func (a *WsClient) PubFundRate(op string, params []map[string]string, timeOut ..
|
||||
}
|
||||
|
||||
/*
|
||||
指数K线频道
|
||||
指数K线频道
|
||||
*/
|
||||
func (a *WsClient) PubKLineIndex(op string, pd Period, params []map[string]string, timeOut ...int) (res bool, msg []*Msg, err error) {
|
||||
|
||||
@ -133,7 +133,7 @@ func (a *WsClient) PubKLineIndex(op string, pd Period, params []map[string]strin
|
||||
}
|
||||
|
||||
/*
|
||||
指数行情频道
|
||||
指数行情频道
|
||||
*/
|
||||
func (a *WsClient) PubIndexTickers(op string, params []map[string]string, timeOut ...int) (res bool, msg []*Msg, err error) {
|
||||
|
||||
|
@ -3,11 +3,11 @@ package ws
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
. "github.com/phyer/v5sdkgo/ws/wImpl"
|
||||
"log"
|
||||
"strings"
|
||||
"testing"
|
||||
"time"
|
||||
. "v5sdk_go/ws/wImpl"
|
||||
)
|
||||
|
||||
func prework() *WsClient {
|
||||
|
Loading…
x
Reference in New Issue
Block a user