【Python実装】SBI証券APIで自動売買システムを自作する方法【HyperSBI2完全ガイド】

準備・環境構築

※本記事のコードや情報は執筆時点の仕様に基づいています。投資は自己責任であり、必ずデモ環境や少額資金でテストした上で運用してください。

SBI証券でPythonを使った自動売買を始めたいけれど、「そもそもAPIは公開されているのか」「個人でも使えるのか」という疑問で立ち止まっていませんか。

📘 外部参考Python 公式サイト(ダウンロード)Python 公式ドキュメント(日本語)

SBI証券は日本最大級の証券会社ですが、HyperSBI2には現時点でREST APIは公開されていません。インターネット上には誤った情報が多く流通しているため、本記事では正確な状況を整理した上で、個人投資家が実際に使える代替手段を解説します。


SBI証券APIとは何か:全体像を把握する

SBI証券が提供するAPI連携の種類

SBI証券および関連サービスのAPI連携は、主に以下のように分類されます。

種別名称対象特徴
非公式連携スクレイピング系ライブラリPython利用者全般コミュニティ製・サポート外・仕様変更に脆弱
関連会社APIkabuステーション®APIauカブコム証券ユーザーSBIグループ傘下のauカブコム証券が提供する正式REST API(SBI証券とは別会社)

⚠️ 重要:HyperSBI2はSBI証券の高機能株取引ツールですが、現時点でPythonなどから呼び出せるREST APIは公開されていません。ネット上には「HyperSBI2 API」「localhost:18080」などのキーワードで誤った実装例が流通していますが、これらはauカブコム証券の「kabuステーション®API」の仕様を混同したものです。

個人でSBI証券を使った自動化は可能か

SBI証券のHyperSBI2に公式REST APIはありませんが、以下のような代替手段で一部の自動化を実現できます。

  • 非公式ライブラリ(スクレイピング系):コミュニティが作成したSBI証券ウェブ画面をスクレイピングするライブラリが存在します。ただし仕様変更で突然動かなくなるリスクがあります。
  • yfinanceによる価格データ取得:注文は手動で行いつつ、Yahoo! Financeから無料でリアルタイム株価を取得してシグナル判定のみを自動化する手法です。シンプルで安定しています。
  • auカブコム証券へ口座開設:SBIグループ傘下のauカブコム証券は「kabuステーション®API」という正式なREST APIを提供しており、Pythonから株価取得・注文送信が可能です。

📘 外部参考yfinance 公式GitHubリポジトリ(README・最新版) / PyPIページ

HyperSBI2とHyperSBIの違い

旧バージョンの「HyperSBI」とその後継「HyperSBI2」では、機能が大きく異なります。

  • HyperSBI(旧): 2023年にサービス終了。
  • HyperSBI2(現行): 2022年リリース。高機能な株取引UIを提供。REST APIは現時点で非公開。

kabuステーション®APIとは:SBIグループで使える正式REST API

SBIグループ傘下のauカブコム証券が提供するkabuステーション®APIは、個人投資家が利用できる数少ない国内証券会社の正式REST APIです。

  • auカブコム証券の口座開設(無料)と取引ツール「kabuステーション®」のインストールが必要
  • ツールを起動した状態で、http://localhost:18080 に対してPythonからHTTPリクエストを送信できる
  • 株価取得・注文送信・残高照会などが公式ドキュメントに基づいて実装可能
  • 公式ドキュメント:https://kabucom.github.io/kabusapi/ptal/

注意点として、これはSBI証券のAPIではなくauカブコム証券(別会社)のAPIです。SBI証券との口座は別々に管理することになりますが、SBIグループのサービスとして一定の信頼性があります。


yfinanceでSBI証券銘柄の価格監視を自動化する

SBI証券口座のまま、注文送信を自動化せずに価格監視だけを自動化するアプローチが現実的です。yfinanceを使えば日本株の株価を無料で取得でき、閾値を超えたらDiscord等で通知することができます。

# 必要ライブラリのインストール
pip install yfinance requests
# ====================================================
# 設定エリア
# ====================================================
TARGET_SYMBOL   = "7203.T"   # トヨタ自動車(Yahoo Finance形式:末尾に.T)
UPPER_THRESHOLD = 2800       # この価格を上回ったら通知
LOWER_THRESHOLD = 2600       # この価格を下回ったら通知
CHECK_INTERVAL  = 60         # 監視間隔(秒)

DISCORD_WEBHOOK_URL = "https://discord.com/api/webhooks/YOUR_WEBHOOK_URL"

# ====================================================
# 価格監視ループ
# ====================================================
import time
import yfinance as yf
import requests

def get_current_price(symbol: str) -> float:
    """Yahoo Financeから現在株価を取得する"""
    ticker = yf.Ticker(symbol)
    hist = ticker.history(period="1d", interval="1m")
    if hist.empty:
        raise ValueError(f"株価データを取得できませんでした: {symbol}")
    return hist["Close"].iloc[-1]

def send_discord_notification(message: str):
    """Discordに通知を送信する"""
    payload = {"content": message}
    response = requests.post(DISCORD_WEBHOOK_URL, json=payload)
    return response.status_code

def monitor_price():
    """価格監視ループ(Ctrl+Cで停止)"""
    print(f"監視開始: {TARGET_SYMBOL}")
    while True:
        try:
            price = get_current_price(TARGET_SYMBOL)
            print(f"現在値: {price:.0f}円")
            if price >= UPPER_THRESHOLD:
                send_discord_notification(f"⚠️ {TARGET_SYMBOL} が上限閾値を突破: {price:.0f}円")
            elif price <= LOWER_THRESHOLD:
                send_discord_notification(f"⚠️ {TARGET_SYMBOL} が下限閾値を下回った: {price:.0f}円")
        except Exception as e:
            print(f"エラー: {e}")
        time.sleep(CHECK_INTERVAL)

if __name__ == "__main__":
    monitor_price()

処理フローの解説:

  • Yahoo Finance(yfinance)から1分足データを取得し、最新の終値を現在値として使用します
  • 日本株のティッカーシンボルは末尾に.Tをつける形式です(例: トヨタ = 7203.T
  • 閾値を超えた場合はDiscord Webhookで通知します。注文送信は行わないため、判断と執行は人間が行います
  • CHECK_INTERVALを短くしすぎるとYahoo Financeにブロックされる場合があります。60秒以上を推奨します

📘 外部参考Webhookの使い方(Discord公式ヘルプ・日本語)


まとめ

この記事では、SBI証券APIに関する正確な情報と、個人投資家が実際に使える代替手段を解説しました。

要点を整理します。

  • HyperSBI2には現時点でREST APIは公開されていません。ネット上の「HyperSBI2 API」の実装例の多くは、auカブコム証券のkabuステーション®APIを混同したものです
  • SBIグループで正式なREST APIを使いたい場合は、auカブコム証券のkabuステーション®APIが現実的な選択肢です
  • SBI証券口座を維持したまま自動化を行うなら、yfinanceによる価格監視+Discord通知のアプローチが安定しておりシンプルです
  • 注文の自動送信は、公式APIなしには正式にはサポートされていません。リスク管理の観点から、まずは通知のみの構成から始めることを推奨します

アルゴリズム取引の第一歩は、正確な情報をもとに現実的な手段を選ぶことです。本記事が、その判断の助けになれば幸いです。

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