Sending a parent order, with labels for the ClientId of the attached target and stop-loss orders:
Code: Select all
SimpleOrderSendParametersBuilder shortOrderSendParameters = new SimpleOrderSendParametersBuilder (alias, false, 1);
shortOrderSendParameters.setLimitPrice(bidPrices.get(0));
shortOrderSendParameters.setTakeProfitOffset(10);
shortOrderSendParameters.setStopLossClientId("shortStop");
shortOrderSendParameters.setTakeProfitClientId("shortTarget");
shortOrderSendParameters.setClientId("shortParent");
shortOrderSendParameters.setStopLossOffset(settings.stopLoss);
OrderSendParameters shortOrder = shortOrderSendParameters.build();
api.sendOrder(shortOrder);
Here we see the parent order is placed:
Code: Select all
20190425 14:36:32.774(UTC) TRADE: onOrderUpdated (upper): class velox.api.layer1.data.OrderInfoUpdate{instrumentAlias=F.US.ENQM19@CQG, orderId=1, isBuy=false, type=LMT, clientId=shortParent, doNotIncrease=false, filled=0, filledChanged=true, unfilled=1, unfilledChanged=true, averageFillPrice=NaN, averageFillPriceChanged=true, duration=GTC, durationChanged=true, status=WORKING, statusChanged=true, limitPrice=7741.0, limitPriceChanged=true, stopPrice=NaN, stopPriceChanged=true, stopTriggered=false, stopTriggeredChanged=true, modificationUtcTime=0, modificationTimeChanged=true}
20190425 14:36:32.775(UTC) TRADE: onOrderUpdated (upper): class velox.api.layer1.data.OrderInfoUpdate{instrumentAlias=F.US.ENQM19@CQG, orderId=1, isBuy=false, type=LMT, clientId=shortParent, doNotIncrease=false, filled=0, filledChanged=true, unfilled=1, unfilledChanged=true, averageFillPrice=NaN, averageFillPriceChanged=true, duration=GTC, durationChanged=true, status=WORKING, statusChanged=true, limitPrice=7741.0, limitPriceChanged=true, stopPrice=NaN, stopPriceChanged=true, stopTriggered=false, stopTriggeredChanged=true, modificationUtcTime=0, modificationTimeChanged=true}
20190425 14:36:32.782(UTC) TRADE: onOrderUpdated (upper): class velox.api.layer1.data.OrderInfoUpdate{instrumentAlias=F.US.ENQM19@CQG, orderId=1, isBuy=false, type=LMT, clientId=shortParent, doNotIncrease=false, filled=0, filledChanged=true, unfilled=1, unfilledChanged=true, averageFillPrice=NaN, averageFillPriceChanged=true, duration=GTC, durationChanged=true, status=WORKING, statusChanged=true, limitPrice=7741.0, limitPriceChanged=true, stopPrice=NaN, stopPriceChanged=true, stopTriggered=false, stopTriggeredChanged=true, modificationUtcTime=0, modificationTimeChanged=true}
Code: Select all
20190425 14:40:01.451(UTC) TRADE: onOrderExecuted (upper): class velox.api.layer1.data.ExecutionInfo{orderId=1, size=1, price=7735.75, executionId=0, time=1555988830200000000}
20190425 14:40:56.118(UTC) TRADE: onOrderUpdated (upper): class velox.api.layer1.data.OrderInfoUpdate{instrumentAlias=F.US.ENQM19@CQG, orderId=2, isBuy=true, type=STP, clientId=null, doNotIncrease=true, filled=0, filledChanged=true, unfilled=0, unfilledChanged=true, averageFillPrice=NaN, averageFillPriceChanged=true, duration=GTC, durationChanged=true, status=WORKING, statusChanged=true, limitPrice=NaN, limitPriceChanged=true, stopPrice=7737.25, stopPriceChanged=true, stopTriggered=true, stopTriggeredChanged=true, modificationUtcTime=0, modificationTimeChanged=true}
20190425 14:40:56.120(UTC) TRADE: onOrderUpdated (upper): class velox.api.layer1.data.OrderInfoUpdate{instrumentAlias=F.US.ENQM19@CQG, orderId=2, isBuy=true, type=STP, clientId=null, doNotIncrease=true, filled=0, filledChanged=true, unfilled=0, unfilledChanged=true, averageFillPrice=NaN, averageFillPriceChanged=true, duration=GTC, durationChanged=true, status=FILLED, statusChanged=true, limitPrice=NaN, limitPriceChanged=true, stopPrice=7737.25, stopPriceChanged=true, stopTriggered=true, stopTriggeredChanged=true, modificationUtcTime=0, modificationTimeChanged=true}
20190425 14:40:56.121(UTC) TRADE: onOrderUpdated (upper): class velox.api.layer1.data.OrderInfoUpdate{instrumentAlias=F.US.ENQM19@CQG, orderId=3, isBuy=true, type=LMT, clientId=null, doNotIncrease=true, filled=0, filledChanged=true, unfilled=0, unfilledChanged=true, averageFillPrice=NaN, averageFillPriceChanged=true, duration=GTC, durationChanged=true, status=CANCELLED, statusChanged=true, limitPrice=7734.75, limitPriceChanged=true, stopPrice=NaN, stopPriceChanged=true, stopTriggered=false, stopTriggeredChanged=true, modificationUtcTime=0, modificationTimeChanged=true}
20190425 14:40:56.121(UTC) TRADE: onOrderUpdated (upper): class velox.api.layer1.data.OrderInfoUpdate{instrumentAlias=F.US.ENQM19@CQG, orderId=3, isBuy=true, type=LMT, clientId=null, doNotIncrease=true, filled=0, filledChanged=true, unfilled=0, unfilledChanged=true, averageFillPrice=NaN, averageFillPriceChanged=true, duration=GTC, durationChanged=true, status=CANCELLED, statusChanged=true, limitPrice=7734.75, limitPriceChanged=true, stopPrice=NaN, stopPriceChanged=true, stopTriggered=false, stopTriggeredChanged=true, modificationUtcTime=0, modificationTimeChanged=true}
20190425 14:40:56.121(UTC) TRADE: onOrderExecuted (upper): class velox.api.layer1.data.ExecutionInfo{orderId=2, size=1, price=7737.25, executionId=1, time=1555989705000000000}
Thanks,
Greg