稼働までの手順
KabuLinkは、利用者自身がTradingViewで作成したアラートを、利用者自身の証券口座接続へ中継するサービスです。売買シグナル、投資判断、銘柄推奨は提供しません。
全体の流れ
- アカウント登録と利用規約・プライバシーポリシー・リスク説明への同意。
- 必要に応じてStarterまたはProを開始。既存契約の変更は契約管理から行います。
- 証券口座接続を作成し、最初はdry_run、readonly、simulate、paper等の安全なモードで確認。
- 接続テストを実行し、接続一覧のHealthがokになることを確認。
- TradingViewのWebhook URLとMessage JSONを設定。
- Webhookテストと注文ログで、意図した銘柄・数量・口座・戦略IDが記録されることを確認。
- ライブ取引へ進む場合だけ、少額・最小数量で最終確認。
1. アカウント登録
KabuLink画面のアカウント欄にメールアドレスとパスワードを入力し、3つの確認チェックを入れて登録します。登録後、API Tokenが自動入力されます。
- API TokenはKabuLink画面上の操作に使われます。
- ログインし直すと新しいAPI Tokenが発行され、古いTokenは無効になります。
- 契約状態はAPI Token欄の下に表示されます。
2. 契約と接続数
1つの契約内で複数の証券口座接続を持てます。口座を増やすために同じユーザーで複数契約する必要はありません。
- free: 接続1件、月間Webhook 100件。
- starter: 接続3件、月間Webhook 2000件。
- pro: 接続10件、月間Webhook 20000件。
3. 接続作成
接続は「発注先口座・リスク設定・Webhook URL」の単位です。同じ証券口座と同じリスク設定であれば、複数のTradingView戦略や複数銘柄で同じWebhookを使い回せます。
- Account ID、Market、Account Type、Tax Type、Trade Modeを実口座に合わせます。
- Account IDは証券会社APIが口座を識別するIDです。ログインID、メールアドレス、KabuLinkのユーザーIDではありません。
- Allowed SymbolsはKabuLink側の任意の安全制限です。空欄ならKabuLink側では銘柄を絞りません。
- Allowed Symbolsは取引可能銘柄一覧ではありません。実際に取引できるかどうかは、証券会社側の市場、口座区分、権限、商品種別、取引時間、注文種別で判定されます。
- Max Order Quantity、Max Daily Orders、Max Signal Age Secondsを先に保守的に設定します。
- 最初はTrade Modeをdry_run、simulate、paper等にします。
4. Account IDの取得方法
Account IDは、証券会社のAPIやGatewayが返す口座識別子を入力します。形は証券会社ごとに異なります。
- Webull: OpenAPIのaccount_listで返るaccount_idを使います。メールアドレスやWebullログインIDではありません。
- IBKR: TWSまたはIB Gatewayの口座選択・Account画面に表示される口座IDを使います。紙取引ではDUから始まるID、本番ではUから始まるIDになることが一般的です。
- moomoo: OpenDの口座一覧で返るacc_id等の口座識別子を使います。SIMULATE/REALやMarketと一致させます。
- 複数口座が表示される場合は、発注したい口座、Market、Account Type、Tax Typeが一致するものを選びます。
5. Webullの場合
WebullはOpenAPI Key/Secret署名方式で扱います。通常時はKabuLinkがバックグラウンドで読み取りAPIを確認し、異常時のみユーザー対応を促します。
- Webull OpenAPI Key/Secretが有効であること。
- KabuLinkサーバーIPがWebull側の許可IPに含まれていること。
- Account IDはOpenAPIのaccount_listで返るaccount_idを入力し、Marketと一致していること。
- 接続一覧のWebull状態または接続テストでokになること。
- api_key_invalid、ip_not_allowed、permission_denied等が出た場合だけWebull側設定を確認します。
6. Saxoの場合
SaxoはAccountKeyで口座を選び、さらに銘柄ごとにSaxo側のUicとAssetTypeを解決してから接続を保存します。TradingViewのtickerだけではSaxoの発注先銘柄を一意に決められない場合があるためです。
- ブローカーでSaxoを選び、Saxo Environmentは最初はSIMを選択します。
- Saxo Developer PortalのSIM 24時間Token、またはOAuthで取得したAccess Tokenを入力します。
- 「Saxo口座候補取得」を押し、発注したい口座を選びます。ここで保存されるAccount IDはSaxoのAccountKeyです。
- Saxo銘柄検索にAAPL、NVDA、ISIN、銘柄名などを入力し、「Saxo銘柄候補取得」を押します。
- 候補のSymbol、Description、Currency、Exchange、AssetTypeを確認し、「この銘柄を使う」を押します。これでUic、AssetType、Saxo側Symbolが口座プロファイルに反映されます。
- 「接続を作成」または既存接続なら「接続を更新」を押して、AccountKey、Uic、AssetType、Saxo側Symbolを保存します。
- 接続一覧で対象接続を選び、接続テスト、Webhookテストの順に確認します。最初はdry_runのまま進めます。
- SIMでAAPLのようなtickerを使って確認する流れで問題ありません。
- 銘柄候補が複数出る場合は、取引したい市場・通貨・商品種別に一致する候補を選びます。
- Saxo接続は、誤発注防止のため、保存したSaxo銘柄マップにないTradingViewのsymbolを拒否します。複数銘柄を使う場合は、Saxo銘柄検索で対象銘柄を順番に追加してから接続を更新します。
- Saxoの実発注にはAccountKey、Uic、AssetType、LIVE環境、OAuth/Token、有効なLIVE許可が必要です。
- SIM Tokenは期限切れになるため、期限切れ時はSaxo側でTokenを再取得して接続情報を更新します。
7. 取引可能銘柄の確認
KabuLinkのAllowed Symbolsは安全のための許可リストであり、「この証券会社で取引できる銘柄一覧」を示すものではありません。
- 取引可能銘柄は、証券会社の画面、APIの銘柄検索、取引権限、口座区分、市場設定で確認します。
- KabuLinkでは接続テスト、Webull状態、dry_run/readonlyの注文Previewで、設定ミスや権限エラーを確認します。
- ライブ取引前は、対象銘柄ごとに最小数量またはPreviewで発注可否を確認してください。
8. TradingView設定
接続作成後、Webhook URL欄で対象接続を選択し、表示されたURLをTradingView AlertのWebhook URLに貼り付けます。MessageにはJSONを設定します。
{
"alert_id": "{{ticker}}-{{time}}",
"strategy_id": "swing-v1",
"strategy_name": "Swing v1",
"signal_time": "{{time}}",
"symbol": "AAPL",
"side": "buy",
"quantity": 1,
"order_type": "market"
}
- alert_idは重複しない値にします。
- strategy_idとstrategy_nameを入れると、戦略別の注文集計ができます。
- Max Signal Age Secondsを使う場合はsignal_timeを含めます。
9. 稼働前チェック
- 接続テストがok。
- Webhookテストで注文ログが作成される。
- 注文ログの口座プロファイル、Preview、Strategy、Symbol、Quantityが想定通り。
- TradingViewから実際のテストアラートを送ってログに残る。
- 異常時に問い合わせまたは通知で原因を確認できる。
10. ライブ取引へ進む場合
ライブ取引は最後の段階です。dry_runやreadonlyで一連の流れを確認した後、最小数量・限定銘柄・少ない注文数で確認してください。
- Trade Modeをrealにする前に、接続テストが直近okであること。
- WebullではWEBULL_DRY_RUN=0、WEBULL_READONLY=0、WEBULL_ENABLE_LIVE=1が必要です。
- IBKRやmoomooでは各Gateway/SDK側のライブ許可やログイン状態も確認します。
- 想定外の挙動があれば、接続をdisabledにして原因を確認します。