feat(okxNewPrice): 调整平仓收益比例并增加手续费和资金费用计算
- 将平仓收益比例从0.05调整为0.1
- 在 PositionsWs 中增加 fee 和 fundingFee 字段的解析与存储
- 在减仓逻辑中引入手续费和资金费用的计算
- 更新 realizedPnl 的计算方式,加入手续费和资金费用
- 优化平仓条件判断中的日志输出内容
| | |
| | | AscBigDecimal pingCang = queuePingCang.peek(); |
| | | if (pingCang != null && markPx.compareTo(pingCang.getValue()) >= 0 && avgPx.compareTo(pingCang.getValue()) < 0) { |
| | | log.info("开始减仓...平仓队列价格小于当前价格{}<={}", pingCang.getValue(), markPx); |
| | | // 判断当前是否盈利 |
| | | // 手续费 |
| | | BigDecimal feeValue = PositionsWs.POSITIONSWSMAP.get("fee").multiply(new BigDecimal("2")); |
| | | // 资金费用 |
| | | BigDecimal fundingFeeValue = PositionsWs.POSITIONSWSMAP.get("fundingFee"); |
| | | //未实现收益 |
| | | BigDecimal uplValue = PositionsWs.POSITIONSWSMAP.get("upl"); |
| | | BigDecimal imr = PositionsWs.POSITIONSWSMAP.get("imr"); |
| | | //已实现收益 |
| | | BigDecimal realizedPnlValue = PositionsWs.POSITIONSWSMAP.get("realizedPnl"); |
| | | realizedPnlValue = realizedPnlValue.add(feeValue).add(fundingFeeValue); |
| | | |
| | | //持仓保证金 |
| | | BigDecimal imr = PositionsWs.POSITIONSWSMAP.get("imr"); |
| | | String pingCangImr = InstrumentsWs.INSTRUMENTSWSMAP.get(CoinEnums.PING_CANG_SHOUYI.name()); |
| | | BigDecimal imrValue = imr.multiply(new BigDecimal(pingCangImr)); |
| | | |
| | |
| | | WsMapBuild.saveBigDecimalToMap(POSITIONSWSMAP, "markPx", WsMapBuild.parseBigDecimalSafe(posData.getString("markPx"))); |
| | | WsMapBuild.saveBigDecimalToMap(POSITIONSWSMAP, "bePx", WsMapBuild.parseBigDecimalSafe(posData.getString("bePx"))); |
| | | WsMapBuild.saveBigDecimalToMap(POSITIONSWSMAP, "realizedPnl", WsMapBuild.parseBigDecimalSafe(posData.getString("realizedPnl"))); |
| | | WsMapBuild.saveBigDecimalToMap(POSITIONSWSMAP, "fee", WsMapBuild.parseBigDecimalSafe(posData.getString("fee"))); |
| | | WsMapBuild.saveBigDecimalToMap(POSITIONSWSMAP, "fundingFee", WsMapBuild.parseBigDecimalSafe(posData.getString("fundingFee"))); |
| | | |
| | | WsMapBuild.saveBigDecimalToMap(POSITIONSWSMAP, CoinEnums.READY_STATE.name(), WsMapBuild.parseBigDecimalSafe(CoinEnums.READY_STATE_YES.getCode())); |
| | | } |
| | |
| | | READY_STATE_YES("准备就绪ready_state", "1"), |
| | | READY_STATE_NO("未准备就绪ready_state", "0"), |
| | | |
| | | PING_CANG_SHOUYI("平仓收益比例", "0.05"), |
| | | PING_CANG_SHOUYI("平仓收益比例", "0.1"), |
| | | //下单的总保障金为账户总金额cashBal * TOTAL_ORDER_USDT用来做保证金 |
| | | TOTAL_ORDER_USDTPECENT("总保证金比例total_order_usdtpecent","0.2"), |
| | | TOTAL_ORDER_USDT("总保证金totalOrderUsdt","0"), |