feat: implement coinank openapi netPositions interface (#1258)

- implement Net long & Net short interface
This commit is contained in:
wqqqqqq
2025-12-23 00:06:14 +08:00
committed by GitHub
parent d8aeba6906
commit c328e23278
2 changed files with 71 additions and 0 deletions
+46
View File
@@ -0,0 +1,46 @@
package coinank
import (
"context"
"encoding/json"
"nofx/provider/coinank/coinank_enum"
"strconv"
)
// NetPositions Net long & Net short
func (c *CoinankClient) NetPositions(ctx context.Context, exchange coinank_enum.Exchange,
symbol string, interval coinank_enum.Interval, endTime int64, size int) ([]NetPositionsResponse, error) {
paramsMap := make(map[string]string, 5)
paramsMap["exchange"] = string(exchange)
paramsMap["symbol"] = symbol
paramsMap["interval"] = string(interval)
paramsMap["endTime"] = strconv.FormatInt(endTime, 10)
if size < 1 {
size = 10
}
paramsMap["size"] = strconv.Itoa(size)
resp, err := c.Get(ctx, "/api/netPositions/getNetPositions", paramsMap)
if err != nil {
return nil, err
}
var result CoinankResponse[[]NetPositionsResponse]
err = json.Unmarshal([]byte(resp), &result)
if err != nil {
return nil, err
}
if !result.Success {
return nil, HttpError
}
return result.Data, nil
}
type NetPositionsResponse struct {
Begin int64 `json:"begin"` // begin timestamp
Interval string `json:"interval"`
NetLongsHigh int `json:"netLongsHigh"` // net long high
NetLongsClose int `json:"netLongsClose"` // net long close
NetLongsLow int `json:"netLongsLow"` // net long close
NetShortsClose int `json:"netShortsClose"` // net short close
NetShortsHigh int `json:"netShortsHigh"` // net short high
NetShortsLow int `json:"netShortsLow"` // net short low
}
+25
View File
@@ -0,0 +1,25 @@
package coinank
import (
"context"
"encoding/json"
"nofx/provider/coinank/coinank_enum"
"testing"
"time"
)
func TestNetPositions(t *testing.T) {
client := NewCoinankClient(coinank_enum.MainUrl, TestApikey)
resp, err := client.NetPositions(context.TODO(), coinank_enum.Binance, "BTCUSDT", coinank_enum.Hour1, time.Now().UnixMilli(), 10)
if err != nil {
t.Fatal(err)
}
if resp[0].Begin <= 0 {
t.Errorf("begin timestamp error")
}
res, err := json.Marshal(resp)
if err != nil {
t.Error(err)
}
t.Logf("%s", res)
}