Administrator
2025-12-20 e1288c60a418079186da08606e469b5d05dc8f72
feat(okx): 更新交易所配置并优化订单计算逻辑

- 启用生产环境OKX账户配置,注释掉测试账户
- 在OrderInfoWs中添加main方法用于调试预期收益计算
- 优化平仓收益计算逻辑,增加空值判断和默认值处理
- 修正初始保证金日志输出格式
- 调整网格列表枚举中的价格参数配置
3 files modified
34 ■■■■ changed files
src/main/java/com/xcong/excoin/modules/okxNewPrice/okxWs/OrderInfoWs.java 18 ●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/okxNewPrice/okxWs/enums/ExchangeInfoEnum.java 14 ●●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/okxNewPrice/okxWs/wanggeList/WangGeListEnum.java 2 ●●● patch | view | raw | blame | history
src/main/java/com/xcong/excoin/modules/okxNewPrice/okxWs/OrderInfoWs.java
@@ -171,6 +171,20 @@
        }
        return null;
    }
    public static void main(String[] args) {
        System.out.println(
                getZhiYingPx(
                        "eth",
                        CoinEnums.POSSIDE_LONG.getCode(),
                        "0.0001",
                        new BigDecimal("0.1"),
                        new BigDecimal("0.05"),
                        new BigDecimal("1"),
                        new BigDecimal("2950"),
                        new BigDecimal("100"))
        );
    }
    /**
     * 计算预期收益
     */
@@ -179,7 +193,7 @@
            BigDecimal contractMultiplier, BigDecimal avgPx, BigDecimal leverage
    ) {
        BigDecimal initMargin = getInitMargin(coinValue, coinNum, contractMultiplier, avgPx, leverage);
        String pingCangImr = InstrumentsWs.getAccountMap(accountName).get(CoinEnums.PING_CANG_SHOUYI.name());
        String pingCangImr = StrUtil.isEmpty(InstrumentsWs.getAccountMap(accountName).get(CoinEnums.PING_CANG_SHOUYI.name())) ? "0.2" : InstrumentsWs.getAccountMap(accountName).get(CoinEnums.PING_CANG_SHOUYI.name());
        BigDecimal expectProfit = (initMargin).multiply(new BigDecimal(pingCangImr)).add(new BigDecimal(fillFee).abs()).setScale(4, RoundingMode.DOWN);
        log.info("{}: 订单详情-预期收益: {}", accountName, expectProfit);
        return getMarkPrice(expectProfit,posSide, coinValue, coinNum, contractMultiplier, avgPx, leverage);
@@ -191,7 +205,7 @@
     */
    public static BigDecimal getInitMargin(BigDecimal coinValue, BigDecimal coinNum, BigDecimal contractMultiplier, BigDecimal avgPx, BigDecimal leverage) {
        BigDecimal initMargin = coinValue.multiply(coinNum).multiply(contractMultiplier).multiply(avgPx).divide(leverage, 4, RoundingMode.DOWN);
        log.info("{}: 订单详情-初始保证金: {}", initMargin);
        log.info("订单详情-初始保证金: {}", initMargin);
        return initMargin;
    }
    /**
src/main/java/com/xcong/excoin/modules/okxNewPrice/okxWs/enums/ExchangeInfoEnum.java
@@ -13,14 +13,14 @@
     * 模拟盘账户1信息
     * 存储了模拟盘交易所需的API密钥、秘钥和通过码
     */
//    OKX_PRD_xiao("f512673b-2685-4fcb-9bb1-2ae8db745d62",
//            "B0C1CC8F39625B41140D93DC25039E33",
//            "Aa12345678@",
//            true);
    OKX_UAT_ceshi("ffb4e79f-fcf5-4afb-82c5-2fbb64123f61",
            "AA06C5ED1D7C7F5AFE6484052E231C55",
    OKX_PRD_xiao("f512673b-2685-4fcb-9bb1-2ae8db745d62",
            "B0C1CC8F39625B41140D93DC25039E33",
            "Aa12345678@",
            false);
            true);
//    OKX_UAT_ceshi("ffb4e79f-fcf5-4afb-82c5-2fbb64123f61",
//            "AA06C5ED1D7C7F5AFE6484052E231C55",
//            "Aa12345678@",
//            false);
//
//    /**
//     * 模拟盘账户2信息
src/main/java/com/xcong/excoin/modules/okxNewPrice/okxWs/wanggeList/WangGeListEnum.java
@@ -11,7 +11,7 @@
 */
@Getter
public enum WangGeListEnum {
    UP("上层做空", "2", "3100", "3000", "4", "short", "3100"),
    UP("上层做空", "2", "3200", "3000", "4", "short", "3100"),
    CENTER("中间做空", "2", "3000", "2700", "4", "short", "2700"),
    DOWN("下层做多", "2", "2700", "2500", "4", "long", "2500"),
    DOWN_ONE("下层做空", "2", "2500", "2200", "4", "short", "2500");