v5_priapi_生态贸易.go 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284
  1. package yu_okx
  2. import yu_strconv "gogs.qqck.cn/s/tools/strconv"
  3. type EcotradePublicTrade_expert_rate struct {
  4. DataVersion string `json:"dataVersion"`
  5. Pages int `json:"pages"`
  6. Ranks []struct {
  7. FansNum string `json:"fansNum"`
  8. FollowStatus string `json:"followStatus"`
  9. LongLever string `json:"longLever"`
  10. MaxRetreat string `json:"maxRetreat"`
  11. NickName string `json:"nickName"`
  12. Portrait string `json:"portrait"`
  13. Rates []struct {
  14. Ratio string `json:"ratio"`
  15. StatTime string `json:"statTime"`
  16. } `json:"rates"`
  17. RiskLevel string `json:"riskLevel"`
  18. RoleType string `json:"roleType"`
  19. ShortLever string `json:"shortLever"`
  20. SignalRoleType string `json:"signalRoleType"`
  21. SpotRoleType string `json:"spotRoleType"`
  22. StrategyRoleType string `json:"strategyRoleType"`
  23. TargetId string `json:"targetId"`
  24. UniqueName string `json:"uniqueName"`
  25. YieldRate string `json:"yieldRate"`
  26. } `json:"ranks"`
  27. Total int `json:"total"`
  28. }
  29. // EcotradePublicTrade_expert_rate
  30. //
  31. // @Description: 获取牛人榜
  32. // @param size 分页大小
  33. // @param num 页数索引,从 1 开始
  34. func (t *V5Priapi) EcotradePublicTrade_expert_rate(size string, num string) []*EcotradePublicTrade_expert_rate {
  35. j_path, j_resp := "/priapi/v5/ecotrade/public/trade-expert-rate?size="+size+"&num="+num+"&sort=desc", make([]*EcotradePublicTrade_expert_rate, 0)
  36. if !t.request("GET", j_path, nil, &j_resp) {
  37. return nil
  38. }
  39. return j_resp
  40. }
  41. type EcotradePublicPosition_summary struct {
  42. AvailSubPos string `json:"availSubPos"` // 持仓量
  43. Ccy string `json:"ccy"` // 币种(保证金币种?)
  44. ClosePnl string `json:"closePnl"`
  45. DealVolume string `json:"dealVolume"`
  46. DetailIds string `json:"detailIds"` // 开仓明细IDs
  47. Fee string `json:"fee"` // 累计手续费金额,正数代表平台返佣 ,负数代表平台扣除
  48. FundingFee string `json:"fundingFee"` // 累计资金费用(已实现收益 = fundingFee + fee)
  49. Imr string `json:"imr"` // 保证金
  50. InstId string `json:"instId"` // 产品ID
  51. InstType string `json:"instType"` // 产品类型,MARGIN:币币杠杆,SWAP:永续合约,FUTURES:交割合约,OPTION:期权
  52. Last string `json:"last"` // 最新成交价
  53. Lever string `json:"lever"` // 杠杆倍数
  54. LiquidationFee string `json:"liquidationFee"` // 强平价?
  55. Margin string `json:"margin"`
  56. MarkPx string `json:"markPx"` // 最新标记价格
  57. MaxSellableAmount string `json:"maxSellableAmount"` // 最大可卖出张数
  58. MgnMode string `json:"mgnMode"` // 保证金模式,cross:全仓,isolated:逐仓
  59. NotionalUsd string `json:"notionalUsd"`
  60. OpenAvgPx string `json:"openAvgPx"` // 开仓均价
  61. OpenTime string `json:"openTime"` // 开仓时间
  62. Pnl string `json:"pnl"` // 浮动收益额
  63. PnlRatio string `json:"pnlRatio"` // 浮动收益率
  64. PosSide string `json:"posSide"` // 持仓方向,long:开平仓模式开多,pos为正,short:开平仓模式开空,pos为正,net:买卖模式(交割/永续/期权:pos为正代表开多,pos为负代表开空。币币杠杆时,pos均为正,posCcy为交易货币时,代表开多;posCcy为计价货币时,代表开空。)
  65. PosType string `json:"posType"` // 限仓类型,仅适用于组合保证金模式下的期权全仓。1:所有合约挂单 + 持仓张数,2:所有合约总挂单张数,3:所有合约总挂单单数,4:同方向合约挂单 + 持仓张数,5:单一合约总挂单单数,6:单一合约挂单 + 持仓张数,7:单笔挂单张数"
  66. Side string `json:"side"` // 订单方向,buy:买, sell:卖
  67. SubPos string `json:"subPos"` // 持仓张数
  68. TradeItemId string `json:"tradeItemId"` // 贸易项目Id
  69. UTime string `json:"uTime"` // 账户信息的更新时间,Unix时间戳的毫秒数格式,如 1718092801068
  70. UniqueName string `json:"uniqueName"`
  71. }
  72. // EcotradePublicPosition_summary
  73. //
  74. // @Description: 获取当前带单
  75. // @param uniqueName 唯一名称
  76. func (t *V5Priapi) EcotradePublicPosition_summary(instType InstType, uniqueName string) []*EcotradePublicPosition_summary {
  77. j_path, j_resp := "/priapi/v5/ecotrade/public/position-summary?instType="+string(instType)+"&uniqueName="+uniqueName, make([]*EcotradePublicPosition_summary, 0)
  78. // {"code":"0","data":[{"availSubPos":"4000","ccy":"USDT","closePnl":"0","dealVolume":"","detailIds":"717132209086603264,717014968487714816","fee":"-0.7604","fundingFee":"-19.1201044437776822","imr":"331.12","instId":"YGG-USDT-SWAP","instType":"SWAP","last":"0.8282","lever":"10","liquidationFee":"0","margin":"380.2","markPx":"0.8278","maxSellableAmount":"4000","mgnMode":"cross","notionalUsd":"3310.86888","openAvgPx":"0.9505","openTime":"1717221689981","pnl":"-490.8","pnlRatio":"-1.290899526564966","posSide":"long","posType":"3","side":"buy","subPos":"4000","tradeItemId":"667789928084258856_0","uTime":"1718092801068","uniqueName":"316EB79577E71F64"},{"availSubPos":"3700","ccy":"USDT","closePnl":"0","dealVolume":"","detailIds":"720572316288360448,719194196712955904,698994152353374208,698986384095518720,698636000462184448","fee":"-2.0872758","fundingFee":"382.0574740996549147","imr":"265.253","instId":"AEVO-USDT-SWAP","instType":"SWAP","last":"0.7166","lever":"10","liquidationFee":"0","margin":"563.55","markPx":"0.7169","maxSellableAmount":"0","mgnMode":"cross","notionalUsd":"2652.264747","openAvgPx":"1.5231081081081081","openTime":"1712839802539","pnl":"-2982.97","pnlRatio":"-5.293177180374412","posSide":"long","posType":"3","side":"buy","subPos":"3700","tradeItemId":"690123857071951872_0","uTime":"1718092805289","uniqueName":"316EB79577E71F64"}],"msg":""}
  79. if !t.request("GET", j_path, nil, &j_resp) {
  80. return nil
  81. }
  82. return j_resp
  83. }
  84. type EcotradePublicasset struct {
  85. Currency string `json:"currency"` // 币种
  86. Percent string `json:"percent"` // 百分比
  87. }
  88. // EcotradePublicAsset
  89. //
  90. // @Description: 获取投资组合
  91. // @param uniqueName 唯一名称
  92. func (t *V5Priapi) EcotradePublicAsset(uniqueName string) []*EcotradePublicasset {
  93. j_path, j_resp := "/priapi/v5/ecotrade/public/asset?uniqueName="+uniqueName, make([]*EcotradePublicasset, 0)
  94. if !t.request("GET", j_path, nil, &j_resp) {
  95. return nil
  96. }
  97. return j_resp
  98. }
  99. type EcotradePublicPositions struct {
  100. Alias string `json:"alias"`
  101. AvgPx string `json:"avgPx"` // 开仓平均价
  102. CTime string `json:"cTime"` // 持仓创建时间,Unix时间戳的毫秒数格式,如 1597026383085
  103. InstId string `json:"instId"` // 产品ID
  104. InstType string `json:"instType"` // 产品类型,MARGIN:币币杠杆,SWAP:永续合约,FUTURES:交割合约,OPTION:期权
  105. Lever string `json:"lever"` // 杠杆倍数
  106. LiqPx string `json:"liqPx"` // 预估强平价,不适用于期权
  107. MgnMode string `json:"mgnMode"` // 保证金模式,cross:全仓,isolated:逐仓
  108. Pos string `json:"pos"` // 以张为单位的持仓数量
  109. PosCcy string `json:"posCcy"` // 仓位资产币种,仅适用于币币杠杆仓位
  110. PosSide string `json:"posSide"` // 持仓方向,long:开平仓模式开多,short:开平仓模式开空,net:买卖模式(交割/永续/期权:pos为正代表开多,pos为负代表开空。币币杠杆:posCcy为交易货币时,代表开多;posCcy为计价货币时,代表开空。)
  111. PosSpace string `json:"posSpace"` // 持仓仓位百分比
  112. UplRatio string `json:"uplRatio"` // 未实现收益率(以标记价格计算)
  113. }
  114. // EcotradePublicPositions
  115. //
  116. // @Description: 获取当前持仓(旧接口)
  117. // @param uniqueName 唯一名称
  118. // @param limit 分页返回的结果集数量,最大为100,不填默认返回100条
  119. // @param after 请求此时间戳之前(更旧的数据)的分页内容,Unix时间戳的毫秒数格式,如 1597026383085,不填默认当前时间
  120. func (t *V5Priapi) EcotradePublicPositions(uniqueName string, limit int, after int64) []*EcotradePublicPositions {
  121. j_path, j_resp := "/priapi/v5/ecotrade/public/positions?uniqueName="+uniqueName, make([]*EcotradePublicPositions, 0)
  122. if limit > 0 && limit <= 100 {
  123. j_path += "&limit=" + yu_strconv.FormatInt(limit)
  124. }
  125. if after > 0 {
  126. j_path += "&after=" + yu_strconv.FormatInt64(after)
  127. }
  128. if !t.request("GET", j_path, nil, &j_resp) {
  129. return nil
  130. }
  131. return j_resp
  132. }
  133. type EcotradePublicPositions_v2 struct {
  134. LongLever string `json:"longLever"` // 仓位(多),百分比?
  135. PosData []struct {
  136. Alias string `json:"alias"`
  137. AvgPx string `json:"avgPx"` // 开仓平均价
  138. CTime string `json:"cTime"` // 持仓创建时间,Unix时间戳的毫秒数格式,如 1597026383085
  139. InstId string `json:"instId"` // 产品ID
  140. InstType string `json:"instType"` // 产品类型,MARGIN:币币杠杆,SWAP:永续合约,FUTURES:交割合约,OPTION:期权
  141. Lever string `json:"lever"` // 杠杆倍数
  142. LiqPx string `json:"liqPx"` // 预估强平价,不适用于期权
  143. MgnMode string `json:"mgnMode"` // 保证金模式,cross:全仓,isolated:逐仓
  144. Pos string `json:"pos"` // 以张为单位的持仓数量
  145. PosCcy string `json:"posCcy"` // 仓位资产币种,仅适用于币币杠杆仓位
  146. PosSide string `json:"posSide"` // 持仓方向,long:开平仓模式开多,short:开平仓模式开空,net:买卖模式(交割/永续/期权:pos为正代表开多,pos为负代表开空。币币杠杆:posCcy为交易货币时,代表开多;posCcy为计价货币时,代表开空。)
  147. PosSpace string `json:"posSpace"` // 持仓仓位百分比
  148. UplRatio string `json:"uplRatio"` // 未实现收益率(以标记价格计算)
  149. } `json:"posData"`
  150. ShortLever string `json:"shortLever"` // 仓位(空),百分比?
  151. }
  152. // EcotradePublicPositions_v2
  153. //
  154. // @Description: 获取当前持仓
  155. // @param uniqueName 唯一名称
  156. // @param limit 分页返回的结果集数量,最大为100,不填默认返回100条
  157. // @param after 请求此时间戳之前(更旧的数据)的分页内容,Unix时间戳的毫秒数格式,如 1597026383085,不填默认当前时间
  158. func (t *V5Priapi) EcotradePublicPositions_v2(uniqueName string, limit int, after int64) []*EcotradePublicPositions_v2 {
  159. j_path, j_resp := "/priapi/v5/ecotrade/public/positions-v2?uniqueName="+uniqueName, make([]*EcotradePublicPositions_v2, 0)
  160. if limit > 0 && limit <= 100 {
  161. j_path += "&limit=" + yu_strconv.FormatInt(limit)
  162. }
  163. if after > 0 {
  164. j_path += "&after=" + yu_strconv.FormatInt64(after)
  165. }
  166. if !t.request("GET", j_path, nil, &j_resp) {
  167. return nil
  168. }
  169. return j_resp
  170. }
  171. type EcotradePublicHistory_positions struct {
  172. Alias string `json:"alias"`
  173. CTime string `json:"cTime"`
  174. CloseAvgPx string `json:"closeAvgPx"`
  175. CloseUplRatio string `json:"closeUplRatio"`
  176. CtVal string `json:"ctVal"`
  177. InstFamily string `json:"instFamily"`
  178. InstId string `json:"instId"`
  179. InstType string `json:"instType"`
  180. Lever string `json:"lever"`
  181. MgnMode string `json:"mgnMode"`
  182. OpenAvgPx string `json:"openAvgPx"`
  183. PosId string `json:"posId"`
  184. PosSide string `json:"posSide"`
  185. UTime string `json:"uTime"`
  186. Uly string `json:"uly"`
  187. }
  188. // EcotradePublicHistory_positions
  189. //
  190. // @Description: 获取历史持仓
  191. // @param uniqueName 唯一名称
  192. // @param limit 分页返回的结果集数量,最大为100,不填默认返回100条
  193. // @param after 请求此时间戳之前(更旧的数据)的分页内容,Unix时间戳的毫秒数格式,如 1597026383085,不填默认当前时间
  194. func (t *V5Priapi) EcotradePublicHistory_positions(uniqueName string, limit int, after int64) []*EcotradePublicHistory_positions {
  195. j_path, j_resp := "/priapi/v5/ecotrade/public/history-positions?uniqueName="+uniqueName, make([]*EcotradePublicHistory_positions, 0)
  196. if limit > 0 && limit <= 100 {
  197. j_path += "&limit=" + yu_strconv.FormatInt(limit)
  198. }
  199. if after > 0 {
  200. j_path += "&after=" + yu_strconv.FormatInt64(after)
  201. }
  202. if !t.request("GET", j_path, nil, &j_resp) {
  203. return nil
  204. }
  205. return j_resp
  206. }
  207. type EcotradePublicTrade_records struct {
  208. Alias string `json:"alias"`
  209. AvgPx string `json:"avgPx"` // 操作平均价
  210. BaseName string `json:"baseName"`
  211. CTime string `json:"cTime"` // 订单创建时间
  212. FillTime string `json:"fillTime"` // 订单成交时间
  213. InstFamily string `json:"instFamily"` // 交易品种,适用于交割/永续/期权
  214. InstId string `json:"instId"` // 产品ID
  215. InstType string `json:"instType"` // 产品类型,MARGIN:币币杠杆,SWAP:永续合约,FUTURES:交割合约,OPTION:期权
  216. Lever string `json:"lever"` // 杠杆倍数
  217. NickName string `json:"nickName"`
  218. OrdId string `json:"ordId"` // 订单ID
  219. OrdType string `json:"ordType"` // 订单类型,market:市价单,limit:限价单,post_only:只做maker单,fok:全部成交或立即取消,ioc:立即成交并取消剩余,optimal_limit_ioc:市价委托立即成交并取消剩余(仅适用交割、永续),mmp:做市商保护(仅适用于组合保证金账户模式下的期权订单),mmp_and_post_only:做市商保护且只做maker单(仅适用于组合保证金账户模式下的期权订单)
  220. PosSide string `json:"posSide"` // 持仓方向,long:开平仓模式开多,short:开平仓模式开空,net:买卖模式(交割/永续/期权:pos为正代表开多,pos为负代表开空。币币杠杆:posCcy为交易货币时,代表开多;posCcy为计价货币时,代表开空。)
  221. Px string `json:"px"` // 委托价格,仅适用于limit、post_only、fok、ioc、mmp、mmp_and_post_only类型的订单
  222. QuoteName string `json:"quoteName"` // 委托单保证金产品名称
  223. Side string `json:"side"` // 订单方向,buy:买, sell:卖
  224. UTime string `json:"uTime"` // 账户信息的更新时间,Unix时间戳的毫秒数格式,如 1718092801068
  225. Uly string `json:"uly"` // 标的指数,如 BTC-USD,仅适用于杠杆/交割/永续/期权
  226. UniqueName string `json:"uniqueName"` // 唯一名称
  227. }
  228. // EcotradePublicTrade_records
  229. //
  230. // @Description: 获取操作记录
  231. // @param uniqueName 唯一名称
  232. // @param limit 分页返回的结果集数量,最大为100,不填默认返回10条
  233. // @param startModify 请求此时间戳之后的分页内容,Unix时间戳的毫秒数格式,如 1597026383085,不填默认当前时间
  234. // @param endModify 请求此时间戳之前的分页内容,Unix时间戳的毫秒数格式,如 1597026383085,不填默认无限
  235. func (t *V5Priapi) EcotradePublicTrade_records(uniqueName string, limit int, startModify int64, endModify int64) []*EcotradePublicTrade_records {
  236. // https://www.okx.com/priapi/v5/ecotrade/public/trade-records?limit=20&startModify=1710259200000&endModify=1718294399000&uniqueName=7C27B64E785275BA&t=1718283609219
  237. j_path, j_resp := "/priapi/v5/ecotrade/public/trade-records?uniqueName="+uniqueName, make([]*EcotradePublicTrade_records, 0)
  238. if limit > 0 && limit <= 100 {
  239. j_path += "&limit=" + yu_strconv.FormatInt(limit)
  240. }
  241. if startModify > 0 {
  242. j_path += "&startModify=" + yu_strconv.FormatInt64(startModify)
  243. }
  244. if endModify > 0 {
  245. j_path += "&endModify=" + yu_strconv.FormatInt64(endModify)
  246. }
  247. if !t.request("GET", j_path, nil, &j_resp) {
  248. return nil
  249. }
  250. return j_resp
  251. }
  252. type EcotradePublicTotal_pnl struct {
  253. Ratio string `json:"ratio"` // 收益率
  254. StatTime string `json:"statTime"` // 统计时间
  255. }
  256. // EcotradePublicTotal_pnl
  257. //
  258. // @Description: 获取收益率走势
  259. // @param uniqueName 唯一名称
  260. func (t *V5Priapi) EcotradePublicTotal_pnl(uniqueName string) []*EcotradePublicTotal_pnl {
  261. // https://www.okx.com/priapi/v5/ecotrade/public/total-pnl?uniqueName=1775DD3AF3FA883E
  262. j_path, j_resp := "/priapi/v5/ecotrade/public/total-pnl?uniqueName="+uniqueName, make([]*EcotradePublicTotal_pnl, 0)
  263. if !t.request("GET", j_path, nil, &j_resp) {
  264. return nil
  265. }
  266. return j_resp
  267. }