| | |
| | | package com.xcong.excoin.modules.gateApi; |
| | | |
| | | import cn.hutool.core.collection.CollUtil; |
| | | import io.gate.gateapi.ApiClient; |
| | | import io.gate.gateapi.ApiException; |
| | | import io.gate.gateapi.GateApiException; |
| | |
| | | tryGenerateQueues(); |
| | | }else { |
| | | longPositionSize = size; |
| | | //取消多仓位线以上的开空仓挂单 |
| | | List<GridElement> allShortOrders = GridElement.findAllShortOrders(longEntryPrice); |
| | | if (CollUtil.isNotEmpty(allShortOrders)){ |
| | | for (GridElement e : allShortOrders) { |
| | | executor.cancelOrder(e.getShortOrderId()); |
| | | } |
| | | } |
| | | } |
| | | } else { |
| | | longActive = false; |
| | |
| | | tryGenerateQueues(); |
| | | }else { |
| | | shortPositionSize = size.abs(); |
| | | //取消多仓位线以上的开空仓挂单 |
| | | List<GridElement> allLongOrders = GridElement.findAllLongOrders(shortEntryPrice); |
| | | if (CollUtil.isNotEmpty(allLongOrders)){ |
| | | for (GridElement e : allLongOrders) { |
| | | executor.cancelOrder(e.getShortOrderId()); |
| | | } |
| | | } |
| | | } |
| | | } else { |
| | | shortActive = false; |
| | |
| | | List<GridElement> elements = new ArrayList<>(); |
| | | int shortSize = shortPriceQueue.size(); |
| | | int longSize = longPriceQueue.size(); |
| | | BigDecimal step = config.getStep().subtract(config.getContractMultiplier()); |
| | | String qty = config.getQuantity(); |
| | | //根据精度转换成小数 |
| | | int prec = config.getPriceScale(); |
| | | BigDecimal minTick = BigDecimal.ONE.scaleByPowerOfTen(-prec); |
| | | BigDecimal step = config.getStep().subtract(minTick); |
| | | String qty = config.getQuantity(); |
| | | |
| | | // 空仓队列:id 从 -1 自减, shortPriceQueue[i] → id=-(i+1) |
| | | for (int i = 0; i < shortSize; i++) { |
| | |
| | | List<BigDecimal> matched = new ArrayList<>(); |
| | | synchronized (shortPriceQueue) { |
| | | for (BigDecimal p : shortPriceQueue) { |
| | | if (p.compareTo(currentPrice) > 0) { |
| | | if (p.compareTo(currentPrice) >= 0) { |
| | | matched.add(p); |
| | | } else { |
| | | break; |
| | |
| | | List<BigDecimal> matched = new ArrayList<>(); |
| | | synchronized (longPriceQueue) { |
| | | for (BigDecimal p : longPriceQueue) { |
| | | if (p.compareTo(currentPrice) < 0) { |
| | | if (p.compareTo(currentPrice) <= 0) { |
| | | matched.add(p); |
| | | } else { |
| | | break; |