Skip to content
Go back

【メモ】日本株式を限りなく無料でシステムトレード開発する環境

Updated:
Edit page

日本株式でできるだけ無料でシステムトレードを開発できる環境メモ

日本株式でシステムトレードを開発するにあたり、できるだけ無料で利用できる環境を調べました。
条件は以下のとおりです。


J-Quants

👉 公式サイト

サービス概要
日本取引所グループ(JPX)が提供する、投資家向けデータ分析プラットフォーム。株価や財務情報などをAPIで取得できるサービスです。

特徴


Kabuステーション(kabuステAPI)

👉 公式ドキュメント

サービス概要
auカブコム証券が提供する株式取引用ツール「kabuステーション」と連携して利用できる公式API。株価データや発注機能をプログラムから直接操作できます。

特徴


立花証券(e支店)

👉 公式サイト

サービス概要
立花証券が提供する個人向けネット証券サービスで、APIは公式には提供されていませんが、Web画面をPythonで自動操作することで取引を自動化する利用例が過去に共有されていました。

特徴


料金・データ比較表

三者の特徴を横並びに整理すると次のようになります(2026年時点の私が確認した範囲の情報です)。

項目J-Quantskabuステーション立花証券 e支店
公式APIあり(REST)あり(REST/PUSH)なし
無料で使える範囲12週間遅れ日足口座開設後、月 0〜口座開設のみ無料
リアルタイム性×(遅延あり)◎(PUSH対応)△(画面スクレイプ)
銘柄数全銘柄最大50銘柄同時全銘柄
OS要件不問Windows必須Windows/Mac
自動化しやすさ○(強制ログアウト)×

Python から J-Quants API を叩く例

J-Quants は REST API なので、以下のように requests ライブラリから直接呼び出せます。

import os
import requests

# リフレッシュトークンは公式マイページで発行
REFRESH_TOKEN = os.environ["JQUANTS_REFRESH_TOKEN"]

# IDトークンを取得
auth_res = requests.post(
    "https://api.jquants.com/v1/token/auth_refresh",
    params={"refreshtoken": REFRESH_TOKEN},
)
id_token = auth_res.json()["idToken"]

# 日足データを取得(例: トヨタ自動車)
headers = {"Authorization": f"Bearer {id_token}"}
quotes = requests.get(
    "https://api.jquants.com/v1/prices/daily_quotes",
    headers=headers,
    params={"code": "7203", "from": "2025-01-01", "to": "2025-12-31"},
).json()

for q in quotes["daily_quotes"][:5]:
    print(q["Date"], q["Close"])

無料プランでも「12週間以上前のデータ」なら過去2年分が取得できるため、スイングトレードのバックテスト用としては十分使えます。


kabuステーション API の呼び出し例

kabuステーション API は、kabuステーション本体を起動した状態でローカルの localhost:18080 に REST リクエストを送る構成になっています。Python からの最小構成は以下のようになります。

import requests

# 事前に kabuステーションの [API] → [API 設定] でパスワードを設定
API_PASSWORD = "your-api-password"

# トークンを取得
token_res = requests.post(
    "http://localhost:18080/kabusapi/token",
    json={"APIPassword": API_PASSWORD},
)
token = token_res.json()["Token"]

# 銘柄コード指定で現在値を取得
headers = {"X-API-KEY": token}
board = requests.get(
    "http://localhost:18080/kabusapi/board/7203@1",  # トヨタ東証
    headers=headers,
).json()

print(board["CurrentPrice"], board["BidPrice"], board["AskPrice"])

本番モードと検証モードでポート(18080 / 18081)が分かれているため、発注系のテストは必ず検証モードで試すようにしています。


用途別の使い分け

私の経験上、それぞれ次のように役割分担するのが現実的でした。

一つのサービスにすべてを任せるのではなく、開発フェーズに応じて組み合わせるのが無料運用を長続きさせるコツだと感じています。


まとめ

やはり、APIでデータを取得できる環境が最も実装しやすいと感じます。
今後は、より多くの証券会社に公式APIの提供を広げてもらえると、個人開発者にとってシステムトレードの環境が一層整うでしょう。


Edit page
Share this post on:

Related Posts


Previous Post
投資をするのに最初に決めておくべき事項
Next Post
FXでシステムトレードを開発している理由