Files
exchange_go/services/excservice/apibuild.go
2025-02-06 11:14:33 +08:00

95 lines
3.0 KiB
Go

package excservice
import (
"go-admin/pkg/httputils"
"github.com/bytedance/sonic"
"go.uber.org/zap"
log "github.com/go-admin-team/go-admin-core/logger"
)
var (
// DefaultHttpClientConfig = &HttpClientConfig{
// Proxy: nil,
// HttpTimeout: 5 * time.Second,
// MaxIdleConns: 10}
)
var (
timeOffset int64 = 0
)
//var INERNAL_KLINE_PERIOD_CONVERTER = map[int]string{
// models.KLINE_1MIN: "1m",
// models.KLINE_3MIN: "3m",
// models.KLINE_5MIN: "5m",
// models.KLINE_15MIN: "15m",
// models.KLINE_30MIN: "30m",
// models.KLINE_60MIN: "1h",
// //models.KLINE_1H: "1h",
// models.KLINE_2H: "2h",
// models.KLINE_4H: "4h",
// models.KLINE_6H: "6h",
// models.KLINE_8H: "8h",
// models.KLINE_12H: "12h",
// models.KLINE_1DAY: "1d",
// models.KLINE_3DAY: "3d",
// models.KLINE_1WEEK: "1w",
// models.KLINE_1MONTH: "1M",
//}
type Filter struct {
FilterType string `json:"filterType"`
MaxPrice string `json:"maxPrice"`
MinPrice string `json:"minPrice"`
TickSize string `json:"tickSize"`
MultiplierUp string `json:"multiplierUp,string"`
MultiplierDown string `json:"multiplierDown,string"`
MinQty string `json:"minQty"`
MaxQty string `json:"maxQty"`
StepSize string `json:"stepSize"`
MinNotional string `json:"minNotional"`
}
//
//type RateLimit struct {
// Interval string `json:"interval"`
// IntervalNum int64 `json:"intervalNum"`
// Limit int64 `json:"limit"`
// RateLimitType string `json:"rateLimitType"`
//}
type TradeSymbol struct {
Symbol string `json:"symbol"`
Status string `json:"status"`
BaseAsset string `json:"baseAsset"` //基础币种
QuoteAsset string `json:"quoteAsset"` //计价币种
BaseAssetPrecision int `json:"baseAssetPrecision"` //基础币种小数点位数
QuotePrecision int `json:"quotePrecision"` //价格小数点位数 添加新字段 quoteAssetPrecision。此字段和 quotePrecision 重复。在未来的版本(v4)中 quotePrecision 会被移除
QuoteAssetPrecision int `json:"quoteAssetPrecision"` //
BaseCommissionPrecision int `json:"baseCommissionPrecision"`
QuoteCommissionPrecision int `json:"quoteCommissionPrecision"`
OrderTypes []string `json:"orderTypes"`
Filters []Filter `json:"filters"`
}
type ExchangeInfo struct {
Timezone string `json:"timezone"`
ServerTime int `json:"serverTime"`
//ExchangeFilters []interface{} `json:"exchangeFilters,omitempty"`
//RateLimits []RateLimit `json:"rateLimits"`
Symbols []TradeSymbol `json:"symbols"`
}
// 获取exchangeInfo
func GetExchangeInfoPro() ([]TradeSymbol, error) {
respData, err := httputils.NewHttpRequestWithFasthttp("GET", apiUrl+"/api/v3/exchangeInfo", "", nil)
if err != nil {
log.Error("获取exchangeInfo", zap.Error(err))
return nil, err
}
var info ExchangeInfo
sonic.Unmarshal(respData, &info)
return info.Symbols, nil
}