SBI証券APIの使い方完全ガイド(口座開設から実装まで)

準備・環境構築

本記事はPython学習・情報提供を目的としています。投資判断はご自身の責任で行ってください。

SBI証券のAPIとは

SBI証券が提供する取引ツール「HYPER SBI 2」には、ローカルHTTP APIが搭載されています。このAPIを使うと、Pythonから注文・残高照会・保有銘柄確認などができます。ただし、WindowsのHYPER SBI 2が起動している状態でのみ動作する点に注意が必要です。

SBI証券APIの基本情報

項目内容
APIの種類ローカルHTTP API(REST)
エンドポイントhttp://localhost:18080
対応OSWindowsのみ(Mac非対応)
必要なツールHYPER SBI 2(起動中)
料金無料(口座開設のみ必要)
認証方式なし(ローカル接続のみ)

事前準備

1. SBI証券の口座開設

SBI証券の口座をお持ちでない方は、まず公式サイトから口座開設を行います。審査は通常1〜3営業日です。

2. HYPER SBI 2のインストール

口座開設後、SBI証券のサイトから「HYPER SBI 2」をダウンロード・インストールします。Windowsのみ対応しています。

3. APIを有効化する

HYPER SBI 2を起動し、設定メニューから「外部連携API」を有効化します。

PythonからAPIを呼び出す

必要なライブラリ

pip install requests

残高照会

import requests
import json

BASE_URL = "http://localhost:18080"

def get_balance():
    """口座残高を取得する"""
    url = f"{BASE_URL}/kabusapi/wallet/cash"
    response = requests.get(url)
    
    if response.status_code == 200:
        data = response.json()
        print(f"現金残高: {data.get('StockAccountWallet', 0):,.0f}円")
        return data
    else:
        print(f"エラー: {response.status_code}")
        return None

get_balance()

保有銘柄の確認

import requests
import pandas as pd

BASE_URL = "http://localhost:18080"

def get_positions():
    """保有銘柄一覧を取得する"""
    url = f"{BASE_URL}/kabusapi/positions"
    response = requests.get(url)
    
    if response.status_code == 200:
        positions = response.json()
        df = pd.DataFrame(positions)
        if not df.empty:
            display_cols = ['Symbol', 'SymbolName', 'Side', 'Qty', 'Price', 'ProfitLoss']
            print(df[display_cols].to_string(index=False))
        return df
    else:
        print(f"エラー: {response.status_code}")
        return None

get_positions()

株価取得

import requests

BASE_URL = "http://localhost:18080"

def get_board(symbol, exchange=1):
    """板情報(現在値)を取得する
    exchange: 1=東証, 3=名証, 6=福証, 9=札証
    """
    url = f"{BASE_URL}/kabusapi/board/{symbol}@{exchange}"
    response = requests.get(url)
    
    if response.status_code == 200:
        data = response.json()
        print(f"銘柄: {data.get('SymbolName')}")
        print(f"現在値: {data.get('CurrentPrice'):,.0f}円")
        print(f"前日比: {data.get('ChangePreviousPrice'):+,.0f}円")
        print(f"出来高: {data.get('TradingVolume'):,.0f}株")
        return data
    else:
        print(f"エラー: {response.status_code}")

# トヨタ自動車(7203)東証
get_board("7203", 1)

よくある質問

質問回答
Macでも使えますか?いいえ。HYPER SBI 2はWindowsのみ対応です
APIキーは必要ですか?不要。ローカル接続なので認証なしで使えます
リアルタイムデータは取得できますか?はい。WebSocketでリアルタイム受信も可能です
本番取引の注文はできますか?はい。ただし十分なテストを行ってください

まとめ

SBI証券のローカルHTTP APIは、Pythonから株価取得・残高照会・注文まで幅広く対応しています。Windows環境でHYPER SBI 2が起動中であれば、追加費用なしで使えます。まずは残高照会と株価取得から試してみましょう。

タイトルとURLをコピーしました