public void onOrderEvent()

in src/main/java/deltix/ember/service/oms/risk/sample/SamplePnLRiskRule.java [95:117]


    public void onOrderEvent(@Nonnull RiskOrder order, @Nonnull OrderEvent event, @Nonnull OrderState previousState, @Nullable RiskObserver observer) {
        if (activeOrders.size() > 0 && event instanceof OrderTradeReportEvent) {
            if (observer != null && ! Decimal64Utils.isNull(maxLoss)) {
                @Decimal long realizedPnL = position.getRealizedPnL();
                if (Decimal64Utils.isNegative(realizedPnL) && Decimal64Utils.isGreater(Decimal64Utils.abs(realizedPnL), maxLoss)) {
                    for (RiskOrder activeOrder : activeOrders) {
                        MutableOrderCancelRequest request = new MutableOrderCancelRequest();
                        request.setTimestamp(context.getClock().time());
                        request.setRequestId("cancel_" + activeOrder.getOrderId());
                        request.setSourceId(activeOrder.getSourceId());
                        request.setOrderId(activeOrder.getOrderId());
                        request.setDestinationId(activeOrder.getDestinationId());
                        request.setReason("MaxLoss limit breached");

                        context.sendCancelOrderRequest(request);
                    }
                }
            }
        }

        if (order.isFinal())
            activeOrders.remove(order);
    }