RAKUTENモード 基本仕様書 - stockautoflow/stockautov3 GitHub Wiki

はい、承知いたしました。

RAKUTENモード(楽天証券連携)における基本仕様書を作成します。


RAKUTENモード 基本仕様書

1. 概要

本仕様書は、自動売買システムのリアルタイム取引機能において、楽天証券のトレーディングツール「マーケットスピード II RSS」と連携する「RAKUTENモード」の基本仕様を定義するものです。

システムはbacktraderの取引ロ-ジックとマーケットスピード II を直接接続するのではなく、Excelワークブック (trading_hub.xlsm) を仲介役(ハブ)として利用し、データの受け渡しを行います。


2. システムアーキテクチャ

RAKUTENモードは、以下の主要コンポーネントで構成されます。

コンポーネント | 説明 -- | -- Excel Hub | リアルタイムの株価データと口座情報を保持するExcelファイル。Pythonとマーケットスピード II RSS間のデータブリッジとして機能します。 ExcelBridge | Excel Hubとの通信を担うPythonコンポーネント。バックグラウンドで定期的にExcelからデータを読み取り、Python内部にキャッシュします。 RakutenData | ExcelBridgeからデータを取得し、backtraderエンジンが利用できるデータフィード形式に変換するカスタムデータフィードです。 RakutenBroker | backtraderからの売買シグナルを受け取り、口座情報をExcelBridge経由で取得するカスタムブローカー。注文執行はログ出力のみの手動モードとして動作します。 Orchestrator | 全体の処理を管理するメインスクリプト (run_realtrade.py)。各コンポーネントを初期化し、銘柄ごとに取引スレッドを起動・管理します。

データフロー

  • 価格取得: マーケットスピード IIExcel HubExcelBridgeRakutenDatabacktraderエンジン

  • 注文執行: backtraderエンジン → RakutenBrokerログファイルに出力(手動執行)


3. 主要コンポーネント仕様

3.1. ExcelBridge (src/realtrade/bridge/excel_bridge.py)

Excel Hubとの全ての通信を抽象化し、スレッドセーフなインターフェースを提供します。

  • 役割:

    • バックグラウンドスレッドを起動し、Excel Hubを定期的に監視。 1

    • Excelの

      リアルタイムデータシートから、各銘柄のOHLCV(始値・高値・安値・終値・出来高)および口座情報(買付余力)を読み取る。 2

    • 読み取ったデータをPython内部のキャッシュに保持する。 3

  • 主要メソッド:

    • start() / stop(): データ監視スレッドのライフサイクルを管理します。 4

    • get_latest_data(symbol): 指定された銘柄の最新価格データをキャッシュから返します。 5

    • get_cash(): 最新の買付余力をキャッシュから返します。 6

    • place_order(...): 売買シグナル発生時に呼び出されますが、実際の注文は行わず、注文内容をログに出力するに留めます。 7

3.2. RakutenData (src/realtrade/rakuten/rakuten_data.py)

ExcelBridgeをデータソースとする、backtrader用のカスタムライブデータフィードです。

  • 役割:

    • backtraderエンジンからの要求に応じて、ExcelBridgeに最新データを問い合わせる。 8

    • 価格に変動があった場合、新しいバー(OHLCV)を生成してエンジンに供給する。 9

    • 価格に変動がない場合、「ハートビート」として

      値動きがゼロにならないよう加工したバーを供給する。 10

  • 主要な仕様:

    • ハートビート処理: データが更新されない場合でもシステムが時を進められるよう、ハートビートバーを生成します。この際、high(高値)に微小な値 (epsilon) を加算することで、highlowが同一値になることを防ぎます。これにより、ADXのような値幅を計算に利用するインジケーターのゼロ除算エラーを回避します。 11

    • stop(): 外部からデータ供給スレッドを安全に停止させるためのメソッドを提供します。 12

3.3. RakutenBroker (src/realtrade/rakuten/rakuten_broker.py)

手動発注を前提とした、backtrader用のカスタムブローカーです。

  • 役割:

    • 戦略が生成した売買注文を受け取る。

    • ExcelBridgeを通じて、リアルタイムの口座情報をbacktraderエンジンに提供する。 13

  • 主要な仕様:

    • getcash(): ExcelBridgeに連携し、Excel Hubから取得した最新の買付余力を返します。 14

    • buy() / sell() / cancel(): これらの注文関連メソッドは、実際の注文APIを呼び出しません。代わりに、注文内容をログに出力し、backtraderの内部的なポジション管理のみを行います。実際の取引は、ユーザーがログを確認して手動で行う必要があります。 15


4. 設定

本モードの動作は、以下の設定ファイルで制御されます。

  • ファイル: src/realtrade/config_realtrade.py

  • 主要パラメータ:

    • LIVE_TRADING: Trueに設定する必要があります。

    • DATA_SOURCE: 'RAKUTEN'に設定する必要があります。

    • EXCEL_WORKBOOK_PATH: 連携ハブとなるtrading_hub.xlsmへの絶対パスまたは相対パスを指定します。

⚠️ **GitHub.com Fallback** ⚠️