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 }