| | |
| | | } |
| | | |
| | | // ---------- 己方(多仓)盈止(≥6次) ---------- |
| | | if (times >= 6 && thresholdPct > 0) { |
| | | int selfPos = Math.max(queryPositionSize(Position.ModeEnum.DUAL_LONG), longPositionSize.intValue()); |
| | | int excess = selfPos - thresholdPosNum; |
| | | if (excess > 0) { |
| | | int perOrderQty = maxPos * DEFAULT_STOP_LOSS_PERCENT / 100; |
| | | if (perOrderQty <= 0) { |
| | | perOrderQty = 1; |
| | | } |
| | | int totalOrders = excess / perOrderQty; |
| | | if (totalOrders <= 0) { |
| | | totalOrders = 1; |
| | | } |
| | | int entryGridId = 0; // 多仓建仓格 |
| | | for (int i = 0; i < totalOrders; i++) { |
| | | int tpGridId = entryGridId + 2 * (i + 1); // 朝盈利方向(向上)间隔2格 |
| | | GridElement tpElem = GridElement.findById(tpGridId); |
| | | if (tpElem == null) { |
| | | break; |
| | | } |
| | | placeTakeProfitAtGrid(tpElem, true, perOrderQty, times); |
| | | } |
| | | log.info("[Gate] 止损{}→己方多仓止盈, excess:{}, 挂{}单, 每单{}张", |
| | | times, excess, totalOrders, perOrderQty); |
| | | } |
| | | } |
| | | // if (times >= 6 && thresholdPct > 0) { |
| | | // int selfPos = Math.max(queryPositionSize(Position.ModeEnum.DUAL_LONG), longPositionSize.intValue()); |
| | | // int excess = selfPos - thresholdPosNum; |
| | | // if (excess > 0) { |
| | | // int perOrderQty = maxPos * DEFAULT_STOP_LOSS_PERCENT / 100; |
| | | // if (perOrderQty <= 0) { |
| | | // perOrderQty = 1; |
| | | // } |
| | | // int totalOrders = excess / perOrderQty; |
| | | // if (totalOrders <= 0) { |
| | | // totalOrders = 1; |
| | | // } |
| | | // int entryGridId = 0; // 多仓建仓格 |
| | | // for (int i = 0; i < totalOrders; i++) { |
| | | // int tpGridId = entryGridId + 2 * (i + 1); // 朝盈利方向(向上)间隔2格 |
| | | // GridElement tpElem = GridElement.findById(tpGridId); |
| | | // if (tpElem == null) { |
| | | // break; |
| | | // } |
| | | // placeTakeProfitAtGrid(tpElem, true, perOrderQty, times); |
| | | // } |
| | | // log.info("[Gate] 止损{}→己方多仓止盈, excess:{}, 挂{}单, 每单{}张", |
| | | // times, excess, totalOrders, perOrderQty); |
| | | // } |
| | | // } |
| | | |
| | | } |
| | | |
| | |
| | | } |
| | | |
| | | // ---------- 己方(空仓)盈止(≥6次) ---------- |
| | | if (times >= 6 && thresholdPct > 0) { |
| | | int selfPos = Math.max(queryPositionSize(Position.ModeEnum.DUAL_SHORT), shortPositionSize.intValue()); |
| | | int excess = selfPos - thresholdPosNum; |
| | | if (excess > 0) { |
| | | int perOrderQty = maxPos * DEFAULT_STOP_LOSS_PERCENT / 100; |
| | | if (perOrderQty <= 0) { |
| | | perOrderQty = 1; |
| | | } |
| | | int totalOrders = excess / perOrderQty; |
| | | if (totalOrders <= 0) { |
| | | totalOrders = 1; |
| | | } |
| | | int entryGridId = 0; // 空仓建仓格 |
| | | for (int i = 0; i < totalOrders; i++) { |
| | | int tpGridId = entryGridId - 2 * (i + 1); // 朝盈利方向(向下)间隔2格 |
| | | GridElement tpElem = GridElement.findById(tpGridId); |
| | | if (tpElem == null) { |
| | | break; |
| | | } |
| | | placeTakeProfitAtGrid(tpElem, false, perOrderQty, times); |
| | | } |
| | | log.info("[Gate] 止损{}→己方空仓止盈, excess:{}, 挂{}单, 每单{}张", |
| | | times, excess, totalOrders, perOrderQty); |
| | | } |
| | | } |
| | | // if (times >= 6 && thresholdPct > 0) { |
| | | // int selfPos = Math.max(queryPositionSize(Position.ModeEnum.DUAL_SHORT), shortPositionSize.intValue()); |
| | | // int excess = selfPos - thresholdPosNum; |
| | | // if (excess > 0) { |
| | | // int perOrderQty = maxPos * DEFAULT_STOP_LOSS_PERCENT / 100; |
| | | // if (perOrderQty <= 0) { |
| | | // perOrderQty = 1; |
| | | // } |
| | | // int totalOrders = excess / perOrderQty; |
| | | // if (totalOrders <= 0) { |
| | | // totalOrders = 1; |
| | | // } |
| | | // int entryGridId = 0; // 空仓建仓格 |
| | | // for (int i = 0; i < totalOrders; i++) { |
| | | // int tpGridId = entryGridId - 2 * (i + 1); // 朝盈利方向(向下)间隔2格 |
| | | // GridElement tpElem = GridElement.findById(tpGridId); |
| | | // if (tpElem == null) { |
| | | // break; |
| | | // } |
| | | // placeTakeProfitAtGrid(tpElem, false, perOrderQty, times); |
| | | // } |
| | | // log.info("[Gate] 止损{}→己方空仓止盈, excess:{}, 挂{}单, 每单{}张", |
| | | // times, excess, totalOrders, perOrderQty); |
| | | // } |
| | | // } |
| | | |
| | | } |
| | | |