feat(okx): 更新交易所配置并优化订单计算逻辑
- 启用生产环境OKX账户配置,注释掉测试账户
- 在OrderInfoWs中添加main方法用于调试预期收益计算
- 优化平仓收益计算逻辑,增加空值判断和默认值处理
- 修正初始保证金日志输出格式
- 调整网格列表枚举中的价格参数配置
| | |
| | | } |
| | | 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")) |
| | | ); |
| | | } |
| | | /** |
| | | * 计算预期收益 |
| | | */ |
| | |
| | | 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); |
| | |
| | | */ |
| | | 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; |
| | | } |
| | | /** |
| | |
| | | * 模拟盘账户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信息 |
| | |
| | | */ |
| | | @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"); |