私は現在、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 の問題なのかはわかりません。また、IB から提供されたサンプル コードで、System.out.println() 呼び出しをプログラムの対応するハンドラーに追加することで、この動作を確認しました。
どんな助けでも大歓迎です。