| | |
| | | /** 多头是否活跃(有仓位) */ |
| | | private volatile boolean longActive = false; |
| | | |
| | | /** 多头累计止损张数(加仓订单成交后归零) */ |
| | | private volatile int accumulatedLongLossCount = 0; |
| | | /** 空头累计止损张数(加仓订单成交后归零) */ |
| | | private volatile int accumulatedShortLossCount = 0; |
| | | |
| | | private volatile BigDecimal lastKlinePrice; |
| | | private volatile BigDecimal markPrice = BigDecimal.ZERO; |
| | | private volatile BigDecimal cumulativePnl = BigDecimal.ZERO; |
| | |
| | | baseShortOpened = false; |
| | | longActive = false; |
| | | shortActive = false; |
| | | accumulatedLongLossCount = 0; |
| | | accumulatedShortLossCount = 0; |
| | | shortPriceQueue.clear(); |
| | | longPriceQueue.clear(); |
| | | currentLongOrderIds.clear(); |
| | |
| | | int filledQty = Integer.parseInt(shortGridElement.getShortTraderParam().getQuantity()); |
| | | shortEntryTraderIdParam(shortGridElement, null, false); |
| | | extendShortStopLoss(filledQty,shortGridElement.getId()); |
| | | accumulatedShortLossCount = 0; // 加仓订单成交,重置止损累计 |
| | | log.info("[Gate] 空单成交 gridId:{}", filledQty); |
| | | |
| | | // 空仓持仓超过baseQuantity时,从gridId-2开始向外追挂止盈 |
| | |
| | | int filledQty = Integer.parseInt(longGridElement.getLongTraderParam().getQuantity()); |
| | | longEntryTraderIdParam(longGridElement, null, false); |
| | | extendLongStopLoss(filledQty,longGridElement.getId()); |
| | | accumulatedLongLossCount = 0; // 加仓订单成交,重置止损累计 |
| | | log.info("[Gate] 多单成交 gridId:{}", filledQty); |
| | | |
| | | // 多仓持仓超过baseQuantity时,从gridId+2开始向外追挂止盈 |
| | |
| | | |
| | | BigDecimal triggerPrice = newEntryGrid.getGridPrice(); |
| | | |
| | | BigDecimal baseQuantity = new BigDecimal(config.getBaseQuantity()); |
| | | BigDecimal subtract = baseQuantity.subtract(longPositionSize); |
| | | String size = new BigDecimal(config.getQuantity()).add(new BigDecimal(config.getQuantity())).toString(); |
| | | if (subtract.compareTo(BigDecimal.ZERO) > 0){ |
| | | size = subtract.add(new BigDecimal(config.getQuantity())).toString(); |
| | | } |
| | | // 累计止损张数 + 当前止损量作为追单size,不再依赖positionSize(避免WS竞态) |
| | | accumulatedLongLossCount += Integer.parseInt(config.getQuantity()); |
| | | String size = String.valueOf(accumulatedLongLossCount + Integer.parseInt(config.getQuantity())); |
| | | log.info("[Gate] 多仓止损触发 gridId:{}, 在gridId:{}挂{}基础张多单", |
| | | gridId, newEntryGridId, size); |
| | | |
| | |
| | | |
| | | BigDecimal triggerPrice = newEntryGrid.getGridPrice(); |
| | | |
| | | BigDecimal baseQuantity = new BigDecimal(config.getBaseQuantity()); |
| | | BigDecimal subtract = baseQuantity.subtract(shortPositionSize); |
| | | |
| | | String size = new BigDecimal(config.getQuantity()).add(new BigDecimal(config.getQuantity())).toString(); |
| | | if (subtract.compareTo(BigDecimal.ZERO) > 0){ |
| | | size = subtract.add(new BigDecimal(config.getQuantity())).toString(); |
| | | } |
| | | // 累计止损张数 + 当前止损量作为追单size,不再依赖positionSize(避免WS竞态) |
| | | accumulatedShortLossCount += Integer.parseInt(config.getQuantity()); |
| | | String size = String.valueOf(accumulatedShortLossCount + Integer.parseInt(config.getQuantity())); |
| | | log.info("[Gate] 空仓止损触发 gridId:{}, 在gridId:{}挂{}基础张空单", |
| | | gridId, newEntryGridId, size); |
| | | newEntryGrid.getShortTraderParam().setQuantity(size); |