2025-06-08

自動売買への道 (2025-06-08)

(楽天証券の口座で取引する前提で)デイトレ自動売買を実現するには、Windows / Excel 上で マーケットスピード II RSS を利用することがまずは確実な方法だと考えました。そこで、Windows / Excel / VBA で自動売買のためのマクロを作ってリアルタイムの取引シミュレーションを始めており、Python で検証をしています。

現在の開発状況を更新しました。

フェーズ 開 始 状 況 目 的 成  果
Phase 1 2024-12-10 終了 実現可能性
(feasibility)
  • やっつけでコーディング ✓
  • 下記を実証 (PoC) ✓
    • ループ処理による単純シミュレーション
    • リアルタイム・シミュレーション (Dry Run)
Phase 2 2024-12-16 終了 マクロ再構成
  • 単一ワークシート上に機能集約 ✓
  • マクロを再構成 ✓
  • Phase 1 と同じ機能レベルまで実現 ✓
  • ベンチマーク計測を追加 ✓
Phase 3 2024-12-31 取りやめ 実装
  • 機能を複数ワークシート上に再配置 ✓
  • Dry Run 実施 ✓
  • 売買アルゴリズムの改良 ✓
  • Python シミュレータで評価 ✓
  • RSS による売買を、テスト用マクロで確認
Phase 4 2025-03-09 開発中 評価・実装
  • ティックデータへ Parabolic SAR を適用 ✓
    • VBA に実装(データ収集のみ、Dry Run 機能は未実装)
    • Python によるシミュレーション環境の整備
  • Python シミュレータで評価とパラメータ・チューニング ✓
    1. スムージング処理の追加
    2. エントリ条件の検討
    3. 利確条件の検討
    4. ロスカット条件の検討
Phase 5 2025-05-17 開発中 再評価・再実装
  • メイン・アプリを Python へ
    • アプリの作り直し
      • xlwings パッケージの評価
      • PyQtGraph パッケージの評価
      • リアルタイムに対応させるためのスレッド化
Phase 6 2025-06-?? 未着手 本運用
  • ...

プログラムで売買判断をさせるメインの手法は、ティックデータに適用できるようにした Parabolic SAR です [3]

しかし単純に Parabolic SAR を適用するだけでは稼げないので、工夫を加えながら実用に耐えうるアルゴリズムに仕上げようとシミュレーションに励んでいる毎日です。

日々のアイデアを整理するために、時々ブログ記事にまとめています。

アプリはまだ作り直し中

現在開発中のアプリにおける情報の流れを下記に整理しました。情報の流れが双方向にはなっていますが、現在のところは株価データを読み込んでいるだけなので実質的に右側への一方向です。

株価データの流れ(Windows 11 上)

Python のアプリですが、ベースの GUI は PySide6 [4]、Excel(マーケットスピード2 RSS)とのやりとりは xlwings [5]、チャート作成は(迷った末に)PyQtGraph [6] を使うということで、ひとまず使用する開発環境およびライブラリを固定しました。

現在のところ、リアルタイムでティックデータを取得して、株価と Parabolic SAR のトレンド点をプロット、売買ボタンのクリックで売買シミュレーションができるまで、アプリの作り込みを進めました。

ザラ場でアプリを稼動(Windows 11 上)

少なくとも、日々のデータ収集は、今まで使用していた VBA アプリから完全に切り替えて、この開発中のアプリでできるようになりました。

収集したデータのレビューと売買シミュレーション

開発中のアプリは、ザラ場ではデータ収集にしか使えていませんが、デバッグ・モードでは、右側のドックに並べた売買ボタンをクリックして売買シミュレーションができるようになりました。

デバッグ時の売買シミュレーション (1)

売買履歴も表示できるようにしました。

デバッグ時の売買シミュレーション (2)

自動売買は少し遠のいたか?

自動売買の実現を諦めたわけではありませんが、このアプリの売買ボタンをクリックして身をもってデイトレの実践を重ねないと、自動売買の実現には辿り着けないだろうと思っています。そういうわけで、アプリの機能としては売買ボタンのクリック操作で実際に売買ができるところまで実装する予定です。

スレッド、スレッド、スレッド

タイマーで 1 秒毎に Excel から株価を収集してチャートを更新するアプリを作っていると、スレッドを利用した並列処理(マルチスレッド・プログラミング)の重要性を痛感します。

Parabolic SAR の処理は、今のところティックデータに直接適用しているだけなので、データを取得するスレッド内で計算させていました。しかし、ティックデータにはノイズが多いので、ゆくゆくはスムージングなどの前処理を加えようと考えています。Python は便利なのでいろいろ機能を加えてしまうのですが、そうするとどうしても計算コストがかかるようになります。Parabolic SAR などのデータ処理を毎秒の処理内に収まるようにするには、銘柄毎にスレッド化して、ベンチマークを計測しながらデータ処理の内容を吟味できるようにしておいた方が良さそうです。

というわけで、今の内に片付けてしまおうと、この週末は Parabolic SAR の算出処理をスレッド化するところまで進めました。これでメインスレッドを GUI のイベント処理やチャートの描画に専念させ、毎秒の株価データ読み込みや銘柄毎の Parabolic SAR の算出など、他の処理のほとんどを別スレッドに移してしまったことになります。コーディングがやや煩雑になりましたが、主要な機能を独立、並列化できました。慣れれば、この方がプログラムを保守しやすいかもしれません。

ひとまず、ちゃんと動いているようにみえていますが、来週はデバッグ作業に明け暮れることになりそうです。

参考サイト

  1. マーケットスピード II RSS | 楽天証券のトレーディングツール
  2. マーケットスピード II RSS 関数マニュアル
  3. 私の株日記: Realtime Parabolic SAR
  4. Qt for Python
  5. xlwings Documentation
  6. PyQtGraph - Scientific Graphics and GUI Library for Python

にほんブログ村 株ブログ 株日記へ
PVアクセスランキング にほんブログ村

0 件のコメント:

コメントを投稿