v2_rest_行情.go 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. package yu_bitget
  2. type Contracts struct {
  3. Symbol string `json:"symbol"` // 产品名称
  4. BaseCoin string `json:"baseCoin"` // 基础币,如 ETHUSDT 中,特指ETH
  5. QuoteCoin string `json:"quoteCoin"` // 计价币,如 ETHUSDT 中,特指USDT
  6. BuyLimitPriceRatio string `json:"buyLimitPriceRatio"` // 买价限价比例
  7. SellLimitPriceRatio string `json:"sellLimitPriceRatio"` // 卖价限价比例
  8. FeeRateUpRatio string `json:"feeRateUpRatio"` // 手续费上浮比例
  9. MakerFeeRate string `json:"makerFeeRate"` // Maker手续费率
  10. TakerFeeRate string `json:"takerFeeRate"` // Taker手续费率
  11. OpenCostUpRatio string `json:"openCostUpRatio"` // 开仓成本上浮比例
  12. SupportMarginCoins []string `json:"supportMarginCoins"` // 支持保证金币种
  13. MinTradeNum string `json:"minTradeNum"` // 最小开单数量(基础币)
  14. PriceEndStep string `json:"priceEndStep"` // 价格步长
  15. VolumePlace string `json:"volumePlace"` // 数量小数位
  16. PricePlace string `json:"pricePlace"` // 价格小数位
  17. SizeMultiplier string `json:"sizeMultiplier"` // 下单数量要大于 minTradeNum 并且满足 sizeMultiplier 的倍数
  18. SymbolType string `json:"symbolType"` // 合约类型,perpetual 永续,delivery 交割
  19. MinTradeUSDT string `json:"minTradeUSDT"` // 最小USDT交易额
  20. MaxSymbolOrderNum string `json:"maxSymbolOrderNum"` // 最大持有订单数(symbol维度)
  21. MaxProductOrderNum string `json:"maxProductOrderNum"` // 最大持有订单数(产品类型维度)
  22. MaxPositionNum string `json:"maxPositionNum"` // 最大持有仓位数量
  23. SymbolStatus string `json:"symbolStatus"` // 交易对状态,listed 上架,normal 正常/开盘,maintain 禁止交易
  24. OffTime string `json:"offTime"` // 下架时间,'-1' 表示正常
  25. LimitOpenTime string `json:"limitOpenTime"` // 可开仓时间,'-1' 表示正常
  26. DeliveryTime string `json:"deliveryTime"` // 交割时间
  27. DeliveryStartTime string `json:"deliveryStartTime"` // 交割开始时间
  28. LaunchTime string `json:"launchTime"` // 上架时间
  29. FundInterval string `json:"fundInterval"` // 资金费结算周期
  30. MinLever string `json:"minLever"` // 最小杠杆
  31. MaxLever string `json:"maxLever"` // 最大杠杆
  32. PosLimit string `json:"posLimit"` // 持仓限制
  33. MaintainTime string `json:"maintainTime"` // 维护时间(状态处于维护/即将维护时会有值)
  34. }
  35. // Contracts 获取合约信息
  36. //
  37. // @Description:
  38. // @param productType 产品类型
  39. // @param symbol 交易币对
  40. func (t *V2Rest) Contracts(productType ProductType, symbol string) *Contracts {
  41. j_path, j_resp := "/api/v2/mix/market/contracts?productType="+string(productType)+"&symbol="+symbol, make([]*Contracts, 0)
  42. if t.request("GET", j_path, nil, &j_resp) {
  43. return j_resp[0]
  44. }
  45. return nil
  46. }
  47. type SymbolPrice struct {
  48. Symbol string `json:"symbol"` // 币对名称,如:"BTCUSDT"
  49. Price string `json:"price"` // 最新成交价格
  50. IndexPrice string `json:"indexPrice"` // 指数价格
  51. MarkPrice string `json:"markPrice"` // 标记价格
  52. Timestamp string `json:"ts"` // 当前数据时间戳,Unix时间戳的毫秒数格式,如1672410780000
  53. }
  54. // SymbolPrice 获取交易对市价/指数/标记价格
  55. //
  56. // @Description:
  57. // @param productType 产品类型
  58. // @param symbol 交易币对
  59. func (t *V2Rest) SymbolPrice(productType ProductType, symbol string) *SymbolPrice {
  60. j_path, j_resp := "/api/v2/mix/market/symbol-price?productType="+string(productType)+"&symbol="+symbol, make([]*SymbolPrice, 0)
  61. if t.request("GET", j_path, nil, &j_resp) {
  62. return j_resp[0]
  63. }
  64. return nil
  65. }
  66. type CurrentFundRate struct {
  67. Symbol string `json:"symbol"` // 币对名称,如:"BTCUSDT"
  68. FundingRate string `json:"fundingRate"` // 当前资金费率
  69. }
  70. // CurrentFundRate 获取当前资金费率
  71. //
  72. // @Description:
  73. // @param productType 产品类型
  74. // @param symbol 交易币对
  75. func (t *V2Rest) CurrentFundRate(productType ProductType, symbol string) *CurrentFundRate {
  76. j_path, j_resp := "/api/v2/mix/market/current-fund-rate?productType="+string(productType)+"&symbol="+symbol, make([]*CurrentFundRate, 0)
  77. if t.request("GET", j_path, nil, &j_resp) {
  78. return j_resp[0]
  79. }
  80. return nil
  81. }
  82. type HistoryCandlesArgs struct {
  83. Symbol string `json:"symbol"` // 交易币对名称
  84. ProductType ProductType `json:"productType"` // 产品类型
  85. Granularity Granularity `json:"granularity"` // K线粒度
  86. // 开始时间,查询该时间之后的K线
  87. // Unix时间戳的毫秒数格式,如1672410780000
  88. // 最大查询范围为90天
  89. StartTime string `json:"startTime,omitempty"`
  90. // 结束时间,查询该时间之前的K线
  91. // Unix时间戳的毫秒数格式,如1672410780000
  92. // 最大查询范围为90天
  93. EndTime string `json:"endTime,omitempty"`
  94. // 数据条数限制
  95. // 默认100,最大200
  96. Limit string `json:"limit,omitempty"`
  97. }
  98. type Granularity string
  99. const (
  100. G1m Granularity = "1m" // 1分钟
  101. G3m Granularity = "3m" // 3分钟
  102. G5m Granularity = "5m" // 5分钟
  103. G15m Granularity = "15m" // 15分钟
  104. G30m Granularity = "30m" // 30分钟
  105. G1H Granularity = "1H" // 1小时
  106. G4H Granularity = "4H" // 4小时
  107. G6H Granularity = "6H" // 6小时
  108. G12H Granularity = "12H" // 12小时
  109. G1D Granularity = "1D" // 1天
  110. G3D Granularity = "3D" // 3天
  111. G1W Granularity = "1W" // 1周
  112. G1M Granularity = "1M" // 月线
  113. G6Hutc Granularity = "6Hutc" // 零时区 6小时线
  114. G12Hutc Granularity = "12Hutc" // 零时区12小时线
  115. G1Dutc Granularity = "1Dutc" // 零时区 1日线
  116. G3Dutc Granularity = "3Dutc" // 零时区 3日线
  117. G1Wutc Granularity = "1Wutc" // 零时区 周线
  118. G1Mutc Granularity = "1Mutc" // 零时区 月线
  119. )
  120. // HistoryCandles
  121. //
  122. // [0] = 时间戳, Unix时间戳的毫秒数格式,如 1597026383085
  123. // [1] = 开盘价
  124. // [2] = 最高价
  125. // [3] = 最低价
  126. // [4] = 收盘价(只包含已完结K线)
  127. // [5] = 交易币成交量
  128. // [6] = 计价币成交量
  129. type HistoryCandles [7]string
  130. // HistoryCandles 合约历史k线
  131. func (t *V2Rest) HistoryCandles(args HistoryCandlesArgs) []*HistoryCandles {
  132. j_path, j_resp := "/api/v2/mix/market/history-candles?productType="+string(args.ProductType)+
  133. "&symbol="+args.Symbol+"&granularity="+string(args.Granularity)+
  134. "&startTime="+args.StartTime+"&endTime="+args.EndTime+
  135. "&limit="+args.Limit,
  136. make([]*HistoryCandles, 0)
  137. t.request("GET", j_path, nil, &j_resp)
  138. return j_resp
  139. }