楽天証券のMarketSpeed II RSSはExcelのDDE/RSS機能を活用してリアルタイム株価を取得できるツールです。この機能をPythonと組み合わせることで、独自の自動売買システムを構築できます。ということで、この記事では、xlwingsを使ったPython接続から、シグナル検出・注文自動化まで実践的に解説します。
📘 外部参考:Python 公式 / Python 公式ドキュメント(日本語)
📘 外部参考:楽天証券 MarketSpeed II RSS(公式)
MarketSpeed II RSSとは?DDEとRSSの仕組み
MarketSpeed II RSSは楽天証券が提供する株価配信ツールです。Microsoft Excel上でDDE(Dynamic Data Exchange)またはRSS(Real-time Stock Service)プロトコルを通じて、株価・気配値・板情報などをリアルタイムで受信できます。
主な特徴:
- 国内株・ETFのリアルタイム株価配信
- Excel上でのリアルタイム更新(DDE/RSSセル関数)
- 無料で利用可能(楽天証券口座が必要)
- 発注機能は別途楽天証券の注文APIが必要
PythonとMarketSpeed II RSSの接続方法(xlwings経由)
PythonからExcelのDDEデータを読み取るにはxlwingsライブラリが最も実用的です。xlwingsはPython-Excel間のブリッジとして機能し、Excelのセルに展開されたRSSデータをPythonから取得できます。
環境構築
# 必要なライブラリのインストール
# pip install xlwings pandas
import xlwings as xw
import pandas as pd
import time
接続の前提条件
- Windows環境(MacはExcel DDE非対応)
- Microsoft Excel(2016以降推奨)
- MarketSpeed II がインストール・ログイン済み
- ExcelにRSS関数を設定したブックが開いている
リアルタイム株価データの取得コード例
まずExcel上でRSS関数を設定します。例えばセルA1に以下のような関数を入力します:
=RSS("7203.T","現在値")
次にPythonからこのExcelブックを参照してデータを取得します:
import xlwings as xw
import pandas as pd
import time
from datetime import datetime
def get_realtime_price(book_name: str, sheet_name: str, cell: str):
"""
ExcelのRSSセルからリアルタイム株価を取得
Args:
book_name: Excelファイル名 (例: 'rss_data.xlsx')
sheet_name: シート名
cell: RSS関数が入力されたセル (例: 'A1')
Returns:
現在値(float)
"""
try:
wb = xw.Book(book_name)
ws = wb.sheets[sheet_name]
price = ws[cell].value
return float(price) if price else None
except Exception as e:
print(f"データ取得エラー: {e}")
return None
if __name__ == "__main__":
book = "marketspeed_rss.xlsx"
sheet = "株価データ"
print("リアルタイム株価監視を開始します...")
while True:
price = get_realtime_price(book, sheet, "B2")
timestamp = datetime.now().strftime("%H:%M:%S")
print(f"[{timestamp}] トヨタ(7203): {price}円")
time.sleep(1)
複数銘柄の一括取得
import xlwings as xw
import pandas as pd
def get_multiple_stocks(book_name, sheet_name, tickers, start_row=2):
wb = xw.Book(book_name)
ws = wb.sheets[sheet_name]
data = []
for i, ticker in enumerate(tickers):
row = start_row + i
record = {
'ticker': ticker,
'price': ws[f'B{row}'].value,
'change': ws[f'C{row}'].value,
'volume': ws[f'D{row}'].value,
'bid': ws[f'E{row}'].value,
'ask': ws[f'F{row}'].value,
}
data.append(record)
return pd.DataFrame(data)
tickers = ["7203.T", "9984.T", "6758.T", "8306.T"]
df = get_multiple_stocks("rss.xlsx", "Sheet1", tickers)
print(df)
シグナル検出と注文自動化のサンプル
取得したリアルタイムデータをもとに売買シグナルを検出し、楽天証券の発注機能と組み合わせる方法を解説します。
移動平均クロスによるシグナル検出
📘 外部参考:Moving Average(Investopedia)
📘 外部参考:Golden Cross(Investopedia)
import xlwings as xw
import numpy as np
from collections import deque
class MovingAverageCrossStrategy:
"""
移動平均クロス戦略
短期MA(5)が長期MA(25)を上抜けしたら買いシグナル
"""
def __init__(self, short_period=5, long_period=25):
self.short_period = short_period
self.long_period = long_period
self.price_history = deque(maxlen=long_period)
self.last_signal = None
def update(self, price):
self.price_history.append(price)
if len(self.price_history) < self.long_period:
return None
prices = list(self.price_history)
short_ma = np.mean(prices[-self.short_period:])
long_ma = np.mean(prices)
if short_ma > long_ma and self.last_signal != 'BUY':
self.last_signal = 'BUY'
return 'BUY'
elif short_ma < long_ma and self.last_signal != 'SELL':
self.last_signal = 'SELL'
return 'SELL'
return None
strategy = MovingAverageCrossStrategy()
while True:
price = get_realtime_price("rss.xlsx", "Sheet1", "B2")
if price:
signal = strategy.update(price)
if signal == 'BUY':
print(f"買いシグナル!現在値: {price}円")
elif signal == 'SELL':
print(f"売りシグナル!現在値: {price}円")
time.sleep(1)
注意点・制限事項
- Windows専用:ExcelのDDE機能はWindowsのみ対応。MacやLinuxでは動作しません。
- Excelが必要:MarketSpeed II RSSはExcel上で動作するため、Excelのライセンスが必要です。
- 安定性:xlwings経由のExcel操作は長時間稼働するとメモリリークが発生することがあります。定期的な再起動を推奨。
- 遅延:DDE/RSS経由のデータ取得には数百ミリ秒〜数秒の遅延が発生します。高頻度トレードには向きません。
- 発注について:MarketSpeed II RSSはデータ取得のみ。発注には楽天証券の別の仕組みが必要です。
楽天証券APIの今後(REST API移行の動向)
2024年以降、楽天証券は楽天証券 iSPEED APIの整備を進めており、将来的にはREST APIベースでの株価取得・発注が可能になると見られています。現時点ではDDE/RSSが主流ですが、REST API化が実現すればWindowsに依存しないクロスプラットフォームな自動売買が可能になります。最新情報は楽天証券の公式サイトをご確認ください。
まとめ
楽天証券のMarketSpeed II RSSとPythonを組み合わせることで、コストを抑えつつリアルタイム株価データを活用した自動売買システムが構築できます。xlwingsによるExcel接続が現実的な手段ですが、Windows環境依存という制約があります。より本格的なアルゴリズムトレードを学びたい方には、以下のプログラミングスクールも参考にしてみてください。
※本記事はアフィリエイト広告を含みます
Pythonプログラミングをもっと学ぶ
アルゴトレードの自動化・AI活用に役立つ学習リソースをご紹介します。
- 生成AIプログラミングの教科書『大蔵~TAIZO~』 — ChatGPT・Gemini等の生成AIを使ったPythonコーディングを体系的に学べる書籍。AI×自動売買のコード自動生成にも活用できます。
- プログラミングスクール【Enjoy Tech!(エンジョイテック)】 — 実践的なPythonプログラミングを学べるオンラインスクール。未経験からエンジニアを目指す方に特におすすめ。
- EBAエデュケーション — プログラミング×金融特化の学習スクール。Pythonで投資・自動売買を学びたい方に最適です。
- ITエンジニア育成スクール【CODE×CODE】 — 次世代のITエンジニアを育成する実践型スクール。バックエンド・インフラ系のスキルを習得できます。
📘 外部参考:Google Gemini API(公式)
📘 外部参考:OpenAI API ドキュメント(公式)
無料データ、証券会社データ、リアルタイムデータの違いを比較した記事はこちら。
→ yfinance・楽天RSS・moomoo・SBI CSV データ取得方法比較
結論から言うと:
- DDE/RSS経由でリアルタイムの気配値・歩み値・板情報を取得できます
- xlwingsでPythonからExcelのRSSセルを読み取る仕組みです
- 発注機能もあるので、自動売買システムへの発展も可能です

