RAKUTENモード 基本仕様書 - stockautoflow/stockautov3 GitHub Wiki
はい、承知いたしました。
RAKUTENモード(楽天証券連携)における基本仕様書を作成します。
本仕様書は、自動売買システムのリアルタイム取引機能において、楽天証券のトレーディングツール「マーケットスピード II RSS」と連携する「RAKUTENモード」の基本仕様を定義するものです。
システムはbacktrader
の取引ロ-ジックとマーケットスピード II を直接接続するのではなく、Excelワークブック (trading_hub.xlsm
) を仲介役(ハブ)として利用し、データの受け渡しを行います。
RAKUTENモードは、以下の主要コンポーネントで構成されます。
コンポーネント | 説明 -- | -- Excel Hub | リアルタイムの株価データと口座情報を保持するExcelファイル。Pythonとマーケットスピード II RSS間のデータブリッジとして機能します。 ExcelBridge | Excel Hubとの通信を担うPythonコンポーネント。バックグラウンドで定期的にExcelからデータを読み取り、Python内部にキャッシュします。 RakutenData | ExcelBridgeからデータを取得し、backtraderエンジンが利用できるデータフィード形式に変換するカスタムデータフィードです。 RakutenBroker | backtraderからの売買シグナルを受け取り、口座情報をExcelBridge経由で取得するカスタムブローカー。注文執行はログ出力のみの手動モードとして動作します。 Orchestrator | 全体の処理を管理するメインスクリプト (run_realtrade.py)。各コンポーネントを初期化し、銘柄ごとに取引スレッドを起動・管理します。価格取得:
マーケットスピード II
→Excel Hub
→ExcelBridge
→RakutenData
→backtrader
エンジン注文執行:
backtrader
エンジン →RakutenBroker
→ ログファイルに出力(手動執行)
Excel Hubとの全ての通信を抽象化し、スレッドセーフなインターフェースを提供します。
-
役割:
-
バックグラウンドスレッドを起動し、Excel Hubを定期的に監視。 1
-
Excelの
リアルタイムデータ
シートから、各銘柄のOHLCV(始値・高値・安値・終値・出来高)および口座情報(買付余力)を読み取る。 2 -
読み取ったデータをPython内部のキャッシュに保持する。 3
-
-
主要メソッド:
-
start()
/stop()
: データ監視スレッドのライフサイクルを管理します。 4 -
get_latest_data(symbol)
: 指定された銘柄の最新価格データをキャッシュから返します。 5 -
get_cash()
: 最新の買付余力をキャッシュから返します。 6 -
place_order(...)
: 売買シグナル発生時に呼び出されますが、実際の注文は行わず、注文内容をログに出力するに留めます。 7
-
ExcelBridge
をデータソースとする、backtrader
用のカスタムライブデータフィードです。
-
役割:
-
backtrader
エンジンからの要求に応じて、ExcelBridge
に最新データを問い合わせる。 8 -
価格に変動があった場合、新しいバー(OHLCV)を生成してエンジンに供給する。 9
-
価格に変動がない場合、「ハートビート」として
値動きがゼロにならないよう加工したバーを供給する。 10
-
-
主要な仕様:
-
ハートビート処理: データが更新されない場合でもシステムが時を進められるよう、ハートビートバーを生成します。この際、
high
(高値)に微小な値 (epsilon
) を加算することで、high
とlow
が同一値になることを防ぎます。これにより、ADXのような値幅を計算に利用するインジケーターのゼロ除算エラーを回避します。 11 -
stop()
: 外部からデータ供給スレッドを安全に停止させるためのメソッドを提供します。 12
-
手動発注を前提とした、backtrader
用のカスタムブローカーです。
-
役割:
戦略が生成した売買注文を受け取る。
-
ExcelBridge
を通じて、リアルタイムの口座情報をbacktrader
エンジンに提供する。 13
-
主要な仕様:
-
getcash()
:ExcelBridge
に連携し、Excel Hubから取得した最新の買付余力を返します。 14 -
buy()
/sell()
/cancel()
: これらの注文関連メソッドは、実際の注文APIを呼び出しません。代わりに、注文内容をログに出力し、backtrader
の内部的なポジション管理のみを行います。実際の取引は、ユーザーがログを確認して手動で行う必要があります。 15
-
本モードの動作は、以下の設定ファイルで制御されます。
ファイル:
src/realtrade/config_realtrade.py
-
主要パラメータ:
LIVE_TRADING
:True
に設定する必要があります。DATA_SOURCE
:'RAKUTEN'
に設定する必要があります。EXCEL_WORKBOOK_PATH
: 連携ハブとなるtrading_hub.xlsm
への絶対パスまたは相対パスを指定します。