From cd7061e108d347c70b51ebe03b0a3e989793ac89 Mon Sep 17 00:00:00 2001 From: linstohu Date: Wed, 29 Nov 2023 18:40:09 +0800 Subject: [PATCH] feat: update --- okx/publicdata/client.go | 27 ++++++++++++ okx/publicdata/types/tickers.go | 59 +++++++++++++++++++++++++++ okx/tradingaccount/types/positions.go | 8 ++-- 3 files changed, 90 insertions(+), 4 deletions(-) create mode 100644 okx/publicdata/types/tickers.go diff --git a/okx/publicdata/client.go b/okx/publicdata/client.go index 7a9550c..de8de75 100644 --- a/okx/publicdata/client.go +++ b/okx/publicdata/client.go @@ -83,3 +83,30 @@ func (p *PublicDataClient) GetInstruments(ctx context.Context, param types.GetIn return &ret, nil } + +func (p *PublicDataClient) GetMarketTickers(ctx context.Context, param types.GetMarketTickersParam) (*types.GetMarketTickersResp, error) { + req := okxutils.HTTPRequest{ + BaseURL: p.GetBaseURL(), + Path: "/api/v5/market/tickers", + Method: http.MethodGet, + Query: param, + } + + headers, err := p.GenPubHeaders() + if err != nil { + return nil, err + } + req.Headers = headers + + resp, err := p.SendHTTPRequest(ctx, req) + if err != nil { + return nil, err + } + + var ret types.GetMarketTickersResp + if err := json.Unmarshal(resp, &ret); err != nil { + return nil, err + } + + return &ret, nil +} diff --git a/okx/publicdata/types/tickers.go b/okx/publicdata/types/tickers.go new file mode 100644 index 0000000..5447bb9 --- /dev/null +++ b/okx/publicdata/types/tickers.go @@ -0,0 +1,59 @@ +/* + * Copyright (c) 2023, LinstoHu + * All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package types + +import okxutils "github.com/linstohu/nexapi/okx/utils" + +type GetMarketTickersParam struct { + InstType InstrumentType `url:"instType,omitempty" validate:"omitempty,oneof=SPOT SWAP FUTURES OPTION"` + Uly string `url:"uly,omitempty"` + InstFamily string `url:"instFamily,omitempty"` +} + +type InstrumentType = string + +const ( + Spot = "SPOT" + Swap = "SWAP" + Futures = "FUTURES" + Option = "OPTION" +) + +type GetMarketTickersResp struct { + okxutils.Response + Data []*MarketTicker `json:"data"` +} + +type MarketTicker struct { + InstType string `json:"instType,string"` + InstID string `json:"instId"` + Last string `json:"last"` + LastSz string `json:"lastSz"` + AskPx string `json:"askPx"` + AskSz string `json:"askSz"` + BidPx string `json:"bidPx"` + BidSz string `json:"bidSz"` + Open24h string `json:"open24h"` + High24h string `json:"high24h"` + Low24h string `json:"low24h"` + VolCcy24h string `json:"volCcy24h"` + Vol24h string `json:"vol24h"` + SodUtc0 string `json:"sodUtc0"` + SodUtc8 string `json:"sodUtc8"` + TS string `json:"ts"` +} diff --git a/okx/tradingaccount/types/positions.go b/okx/tradingaccount/types/positions.go index a61caa1..5a6cfa6 100644 --- a/okx/tradingaccount/types/positions.go +++ b/okx/tradingaccount/types/positions.go @@ -20,12 +20,12 @@ package types import okxutils "github.com/linstohu/nexapi/okx/utils" type GetPositionsParam struct { - InstType InstrumentType `url:"instType,omitempty" validate:"omitempty,oneof=MARGIN SWAP FUTURES OPTION"` - InstId string `url:"instId,omitempty"` - PosId string `url:"posId,omitempty"` + InstType PosInstType `url:"instType,omitempty" validate:"omitempty,oneof=MARGIN SWAP FUTURES OPTION"` + InstId string `url:"instId,omitempty"` + PosId string `url:"posId,omitempty"` } -type InstrumentType = string +type PosInstType = string const ( Margin = "MARGIN"