システムトレード

IB証券 TWSの自動ログオフ対策

前置き

最近IB証券(Interactive Brokers)のAPIを触っているのですが、なかなか癖のある仕様です。証券会社のサーバでなく自端末のトレードツールにアクセスする仕様なので、常にトレードツールを起動させておく必要があります。

ところがこのトレードツール「TWS」ですが、自動ログオフという迷惑極まりない機能があります。ログオフ時間は指定できますが、機能解除することはできません。24時間に一度、必ずログオフ(というかツールのシャットダウン)されます。ログオフ時間5分前に、通知ダイアログが出てきてログオフ時間を更新できますが、それを逃したらアウト。ちょっと席を外して、机に戻ったらTWSが落ちているという状況です。

この自動ログオフ機能、海外勢にもそうとう評判が悪いらしく、少し検索すれば対策が見つかります。

対策案1 IB Controller

IB Controller」というツールが鉄板っぽいです。このツールですが、自動ログオフ対策以外にもいろいろ機能があってすごそうなのですが、動作環境がシビアです。私の環境では、
“Error: TWS version 961 is not installed “
となって起動できませんでした。GitHubにソースがあるので、自動ログオフ対策のところだけ参照して自分で作ろうと思ったのですが、よくわかりません・・・

なので別の案を考えます。

対策案2 AutoItのスクリプト

で次に思いつくのが、UWSCでログオフ通知ダイアログの操作。スクリプト作るのだるい・・・ と思って何か他に方法がないかとネット巡回していたら、同じようなことをしている人がいました。

https://futures.io/ib-trader-workstation/16703-keep-alive-tws-24×6-2.html#post214633

AutoItというのは知らなかったのですが、どうやらUWSCと同じようなものっぽいです。インストールして、このスクリプトを動かしたら、問題解決! 自動ログオフを更新してくれるようになりました。

このスクリプトですがやっていることは非常にシンプルです。

  1. 通知ダイアログがActiveになるまで待機
  2. Activeになったらダイアログをマウスクリックのポイントを合わせるためにダイアログ指定場所に移動
  3. 現在時間からAMかPMのどちらかをマウスクリックしてダイアログを閉じる
  4. また待機

ダイアログの判定はウィンドウ名でやっています。私はTWSを日本語で起動しているので、スクリプトの”Exit Session Setting”を”セッションの設定を終了する”に変更しています。

効果

これで価格取得や発注のAPIを安心して使えるようになりました。

TWSが自動ログオフを強制されている理由は、動作の安定性確保のためだと思われますので、休場などの時は自主的にTWSを再起動しようかと思います。

POSTED COMMENT

  1. saru999 より:

    こんにちは。
    おもしろい記事ですね。
    興味深く読ませていただきました。

    • ラーナー より:

      saru999さん

      コメントありがとうございます。

      ブログ読ませていただきました。
      投資歴10年以上とはすごいですね。

      今後も参考にさせていただきます。
      よろしくお願いします。

COMMENT

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