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);
}
}
}