private NewOrderRequest makeNewOrderRequest()

in gemini/src/main/java/deltix/connector/crypto/gemini/GeminiTradeConnector.java [184:222]


    private NewOrderRequest makeNewOrderRequest(OrderNewRequest orderRequest, Contract contract) {
        final NewOrderRequest request = new NewOrderRequest();
        request.setSymbol(contract.getBrokerSymbol());
        request.setClientOrderId(getClientOrderId(orderRequest));
        request.setSide(GeminiUtil.toGeminiSide(orderRequest.getSide()));
        request.setType(EXCHANGE_LIMIT_ORDER_TYPE);

        EnumSet<OrderOptions> orderOptions = EnumSet.noneOf(OrderOptions.class);

        if (ConnectorUtil.isPostOnly(orderRequest.getAttributes()))
            orderOptions.add(OrderOptions.MAKER_OR_CANCEL);

        switch (orderRequest.getTimeInForce()) {
            case IMMEDIATE_OR_CANCEL:
                orderOptions.add(OrderOptions.IMMEDIATE_OR_CANCEL);
                break;
            case FILL_OR_KILL:
                request.setOptions(EnumSet.of(OrderOptions.FILL_OR_KILL));
                break;
            case AT_THE_OPENING:
                request.setOptions(EnumSet.of(OrderOptions.AUCTION_ONLY));
                break;
        }

        if (!orderOptions.isEmpty())
            request.setOptions(orderOptions);

        if (orderRequest.hasMinQuantity()) {
            request.setMinAmount(toBrokerQuantity(orderRequest.getMinQuantity(), contract));
        }

        request.setAmount(toBrokerQuantity(orderRequest.getQuantity(), contract));

        if (orderRequest.getOrderType() == OrderType.LIMIT) {
            request.setPrice(toBrokerPrice(orderRequest.getLimitPrice(), contract));
        }

        return request;
    }