システムトレード

IB API メモ

現在IB証券のAPIを使用したシステム作成中ですが、ようやく完成の目処が立ちました。

IB API は少しクセがある上に、マニュアルが不親切です。

が、基本的な事をQiitaに記事を書いてくれている方がいます。
http://qiita.com/esplo/items/76849371bf1d3aec80fe
http://qiita.com/esplo/items/1815f7796dfcfc31ebcf

これを参照すれば、基本的なことができます。とはいえ、それでもある程度苦労しました。以下は私のメモ書きです。使用言語はJavaです。

メモ

基本構造

EClientSocketのリクエスト等実行後、EWrapperクラスの対応するメソッドが実行される。
行いたい処理を、EWrapperを実装したクラスにコーディングしていく。
EClientSocketメソッド:https://www.interactivebrokers.com/en/software/api/apiguide/java/java_eclientsocket_methods.htm
EWapperメソッド:https://www.interactivebrokers.com/en/software/api/apiguide/java/java_ewrapper_methods.htm
EClientSocketメソッドに対応するEWapperメソッドはマニュアルに記載されていない場合が多いので試行錯誤試していく。

メソッドメモ

  • eConnect()
    TWS接続。結果のリターンはなし。接続成功したら、nextValidId()をCALL。
  • isConnect()
    TWS接続状況をbooleanでリターン。true:接続
  • reqMketData()
    tickPrice(),tickSize()などをCALL。マニュアル記載あり。
  • placeOrder()
    openOrder(),openOrderEnd()をCALL。
  • reqPositions()
    position(),positionEnd()をCALL。

その他のメモ

  • TWS同時接続数
    8個まで。ローカル以外のTWSに接続する場合は、[グローバルコンフィグ]で許可IPを設定する。ワイルドカードは使えないっぽい。
  • クライアントID
    TWSに接続する際に使用するID。同一IDは使用できないので、複数のプログラムが同時に接続する場合はIDを分ける必要がある。
    接続済みのクライアントIDは、TWSの [ヘルプ] – [データコネクション] で確認できる。
  • Contract
    扱いたい商品はContractオブジェクトで指定する。設定値は、TWSの商品を右クリック、[コントラクト情報]で確認できる。
    日経225ミニの場合は下記。
    private Contract getContractN225m() {
            int gengetsu = 201703;
            Contract contract = new Contract();
            contract.m_symbol = "N225M";
            contract.m_secType = "FUT";
            contract.m_currency = "JPY";
            contract.m_exchange = "OSE.JPN";
            contract.m_expiry = gengetsu;
            return contract;
        }
  • 取り扱い可能な注文方法
    https://www.interactivebrokers.com/en/software/api/apiguide/tables/supported_order_types.htm
    保有ポジションのIDを取得して手仕舞うタイプの注文はない(?) 成行の手仕舞い注文は反対売買のオーダーで実施する(?)

COMMENT

メールアドレスが公開されることはありません。