| | |
| | | checkProfitAndReset(); |
| | | |
| | | |
| | | if ( |
| | | longActive == false && |
| | | if (longActive == false && |
| | | longPositionSize.compareTo(BigDecimal.ZERO) == 0){ |
| | | |
| | | }{ |
| | | |
| | | processShortGrid(closePrice); |
| | | } |
| | | |
| | | |
| | | if ( |
| | | shortActive == false && |
| | | if (shortActive == false && |
| | | shortPositionSize.compareTo(BigDecimal.ZERO) == 0){ |
| | | |
| | | }{ |
| | | |
| | | processLongGrid(closePrice); |
| | | } |
| | | } |
| | |
| | | |
| | | Integer upId = matchedUpGridElement.getUpId(); |
| | | GridElement newEntryGrid = GridElement.findById(upId); |
| | | GridElement cancelGridElement = GridElement.findById(newEntryGrid.getUpId()); |
| | | |
| | | if (cancelGridElement != null) { |
| | | if (newEntryGrid != null) { |
| | | GridElement cancelGridElement = GridElement.findById(newEntryGrid.getUpId()); |
| | | |
| | | if (newEntryGrid != null) { |
| | | if (cancelGridElement != null) { |
| | | BigDecimal triggerPrice = newEntryGrid.getGridPrice(); |
| | | String size = cancelGridElement.getLongTraderParam().getQuantity(); |
| | | log.info("[Gate] 多仓仓位归零 gridId:{}, 挂{}基础张多单", |
| | |
| | | placeEntryOrderWithPreFlag(newEntryGrid, true, triggerPrice, |
| | | FuturesPriceTrigger.RuleEnum.NUMBER_1, size); |
| | | |
| | | } |
| | | |
| | | /** |
| | | * 看是否有多仓挂单,有就取消 |
| | | */ |
| | | if (cancelGridElement != null && cancelGridElement.isHasLongOrder()) { |
| | | executor.cancelConditionalOrder(cancelGridElement.getLongOrderId(), oid -> { |
| | | longEntryTraderIdParam(cancelGridElement, null, false); |
| | | log.info("[Gate] 多仓仓位归零, 取消gridId:{}的多单", cancelGridElement); |
| | | }); |
| | | /** |
| | | * 看是否有多仓挂单,有就取消 |
| | | */ |
| | | if (cancelGridElement != null && cancelGridElement.isHasLongOrder()) { |
| | | executor.cancelConditionalOrder(cancelGridElement.getLongOrderId(), oid -> { |
| | | longEntryTraderIdParam(cancelGridElement, null, false); |
| | | log.info("[Gate] 多仓仓位归零, 取消gridId:{}的多单", cancelGridElement); |
| | | }); |
| | | } |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | private void processLongGrid(BigDecimal currentPrice) { |
| | |
| | | |
| | | Integer downId = matchedUpGridElement.getDownId(); |
| | | GridElement newEntryGrid = GridElement.findById(downId); |
| | | GridElement cancelGridElement = GridElement.findById(newEntryGrid.getDownId()); |
| | | |
| | | if (cancelGridElement != null) { |
| | | if (newEntryGrid != null) { |
| | | GridElement cancelGridElement = GridElement.findById(newEntryGrid.getDownId()); |
| | | |
| | | if (newEntryGrid != null) { |
| | | if (cancelGridElement != null) { |
| | | BigDecimal triggerPrice = newEntryGrid.getGridPrice(); |
| | | String size = cancelGridElement.getShortTraderParam().getQuantity(); |
| | | log.info("[Gate] 空仓仓位归零 gridId:{}, 挂{}基础张多单", |
| | |
| | | newEntryGrid.getShortTraderParam().setQuantity(size); |
| | | placeEntryOrderWithPreFlag(newEntryGrid, false, triggerPrice, |
| | | FuturesPriceTrigger.RuleEnum.NUMBER_2, negate(size)); |
| | | |
| | | /** |
| | | * 看是否有空仓挂单,有就取消 |
| | | */ |
| | | if (cancelGridElement != null && cancelGridElement.isHasShortOrder()) { |
| | | executor.cancelConditionalOrder(cancelGridElement.getShortOrderId(), oid -> { |
| | | shortEntryTraderIdParam(cancelGridElement, null, false); |
| | | log.info("[Gate] 空仓仓位归零, 取消gridId:{}的多单", cancelGridElement); |
| | | }); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 看是否有空仓挂单,有就取消 |
| | | */ |
| | | if (cancelGridElement != null && cancelGridElement.isHasShortOrder()) { |
| | | executor.cancelConditionalOrder(cancelGridElement.getShortOrderId(), oid -> { |
| | | shortEntryTraderIdParam(cancelGridElement, null, false); |
| | | log.info("[Gate] 空仓仓位归零, 取消gridId:{}的多单", cancelGridElement); |
| | | }); |
| | | } |
| | | } |
| | | } |
| | | |