| | |
| | | * 根据加仓配置计算止损追单时的实际下单量。 |
| | | * <p>公式:</p> |
| | | * <pre> |
| | | * addMultiplier = floor(effectiveStopLossCount / addPositionInterval) |
| | | * divisor = addPositionInterval + 1 |
| | | * addMultiplier = floor(effectiveStopLossCount / divisor) |
| | | * addQty = addMultiplier × addPositionQuantity |
| | | * finalQty = min(baseQuantity + addQty, maxPositionPerSide > 0 ? maxPositionPerSide : ∞) |
| | | * </pre> |
| | |
| | | int maxPerSide = config.getMaxPositionPerSide(); |
| | | |
| | | int effectiveCount = getEffectiveStopLossCount(isLong); |
| | | int addMultiplier = interval > 0 ? effectiveCount / interval : 0; |
| | | int startThreshold = config.getAddPositionStartThreshold(); |
| | | if (startThreshold > 0) { |
| | | effectiveCount = Math.max(0, effectiveCount - startThreshold); |
| | | } |
| | | // divisor = interval + 1:interval=0→每次加仓, interval=1→每2次加仓(2,4,6...), interval=3→每4次加仓(4,8,12...) |
| | | int divisor = interval + 1; |
| | | int addMultiplier = interval >= 0 ? effectiveCount / divisor : 0; |
| | | int addQty = addMultiplier * addQtyPerUnit; |
| | | int totalQty = baseQty + addQty; |
| | | |