|
two orders created for a single request
I have a similar problem, sometimes when I request a new order, I get two execution reports.
I am attaching a log example and the code that I am using:
INFO 10:05:49(Processor.java:533) - Start Trade, Bid: 1.41052, Ask: 1.41059, at 07/29 10:05:49
INFO 10:05:49(Processor.java:535) - place long order
INFO 10:05:50(ExecutionReportProcessor.java:272) - exe.getPrice() = 1.41061
INFO 10:05:50(ExecutionReportProcessor.java:277) - exe.getFXCMOrdStatus() = FXCMOrdStatus:In process (P)
INFO 10:05:50(ExecutionReportProcessor.java:279) - exe.getOrderQty() = 10,000
INFO 10:05:50(ExecutionReportProcessor.java:272) - exe.getPrice() = 1.41061
INFO 10:05:50(ExecutionReportProcessor.java:277) - exe.getFXCMOrdStatus() = FXCMOrdStatus:Pending Calculated (U)
INFO 10:05:50(ExecutionReportProcessor.java:279) - exe.getOrderQty() = 10,000
INFO 10:05:50(ExecutionReportProcessor.java:272) - exe.getPrice() = 1.41061
INFO 10:05:50(ExecutionReportProcessor.java:277) - exe.getFXCMOrdStatus() = FXCMOrdStatus:In process (P)
INFO 10:05:50(ExecutionReportProcessor.java:279) - exe.getOrderQty() = 10,000
INFO 10:05:50(ExecutionReportProcessor.java:272) - exe.getPrice() = 1.41061
INFO 10:05:50(ExecutionReportProcessor.java:277) - exe.getFXCMOrdStatus() = FXCMOrdStatus:Pending Calculated (U)
INFO 10:05:50(ExecutionReportProcessor.java:279) - exe.getOrderQty() = 10,000
INFO 10:05:50(ExecutionReportProcessor.java:272) - exe.getPrice() = 1.41061
INFO 10:05:50(ExecutionReportProcessor.java:277) - exe.getFXCMOrdStatus() = FXCMOrdStatus:Executing (E)
INFO 10:05:50(ExecutionReportProcessor.java:279) - exe.getOrderQty() = 10,000
INFO 10:05:50(ExecutionReportProcessor.java:272) - exe.getPrice() = 1.41061
INFO 10:05:50(ExecutionReportProcessor.java:277) - exe.getFXCMOrdStatus() = FXCMOrdStatus:Executed (F)
INFO 10:05:50(ExecutionReportProcessor.java:279) - exe.getOrderQty() = 10,000
INFO 10:05:50(ExecutionReportProcessor.java:272) - exe.getPrice() = 1.41061
INFO 10:05:50(ExecutionReportProcessor.java:277) - exe.getFXCMOrdStatus() = FXCMOrdStatus:Executing (E)
INFO 10:05:50(ExecutionReportProcessor.java:279) - exe.getOrderQty() = 10,000
INFO 10:05:50(ExecutionReportProcessor.java:272) - exe.getPrice() = 1.41061
INFO 10:05:50(ExecutionReportProcessor.java:277) - exe.getFXCMOrdStatus() = FXCMOrdStatus:Executed (F)
INFO 10:05:50(ExecutionReportProcessor.java:279) - exe.getOrderQty() = 10,000
public boolean placeFXCMMarketOrder(ARCOrder order) {
Liaison liaison = Liaison.getInstance();
IRequestFactory requestFactory = liaison.getRequestFactory();
IRequest request;
String comment = Long.toString(System.currentTimeMillis());
request = requestFactory.createTrueMarketOrder(SessionData.f xPair.getPair(),
(String) SessionData.getFxAccountNames().elementAt(SessionD ata.getFxAccountIndex()),
order.isBuy() ? Side.BUY: Side.SELL,
order.getUnits(),
comment);
FXCMOrderListener orderListener = new FXCMOrderListener(this);
try {
TradeDesk.getInst().getOpenPositions().subscribe(o rderListener, SignalType.ADD);
TradeDesk.getInst().getOpenPositions().subscribe(o rderListener, SignalType.CHANGE);
TradeDesk.getInst().getOpenPositions().subscribe(o rderListener, SignalType.REMOVE);
liaison.sendRequest(request);
orderListener.waitForProcessing();
Position position = orderListener.getOrder(comment);
if (position == null) {
System.out.println("DataSourceManager NULL position");
return false;
}
order.setPrice(position.getOpenPrice());
order.setUnits(position.getAmount());
order.setOrderedTime(position.getOpenTime().getTim e() / 1000L);
order.setTranNbr(position.getTicketID());
} catch (LiaisonException aEx) {
aEx.printStackTrace();
return false;
} finally {
TradeDesk.getInst().getOpenPositions().unsubscribe (orderListener, SignalType.ADD);
TradeDesk.getInst().getOpenPositions().unsubscribe (orderListener, SignalType.CHANGE);
TradeDesk.getInst().getOpenPositions().unsubscribe (orderListener, SignalType.REMOVE);
}
return true;
}
|