futu について
futuは、ローカルで稼働するOpenDゲートウェイを通じてFutu口座や相場データにアクセスするコマンドラインスキルです。ペーパー口座とライブ口座を選択でき、証券口座の認証情報はOpenD内に保持されます。
主な機能
- 01ソケット経由でOpenDに接続
- 02口座とポジションの確認
- 03気配値と履歴データの取得
- 04注文と約定の確認
- 05ペーパー/ライブ注文
活用シーン
- 01OpenDへの接続状況の確認
- 02口座の保有銘柄と注文の確認
- 03指定形式の銘柄コードで相場を照会
- 04単元株数での注文
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ starchild-ai-agent/ official-skills --skill futuインストール後、Claude Code で/futuを入力して読み込まれたか確認します。
同梱ファイルscripts/futu_cli.py
詳細
これは何か — まずこれを読んでください
🖥️ ローカルゲートウェイブローカー。 Futu はパブリッククラウド API を公開していません。代わりに、OpenD というゲートウェイプログラムをあるマシン上で実行し、Futu アカウントでログインして、この CLI がローカルソケット(デフォルト 127.0.0.1:11111)経由で OpenD と通信します。Futu の認証情報は OpenD の中にあり、このスキルには決して渡りません。
⚠️ つまり、デフォルトでは Starchild コンテナからは動作しません。OpenD はあなたのコンピューター上で実行され、コンテナの 127.0.0.1 はコンテナ自身(別のマシン)だからです。使用する方法は 2 つあります:
- ローカルで実行 — OpenD がログインしている自分のコンピューター上で OpenD + このスクリプトを実行します。(最も簡単)
- ネットワークをブリッジ — コンテナから到達できるホスト上で OpenD を実行し、
FUTU_HOST/FUTU_PORTをそこに向けて設定します(ネットワーク/ファイアウォール/セキュリティは自分で管理してください — OpenD を localhost の外に公開するのは危険です。厳密にバインドしてください)。
status がゲートウェイに到達できないと報告する場合、これが理由です。
OpenD をセットアップする(1 回だけ)
- Futu OpenAPI ページ(富途牛牛 / moomoo → OpenAPI)から、お使いの OS 用の OpenD をダウンロードします。GUI アプリとコマンドラインビルドの両方が提供されています。
- OpenAPI 権限が有効になっている、資金のある/開設済みの Futu または moomoo アカウントが必要です(必要ならアプリ内で申請してください)。
- OpenD を起動し、Futu の認証情報(+ 電話/2FA)でログインします。リッスンしている API ポート(デフォルト
11111)を確認します。 - このスキルを使用している間は OpenD を実行し続けてください。ペーパートレードの場合、アカウントに模拟 / paper (SIMULATE) サブアカウントがあることを確認してください。
設定 (.env)
ここにシークレットキーはありません — ゲートウェイの場所と、(本番用の場合は)取引パスワードの MD5 のみです。安全な入力で要求します。
| 変数 | 必須 | 備考 |
|---|---|---|
FUTU_HOST | いいえ | OpenD ホスト、デフォルト 127.0.0.1 |
FUTU_PORT | いいえ | OpenD ポート、デフォルト 11111 |
FUTU_TRD_MARKET | いいえ | 取引市場フィルター: HK(デフォルト)/ US / CN / SG |
FUTU_SECURITY_FIRM | いいえ | FUTUSECURITIES(デフォルト)、FUTUINC、FUTUSG |
FUTU_ACC_ID | いいえ | 特定のアカウント ID を固定します。0 = 環境による自動解決 |
FUTU_TRADE_PWD_MD5 | 本番のみ | Futu 取引パスワードの MD5(本番注文のロック解除に必要) |
ペーパーか本番かは各アカウントの trd_env(SIMULATE = ペーパー、REAL = 本番)から解決されます。--profile はどちらかを選択し、一致するアカウントが見つからない場合、CLI は安全側に失敗します。
使用方法
pip install futu-api(初回実行時)。JSON 出力。デフォルトプロファイルは paper。
python skills/futu/scripts/futu_cli.py status # checks OpenD reachability + resolves account
python skills/futu/scripts/futu_cli.py account
python skills/futu/scripts/futu_cli.py positions
python skills/futu/scripts/futu_cli.py orders [--executions]
python skills/futu/scripts/futu_cli.py quote --symbol HK.00700
python skills/futu/scripts/futu_cli.py history --symbol US.AAPL --period 1d --limit 90
# place (paper SIMULATE): qty in whole shares; market or limit
python skills/futu/scripts/futu_cli.py place --symbol HK.00700 --side buy --qty 100 --type limit --limit-price 350
python skills/futu/scripts/futu_cli.py cancel --order-id <id>
# live (REAL): needs FUTU_TRADE_PWD_MD5 in .env AND --confirm-live
python skills/futu/scripts/futu_cli.py --profile live --confirm-live place --symbol HK.00700 --side buy --qty 100
シンボル形式は必須です: <MARKET>.<code> — HK.00700、US.AAPL、SH.600519、SZ.000001。期間: 1m 5m 15m 30m 1h 1d 1w 1M。
注意点
- 「OpenD gateway not reachable」= OpenD が実行されていない、ログインしていない、別のマシンにある、またはホスト/ポートが間違っているかのいずれかです。「これは何か」のセクションを読み直してください。
- Futu は整数株の
--qtyを要求します。金額指定の注文はありません。 - 本番注文には
FUTU_TRADE_PWD_MD5が必要です(取引パスワードそのものではなく、取引パスワードの MD5 ハッシュ)。CLI は本番の場合のみ取引コンテキストをロック解除します。ペーパーは決してロック解除されません。 - HK/A 株の売買単位が適用されます — 端数株の数量は取引所に拒否される場合があります。