From ccc00fa78758dc848582aa6af685031b471fed1b Mon Sep 17 00:00:00 2001 From: Helius <wangdoubleone@gmail.com> Date: Thu, 04 Jun 2020 11:23:12 +0800 Subject: [PATCH] modify --- src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractHoldOrderServiceImpl.java | 60 ++++++++++++++++++++++++++++++++---------------------------- 1 files changed, 32 insertions(+), 28 deletions(-) diff --git a/src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractHoldOrderServiceImpl.java b/src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractHoldOrderServiceImpl.java index 858b2af..f6c8e47 100644 --- a/src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractHoldOrderServiceImpl.java +++ b/src/main/java/com/xcong/excoin/modules/contract/service/impl/ContractHoldOrderServiceImpl.java @@ -299,82 +299,86 @@ // 开仓价 BigDecimal openPrice = holdOrderEntity.getOpeningPrice(); // 设置的止盈止损价 - BigDecimal price = profitOrLessDto.getPrice(); + BigDecimal stopProfitPrice = profitOrLessDto.getStopProfitPrice(); + + BigDecimal stopLessPrice = profitOrLessDto.getStopLessPrice(); // 开多 if (ContractHoldOrderEntity.OPENING_TYPE_MORE == holdOrderEntity.getOpeningType()) { - if (ProfitOrLessDto.TYPE_PROFIT == profitOrLessDto.getType()) { + if (stopProfitPrice != null) { // 当前价大于开仓价 if (newPrice.compareTo(openPrice) > 0) { // 如果止盈价小于当前价 - if (price.compareTo(newPrice) < 0) { + if (stopProfitPrice.compareTo(newPrice) < 0) { return Result.fail("止盈价必须高于当前价"); } } else { - if (price.compareTo(openPrice) < 0) { + if (stopProfitPrice.compareTo(openPrice) < 0) { return Result.fail("止盈价必须高于开仓价"); } } - } else { + } + + if (stopLessPrice != null) { if (newPrice.compareTo(openPrice) > 0) { - if (price.compareTo(openPrice) > 0) { + if (stopLessPrice.compareTo(openPrice) > 0) { return Result.fail("止损价必须低于开仓价"); } } else { - if (price.compareTo(newPrice) > 0) { + if (stopLessPrice.compareTo(newPrice) > 0) { return Result.fail("止损价必须低于当前价"); } } } // 开空 } else { - if (ProfitOrLessDto.TYPE_PROFIT == profitOrLessDto.getType()) { + if (stopProfitPrice != null) { if (newPrice.compareTo(openPrice) > 0) { - if (price.compareTo(openPrice) > 0) { + if (stopProfitPrice.compareTo(openPrice) > 0) { return Result.fail("止损价必须低于开仓价"); } } else { - if (price.compareTo(newPrice) > 0) { + if (stopProfitPrice.compareTo(newPrice) > 0) { return Result.fail("止损价必须低于当前价"); } } - } else { + } + if (stopLessPrice != null) { if (newPrice.compareTo(openPrice) > 0) { - if (price.compareTo(newPrice) < 0) { + if (stopLessPrice.compareTo(newPrice) < 0) { return Result.fail("止损价必须高于当前价"); } } else { - if (price.compareTo(openPrice) < 0) { + if (stopLessPrice.compareTo(openPrice) < 0) { return Result.fail("止损价必须高于开仓价"); } } } } - if (ProfitOrLessDto.TYPE_PROFIT == profitOrLessDto.getType()) { - holdOrderEntity.setStopProfitPrice(price); - } else { - holdOrderEntity.setStopLossPrice(price); - } + holdOrderEntity.setStopProfitPrice(stopProfitPrice); + holdOrderEntity.setStopLossPrice(stopLessPrice); int i = contractHoldOrderDao.updateById(holdOrderEntity); if (i > 0) { OrderModel model = null; if (ContractHoldOrderEntity.OPENING_TYPE_MORE == holdOrderEntity.getOpeningType()) { // 开多止盈 - if (ProfitOrLessDto.TYPE_PROFIT == profitOrLessDto.getType()) { - model = new OrderModel(holdOrderEntity.getId(), RabbitPriceTypeEnum.CLOSE_MORE_STOP_PROFIT.getValue(), price.setScale(8, RoundingMode.HALF_UP).toPlainString(), holdOrderEntity.getSymbol()); - // 开多止损 - } else { - model = new OrderModel(holdOrderEntity.getId(), RabbitPriceTypeEnum.CLOSE_MORE_STOP_LESS.getValue(), price.setScale(8, RoundingMode.HALF_UP).toPlainString(), holdOrderEntity.getSymbol()); + if (stopProfitPrice != null) { + model = new OrderModel(holdOrderEntity.getId(), RabbitPriceTypeEnum.CLOSE_MORE_STOP_PROFIT.getValue(), stopProfitPrice.setScale(8, RoundingMode.HALF_UP).toPlainString(), holdOrderEntity.getSymbol()); + } + // 开多止损 + if (stopLessPrice != null) { + model = new OrderModel(holdOrderEntity.getId(), RabbitPriceTypeEnum.CLOSE_MORE_STOP_LESS.getValue(), stopLessPrice.setScale(8, RoundingMode.HALF_UP).toPlainString(), holdOrderEntity.getSymbol()); } } else { // 开空止盈 - if (ProfitOrLessDto.TYPE_PROFIT == profitOrLessDto.getType()) { - model = new OrderModel(holdOrderEntity.getId(), RabbitPriceTypeEnum.CLOSE_LESS_STOP_PROFIT.getValue(), price.setScale(8, RoundingMode.HALF_UP).toPlainString(), holdOrderEntity.getSymbol()); - // 开空止损 - } else { - model = new OrderModel(holdOrderEntity.getId(), RabbitPriceTypeEnum.CLOSE_LESS_STOP_LESS.getValue(), price.setScale(8, RoundingMode.HALF_UP).toPlainString(), holdOrderEntity.getSymbol()); + if (stopProfitPrice != null) { + model = new OrderModel(holdOrderEntity.getId(), RabbitPriceTypeEnum.CLOSE_LESS_STOP_PROFIT.getValue(), stopProfitPrice.setScale(8, RoundingMode.HALF_UP).toPlainString(), holdOrderEntity.getSymbol()); + } + // 开空止损 + if (stopLessPrice != null) { + model = new OrderModel(holdOrderEntity.getId(), RabbitPriceTypeEnum.CLOSE_LESS_STOP_LESS.getValue(), stopLessPrice.setScale(8, RoundingMode.HALF_UP).toPlainString(), holdOrderEntity.getSymbol()); } } producer.sendPriceOperate(JSONObject.toJSONString(model)); -- Gitblit v1.9.1