| | |
| | | baseGridElement.setShortOrderId(baseShortTraderParam.getEntryOrderId()); |
| | | baseGridElement.setHasShortOrder(true); |
| | | |
| | | for (int id = 2; id <= 11; id++) { |
| | | int shortTime = Integer.parseInt(config.getBaseQuantity()) + 1; |
| | | for (int id = 2; id <= shortTime; id++) { |
| | | GridElement elem = GridElement.findById(id); |
| | | if (elem == null) { |
| | | continue; |
| | |
| | | ); |
| | | } |
| | | |
| | | for (int id = -2; id >= -11; id--) { |
| | | |
| | | int longTime = Integer.parseInt(config.getBaseQuantity()) + 1; |
| | | for (int id = -2; id >= -longTime; id--) { |
| | | GridElement elem = GridElement.findById(id); |
| | | if (elem == null) { |
| | | continue; |
| | |
| | | ); |
| | | } |
| | | |
| | | log.info("[Gate] 止损单已全部挂完, 空仓止损: 2~11, 多仓止损: -2~-11"); |
| | | log.info("[Gate] 止损单已全部挂完, 空仓止损: 2~{}, 多仓止损: -2~-{}", shortTime, longTime); |
| | | state = StrategyState.ACTIVE; |
| | | } |
| | | } |
| | |
| | | } |
| | | |
| | | BigDecimal tpPrice = nextGrid.getGridPrice(); |
| | | final long finalPosSize = actualPosSize; |
| | | final int finalNextGridId = nextGridId; |
| | | if (isLong) { |
| | | executor.placeTakeProfit(tpPrice, |
| | | FuturesPriceTrigger.RuleEnum.NUMBER_1, |
| | | ORDER_TYPE_CLOSE_LONG, |
| | | negate(config.getQuantity()), |
| | | profitId -> log.info("[Gate] 多仓超限止盈已挂(持仓:{})>, gridId:{}, tpPrice:{}, id:{}", |
| | | actualPosSize, nextGridId, tpPrice, profitId)); |
| | | finalPosSize, finalNextGridId, tpPrice, profitId)); |
| | | } else { |
| | | executor.placeTakeProfit(tpPrice, |
| | | FuturesPriceTrigger.RuleEnum.NUMBER_2, |
| | | ORDER_TYPE_CLOSE_SHORT, |
| | | config.getQuantity(), |
| | | profitId -> log.info("[Gate] 空仓超限止盈已挂(持仓:{})>, gridId:{}, tpPrice:{}, id:{}", |
| | | actualPosSize, nextGridId, tpPrice, profitId)); |
| | | finalPosSize, finalNextGridId, tpPrice, profitId)); |
| | | } |
| | | } catch (Exception e) { |
| | | log.warn("[Gate] 通过API查询持仓超限检查失败", e); |