private void checkLimits()

in src/main/java/deltix/ember/service/oms/risk/sample/SamplePositionRiskRule.java [87:102]


    private void checkLimits(RiskOrder order, OrderEntryRequest request, RiskObserver observer) {
        if (observer != null && ! Decimal64Utils.isNull(maxPosition)) {
            boolean isBuyOrder = (order.getSide() == Side.BUY);
            @Decimal long positionSize = isBuyOrder ?
                    Decimal64Utils.add(position.getActualPositionSize(), position.getOpenBuySize()) :
                    Decimal64Utils.subtract(position.getOpenSellSize(), position.getActualPositionSize());

            if (Decimal64Utils.isGreater(positionSize, maxPosition)) {
                CharSequence message = getCleanBuffer()
                        .append("Estimated ").append(isBuyOrder ? "LONG" : "SHORT").append(" position ").appendDecimal64(positionSize)
                        .append(" would exceed maximum limit ").appendDecimal64(maxPosition);

                observer.onBreach(getProjectionPath(), MaxPosition, DeltixRiskCodes.MAX_NET_POSITION_SIZE.ordinal(), message);
            }
        }
    }