楽天証券 MarketSpeed II RSS をPythonから使う方法

準備・環境構築

MarketSpeed II RSSとは?

楽天証券のMarketSpeed II RSS(リアルタイムスプレッドシート)は、Excelへリアルタイム株価データを配信できる機能です。PythonからはCOMインターフェース経由でアクセスできます。

⚠️ 注意:MarketSpeed II RSSはWindows専用です。MacやLinuxでは動作しません。

前提条件

  • 楽天証券の口座(無料開設可能)
  • MarketSpeed II のインストールとログイン
  • Windows環境(7/8/10/11)
  • Python + pywin32ライブラリ

環境セットアップ

pywin32のインストール

pip install pywin32

MarketSpeed II の設定確認

MarketSpeed II を起動し、ツール → RSS設定 でRSSが有効になっていることを確認してください。

Pythonからの基本接続

import win32com.client
import time

# MarketSpeed II RSSへ接続
rss = win32com.client.Dispatch("MarketSpeedII.RSS")

# 接続確認
print(f"接続状態: {rss.IsConnected()}")

株価データの取得

import win32com.client
import pandas as pd
from datetime import datetime

def get_stock_price(ticker_code):
    """
    銘柄コードから現在株価を取得する
    ticker_code: 例) "7203" (トヨタ自動車)
    """
    rss = win32com.client.Dispatch("MarketSpeedII.RSS")
    
    if not rss.IsConnected():
        print("MarketSpeed IIに接続できません。起動してください。")
        return None
    
    # 銘柄情報の取得
    symbol = f"{ticker_code}.T"  # 東証の場合
    
    # 現在値
    current_price = rss.GetCurrentPrice(symbol)
    # 前日終値
    prev_close = rss.GetPrevClose(symbol)
    # 出来高
    volume = rss.GetVolume(symbol)
    # 銘柄名
    name = rss.GetName(symbol)
    
    return {
        "銘柄コード": ticker_code,
        "銘柄名": name,
        "現在値": current_price,
        "前日終値": prev_close,
        "出来高": volume,
        "更新時刻": datetime.now().strftime("%H:%M:%S")
    }

# 使用例
data = get_stock_price("7203")
if data:
    for key, val in data.items():
        print(f"{key}: {val}")

複数銘柄の一括取得

import win32com.client
import pandas as pd
import time

def get_multiple_stocks(ticker_list, interval=1):
    """
    複数銘柄の株価を取得してDataFrameに格納する
    ticker_list: 銘柄コードのリスト
    interval: 取得間隔(秒)
    """
    rss = win32com.client.Dispatch("MarketSpeedII.RSS")
    
    results = []
    for ticker in ticker_list:
        symbol = f"{ticker}.T"
        try:
            row = {
                "コード": ticker,
                "銘柄名": rss.GetName(symbol),
                "現在値": rss.GetCurrentPrice(symbol),
                "前日比": rss.GetChangeRatio(symbol),
                "出来高": rss.GetVolume(symbol),
            }
            results.append(row)
            time.sleep(interval)  # API負荷軽減
        except Exception as e:
            print(f"{ticker} 取得エラー: {e}")
    
    return pd.DataFrame(results)

# 主要銘柄リスト
tickers = ["7203", "9984", "6758", "8306", "4063"]
df = get_multiple_stocks(tickers)
print(df)

リアルタイム監視スクリプト

import win32com.client
import pandas as pd
import time
from datetime import datetime

def monitor_stocks(ticker_list, update_interval=5):
    """
    株価をリアルタイムで監視する
    update_interval: 更新間隔(秒)
    """
    rss = win32com.client.Dispatch("MarketSpeedII.RSS")
    
    print("株価監視開始(Ctrl+Cで停止)")
    print("-" * 60)
    
    try:
        while True:
            print(f"
更新時刻: {datetime.now().strftime('%H:%M:%S')}")
            
            data = []
            for ticker in ticker_list:
                symbol = f"{ticker}.T"
                price = rss.GetCurrentPrice(symbol)
                change = rss.GetChange(symbol)
                change_rate = rss.GetChangeRatio(symbol)
                
                # 前日比に応じて表示を変える
                sign = "▲" if change >= 0 else "▼"
                data.append({
                    "コード": ticker,
                    "現在値": f"{price:,.0f}円",
                    "前日比": f"{sign}{abs(change):,.0f}円 ({change_rate:.2f}%)"
                })
            
            df = pd.DataFrame(data)
            print(df.to_string(index=False))
            
            time.sleep(update_interval)
    
    except KeyboardInterrupt:
        print("監視を停止しました")

# 監視する銘柄
watch_list = ["7203", "9984", "6758"]
monitor_stocks(watch_list)

注意事項とよくあるエラー

「pywintypes.com_error」が発生する場合

  • MarketSpeed II が起動していることを確認
  • 楽天証券にログイン済みであることを確認
  • RSS機能が有効になっていることを確認

立会時間外について

東証の立会時間(9:00〜11:30、12:30〜15:30)以外はリアルタイムデータが取得できません。取引時間内に実行してください。

まとめ

MarketSpeed II RSSを使うことで、楽天証券のリアルタイムデータをPythonから直接利用できます。ただしWindows専用であることに注意が必要です。MacやLinuxを使う場合は、yfinanceなどのライブラリを検討しましょう。

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