95 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
		
		
			
		
	
	
			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
							 | 
						||
| 
								 | 
							
								}
							 |