123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284 |
- package yu_okx
- import yu_strconv "gogs.qqck.cn/s/tools/strconv"
- type EcotradePublicTrade_expert_rate struct {
- DataVersion string `json:"dataVersion"`
- Pages int `json:"pages"`
- Ranks []struct {
- FansNum string `json:"fansNum"`
- FollowStatus string `json:"followStatus"`
- LongLever string `json:"longLever"`
- MaxRetreat string `json:"maxRetreat"`
- NickName string `json:"nickName"`
- Portrait string `json:"portrait"`
- Rates []struct {
- Ratio string `json:"ratio"`
- StatTime string `json:"statTime"`
- } `json:"rates"`
- RiskLevel string `json:"riskLevel"`
- RoleType string `json:"roleType"`
- ShortLever string `json:"shortLever"`
- SignalRoleType string `json:"signalRoleType"`
- SpotRoleType string `json:"spotRoleType"`
- StrategyRoleType string `json:"strategyRoleType"`
- TargetId string `json:"targetId"`
- UniqueName string `json:"uniqueName"`
- YieldRate string `json:"yieldRate"`
- } `json:"ranks"`
- Total int `json:"total"`
- }
- // EcotradePublicTrade_expert_rate
- //
- // @Description: 获取牛人榜
- // @param size 分页大小
- // @param num 页数索引,从 1 开始
- func (t *V5Priapi) EcotradePublicTrade_expert_rate(size string, num string) []*EcotradePublicTrade_expert_rate {
- j_path, j_resp := "/priapi/v5/ecotrade/public/trade-expert-rate?size="+size+"&num="+num+"&sort=desc", make([]*EcotradePublicTrade_expert_rate, 0)
- if !t.request("GET", j_path, nil, &j_resp) {
- return nil
- }
- return j_resp
- }
- type EcotradePublicPosition_summary struct {
- AvailSubPos string `json:"availSubPos"` // 持仓量
- Ccy string `json:"ccy"` // 币种(保证金币种?)
- ClosePnl string `json:"closePnl"`
- DealVolume string `json:"dealVolume"`
- DetailIds string `json:"detailIds"` // 开仓明细IDs
- Fee string `json:"fee"` // 累计手续费金额,正数代表平台返佣 ,负数代表平台扣除
- FundingFee string `json:"fundingFee"` // 累计资金费用(已实现收益 = fundingFee + fee)
- Imr string `json:"imr"` // 保证金
- InstId string `json:"instId"` // 产品ID
- InstType string `json:"instType"` // 产品类型,MARGIN:币币杠杆,SWAP:永续合约,FUTURES:交割合约,OPTION:期权
- Last string `json:"last"` // 最新成交价
- Lever string `json:"lever"` // 杠杆倍数
- LiquidationFee string `json:"liquidationFee"` // 强平价?
- Margin string `json:"margin"`
- MarkPx string `json:"markPx"` // 最新标记价格
- MaxSellableAmount string `json:"maxSellableAmount"` // 最大可卖出张数
- MgnMode string `json:"mgnMode"` // 保证金模式,cross:全仓,isolated:逐仓
- NotionalUsd string `json:"notionalUsd"`
- OpenAvgPx string `json:"openAvgPx"` // 开仓均价
- OpenTime string `json:"openTime"` // 开仓时间
- Pnl string `json:"pnl"` // 浮动收益额
- PnlRatio string `json:"pnlRatio"` // 浮动收益率
- PosSide string `json:"posSide"` // 持仓方向,long:开平仓模式开多,pos为正,short:开平仓模式开空,pos为正,net:买卖模式(交割/永续/期权:pos为正代表开多,pos为负代表开空。币币杠杆时,pos均为正,posCcy为交易货币时,代表开多;posCcy为计价货币时,代表开空。)
- PosType string `json:"posType"` // 限仓类型,仅适用于组合保证金模式下的期权全仓。1:所有合约挂单 + 持仓张数,2:所有合约总挂单张数,3:所有合约总挂单单数,4:同方向合约挂单 + 持仓张数,5:单一合约总挂单单数,6:单一合约挂单 + 持仓张数,7:单笔挂单张数"
- Side string `json:"side"` // 订单方向,buy:买, sell:卖
- SubPos string `json:"subPos"` // 持仓张数
- TradeItemId string `json:"tradeItemId"` // 贸易项目Id
- UTime string `json:"uTime"` // 账户信息的更新时间,Unix时间戳的毫秒数格式,如 1718092801068
- UniqueName string `json:"uniqueName"`
- }
- // EcotradePublicPosition_summary
- //
- // @Description: 获取当前带单
- // @param uniqueName 唯一名称
- func (t *V5Priapi) EcotradePublicPosition_summary(instType InstType, uniqueName string) []*EcotradePublicPosition_summary {
- j_path, j_resp := "/priapi/v5/ecotrade/public/position-summary?instType="+string(instType)+"&uniqueName="+uniqueName, make([]*EcotradePublicPosition_summary, 0)
- // {"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":""}
- if !t.request("GET", j_path, nil, &j_resp) {
- return nil
- }
- return j_resp
- }
- type EcotradePublicasset struct {
- Currency string `json:"currency"` // 币种
- Percent string `json:"percent"` // 百分比
- }
- // EcotradePublicAsset
- //
- // @Description: 获取投资组合
- // @param uniqueName 唯一名称
- func (t *V5Priapi) EcotradePublicAsset(uniqueName string) []*EcotradePublicasset {
- j_path, j_resp := "/priapi/v5/ecotrade/public/asset?uniqueName="+uniqueName, make([]*EcotradePublicasset, 0)
- if !t.request("GET", j_path, nil, &j_resp) {
- return nil
- }
- return j_resp
- }
- type EcotradePublicPositions struct {
- Alias string `json:"alias"`
- AvgPx string `json:"avgPx"` // 开仓平均价
- CTime string `json:"cTime"` // 持仓创建时间,Unix时间戳的毫秒数格式,如 1597026383085
- InstId string `json:"instId"` // 产品ID
- InstType string `json:"instType"` // 产品类型,MARGIN:币币杠杆,SWAP:永续合约,FUTURES:交割合约,OPTION:期权
- Lever string `json:"lever"` // 杠杆倍数
- LiqPx string `json:"liqPx"` // 预估强平价,不适用于期权
- MgnMode string `json:"mgnMode"` // 保证金模式,cross:全仓,isolated:逐仓
- Pos string `json:"pos"` // 以张为单位的持仓数量
- PosCcy string `json:"posCcy"` // 仓位资产币种,仅适用于币币杠杆仓位
- PosSide string `json:"posSide"` // 持仓方向,long:开平仓模式开多,short:开平仓模式开空,net:买卖模式(交割/永续/期权:pos为正代表开多,pos为负代表开空。币币杠杆:posCcy为交易货币时,代表开多;posCcy为计价货币时,代表开空。)
- PosSpace string `json:"posSpace"` // 持仓仓位百分比
- UplRatio string `json:"uplRatio"` // 未实现收益率(以标记价格计算)
- }
- // EcotradePublicPositions
- //
- // @Description: 获取当前持仓(旧接口)
- // @param uniqueName 唯一名称
- // @param limit 分页返回的结果集数量,最大为100,不填默认返回100条
- // @param after 请求此时间戳之前(更旧的数据)的分页内容,Unix时间戳的毫秒数格式,如 1597026383085,不填默认当前时间
- func (t *V5Priapi) EcotradePublicPositions(uniqueName string, limit int, after int64) []*EcotradePublicPositions {
- j_path, j_resp := "/priapi/v5/ecotrade/public/positions?uniqueName="+uniqueName, make([]*EcotradePublicPositions, 0)
- if limit > 0 && limit <= 100 {
- j_path += "&limit=" + yu_strconv.FormatInt(limit)
- }
- if after > 0 {
- j_path += "&after=" + yu_strconv.FormatInt64(after)
- }
- if !t.request("GET", j_path, nil, &j_resp) {
- return nil
- }
- return j_resp
- }
- type EcotradePublicPositions_v2 struct {
- LongLever string `json:"longLever"` // 仓位(多),百分比?
- PosData []struct {
- Alias string `json:"alias"`
- AvgPx string `json:"avgPx"` // 开仓平均价
- CTime string `json:"cTime"` // 持仓创建时间,Unix时间戳的毫秒数格式,如 1597026383085
- InstId string `json:"instId"` // 产品ID
- InstType string `json:"instType"` // 产品类型,MARGIN:币币杠杆,SWAP:永续合约,FUTURES:交割合约,OPTION:期权
- Lever string `json:"lever"` // 杠杆倍数
- LiqPx string `json:"liqPx"` // 预估强平价,不适用于期权
- MgnMode string `json:"mgnMode"` // 保证金模式,cross:全仓,isolated:逐仓
- Pos string `json:"pos"` // 以张为单位的持仓数量
- PosCcy string `json:"posCcy"` // 仓位资产币种,仅适用于币币杠杆仓位
- PosSide string `json:"posSide"` // 持仓方向,long:开平仓模式开多,short:开平仓模式开空,net:买卖模式(交割/永续/期权:pos为正代表开多,pos为负代表开空。币币杠杆:posCcy为交易货币时,代表开多;posCcy为计价货币时,代表开空。)
- PosSpace string `json:"posSpace"` // 持仓仓位百分比
- UplRatio string `json:"uplRatio"` // 未实现收益率(以标记价格计算)
- } `json:"posData"`
- ShortLever string `json:"shortLever"` // 仓位(空),百分比?
- }
- // EcotradePublicPositions_v2
- //
- // @Description: 获取当前持仓
- // @param uniqueName 唯一名称
- // @param limit 分页返回的结果集数量,最大为100,不填默认返回100条
- // @param after 请求此时间戳之前(更旧的数据)的分页内容,Unix时间戳的毫秒数格式,如 1597026383085,不填默认当前时间
- func (t *V5Priapi) EcotradePublicPositions_v2(uniqueName string, limit int, after int64) []*EcotradePublicPositions_v2 {
- j_path, j_resp := "/priapi/v5/ecotrade/public/positions-v2?uniqueName="+uniqueName, make([]*EcotradePublicPositions_v2, 0)
- if limit > 0 && limit <= 100 {
- j_path += "&limit=" + yu_strconv.FormatInt(limit)
- }
- if after > 0 {
- j_path += "&after=" + yu_strconv.FormatInt64(after)
- }
- if !t.request("GET", j_path, nil, &j_resp) {
- return nil
- }
- return j_resp
- }
- type EcotradePublicHistory_positions struct {
- Alias string `json:"alias"`
- CTime string `json:"cTime"`
- CloseAvgPx string `json:"closeAvgPx"`
- CloseUplRatio string `json:"closeUplRatio"`
- CtVal string `json:"ctVal"`
- InstFamily string `json:"instFamily"`
- InstId string `json:"instId"`
- InstType string `json:"instType"`
- Lever string `json:"lever"`
- MgnMode string `json:"mgnMode"`
- OpenAvgPx string `json:"openAvgPx"`
- PosId string `json:"posId"`
- PosSide string `json:"posSide"`
- UTime string `json:"uTime"`
- Uly string `json:"uly"`
- }
- // EcotradePublicHistory_positions
- //
- // @Description: 获取历史持仓
- // @param uniqueName 唯一名称
- // @param limit 分页返回的结果集数量,最大为100,不填默认返回100条
- // @param after 请求此时间戳之前(更旧的数据)的分页内容,Unix时间戳的毫秒数格式,如 1597026383085,不填默认当前时间
- func (t *V5Priapi) EcotradePublicHistory_positions(uniqueName string, limit int, after int64) []*EcotradePublicHistory_positions {
- j_path, j_resp := "/priapi/v5/ecotrade/public/history-positions?uniqueName="+uniqueName, make([]*EcotradePublicHistory_positions, 0)
- if limit > 0 && limit <= 100 {
- j_path += "&limit=" + yu_strconv.FormatInt(limit)
- }
- if after > 0 {
- j_path += "&after=" + yu_strconv.FormatInt64(after)
- }
- if !t.request("GET", j_path, nil, &j_resp) {
- return nil
- }
- return j_resp
- }
- type EcotradePublicTrade_records struct {
- Alias string `json:"alias"`
- AvgPx string `json:"avgPx"` // 操作平均价
- BaseName string `json:"baseName"`
- CTime string `json:"cTime"` // 订单创建时间
- FillTime string `json:"fillTime"` // 订单成交时间
- InstFamily string `json:"instFamily"` // 交易品种,适用于交割/永续/期权
- InstId string `json:"instId"` // 产品ID
- InstType string `json:"instType"` // 产品类型,MARGIN:币币杠杆,SWAP:永续合约,FUTURES:交割合约,OPTION:期权
- Lever string `json:"lever"` // 杠杆倍数
- NickName string `json:"nickName"`
- OrdId string `json:"ordId"` // 订单ID
- OrdType string `json:"ordType"` // 订单类型,market:市价单,limit:限价单,post_only:只做maker单,fok:全部成交或立即取消,ioc:立即成交并取消剩余,optimal_limit_ioc:市价委托立即成交并取消剩余(仅适用交割、永续),mmp:做市商保护(仅适用于组合保证金账户模式下的期权订单),mmp_and_post_only:做市商保护且只做maker单(仅适用于组合保证金账户模式下的期权订单)
- PosSide string `json:"posSide"` // 持仓方向,long:开平仓模式开多,short:开平仓模式开空,net:买卖模式(交割/永续/期权:pos为正代表开多,pos为负代表开空。币币杠杆:posCcy为交易货币时,代表开多;posCcy为计价货币时,代表开空。)
- Px string `json:"px"` // 委托价格,仅适用于limit、post_only、fok、ioc、mmp、mmp_and_post_only类型的订单
- QuoteName string `json:"quoteName"` // 委托单保证金产品名称
- Side string `json:"side"` // 订单方向,buy:买, sell:卖
- UTime string `json:"uTime"` // 账户信息的更新时间,Unix时间戳的毫秒数格式,如 1718092801068
- Uly string `json:"uly"` // 标的指数,如 BTC-USD,仅适用于杠杆/交割/永续/期权
- UniqueName string `json:"uniqueName"` // 唯一名称
- }
- // EcotradePublicTrade_records
- //
- // @Description: 获取操作记录
- // @param uniqueName 唯一名称
- // @param limit 分页返回的结果集数量,最大为100,不填默认返回10条
- // @param startModify 请求此时间戳之后的分页内容,Unix时间戳的毫秒数格式,如 1597026383085,不填默认当前时间
- // @param endModify 请求此时间戳之前的分页内容,Unix时间戳的毫秒数格式,如 1597026383085,不填默认无限
- func (t *V5Priapi) EcotradePublicTrade_records(uniqueName string, limit int, startModify int64, endModify int64) []*EcotradePublicTrade_records {
- // https://www.okx.com/priapi/v5/ecotrade/public/trade-records?limit=20&startModify=1710259200000&endModify=1718294399000&uniqueName=7C27B64E785275BA&t=1718283609219
- j_path, j_resp := "/priapi/v5/ecotrade/public/trade-records?uniqueName="+uniqueName, make([]*EcotradePublicTrade_records, 0)
- if limit > 0 && limit <= 100 {
- j_path += "&limit=" + yu_strconv.FormatInt(limit)
- }
- if startModify > 0 {
- j_path += "&startModify=" + yu_strconv.FormatInt64(startModify)
- }
- if endModify > 0 {
- j_path += "&endModify=" + yu_strconv.FormatInt64(endModify)
- }
- if !t.request("GET", j_path, nil, &j_resp) {
- return nil
- }
- return j_resp
- }
- type EcotradePublicTotal_pnl struct {
- Ratio string `json:"ratio"` // 收益率
- StatTime string `json:"statTime"` // 统计时间
- }
- // EcotradePublicTotal_pnl
- //
- // @Description: 获取收益率走势
- // @param uniqueName 唯一名称
- func (t *V5Priapi) EcotradePublicTotal_pnl(uniqueName string) []*EcotradePublicTotal_pnl {
- // https://www.okx.com/priapi/v5/ecotrade/public/total-pnl?uniqueName=1775DD3AF3FA883E
- j_path, j_resp := "/priapi/v5/ecotrade/public/total-pnl?uniqueName="+uniqueName, make([]*EcotradePublicTotal_pnl, 0)
- if !t.request("GET", j_path, nil, &j_resp) {
- return nil
- }
- return j_resp
- }
|