我目前正在开发一个使用 Interactive Broker 的 API 进行交易的 Java 应用程序。我遇到了一个问题,我不确定我做错了什么或者这是否是 API 中的错误。
此时,我目前可以使用以下调用提交我的订单:
m_controller.placeOrModifyOrder( m_contract, m_order, new IOrderHandler() {
@Override
public void orderStatus(OrderStatus status, int filled, int remaining, double avgFillPrice, long permId, int parentId, double lastFillPrice, int clientId, String whyHeld) {
/*dbgMsg(String.format("Status: %s - Filled: %d - Remaining: %d - Avg F px: %f - Permid: %d - Parentid: %d - Last Fill Px: %f - Client id: %d - WhyHeld: %d",
status.toString(),
filled,
remaining,
avgFillPrice,
permId,
parentId,
lastFillPrice,
clientId,
whyHeld));*/
System.out.println("Order Status");
}
@Override
public void orderState(NewOrderState orderState) {
m_controller.removeOrderHandler( this);
System.out.println("Order state "+orderState.toString());
// TODO Auto-generated method stub
//dbgMsg(orderState.toString());
}
@Override
public void handle(int errorCode, String errorMsg) {
//dbgMsg(String.format("ORDER ERROR [%d]: %s", errorCode, errorMsg));
System.out.println("Order Error: "+errorMsg);
}
});
我遇到的问题是,虽然订单通过 API 在 Trader Workstation 上传输和填写,但我没有收到已创建订单的任何更新。
我还验证了我实际上是通过 ILiveOrdersHandler 接收订单更新,它基本上提供了所有订单的状态更新。
我不知道这是我的编程问题还是底层 API 的问题;我还通过将 System.out.println() 调用添加到其程序中的相应处理程序,在 IB 提供的示例代码上确认了这种行为。
任何帮助将不胜感激。