Windowsアプリ(C#)の起動時の処理・任意タイミングでの終了(システムトレード自動化)

スポンサーリンク

Protraを使ってシステムトレード完全自動化をするには、

  • 「Protra.exe」・・・株価更新
  • 「PtSim.exe」・・・・バックテスト実施

2つのアプリケーションの動作を自動化しなければならない。

一度、ProtraをCUI化できないか検討したが、私には敷居が高かった。

Protraはオープンソースのアプリです。

であれば、CUIコマンドで必要な処理をできるようにソースコード書き換えすれば良いじゃん?

と試みました。

が・・・断念。GUI依存度が高すぎました。

PyAutoGuiでWindows操作の自動化(protraシストレ)
もともとProtraはバックテストだけの目的で、手法が確立したら実践ではPythonをを使ってシステムトレードの仕組みを実装する計画でした。そのために重要なのは、Protraライブラリ「TIlib.pt(テクニカル指標のAPIを提供...

そのため「PyAutoGui」を使った自動化を試みたが、エラーも多い。

disられたしね。

RPA(Robotic Process Automation)的ツールは使いたくない。

年末に「アプリケーションの起動時に処理実行」する方法を教えてもらった。

今回は、この方法でProtraの起動・実行・終了の自動化を試みる。

スポンサーリンク

C#ソースコード改変によるProtra完全自動化

期待は「Protra.exe」「PtSim.exe」が勝手に起動して、処理が終われば勝手に終了すること。次々と処理を自動的に進めて欲しい。


 

要するにコマンド起動のEXEファイル名を「Protra.cli.exe」「PtSim.cli.exe」とすると、次のようにコマンド連結して実行するだけにしたい。

そして明日買う銘柄をファイルに保存し、そのファイルを読み込んで実際にSBI証券で発注を行う。

バックテスト結果をファイルに保存する方法は以前記載した。

バックテスト完了後に売買結果をテキストに保存する(システムトレード)
過去のイザナミ愛用者のブログを読み漁ると、2015年頃までは独自ストラテジー・開発ヒントを公開されている方が多かったように感じます。ですが、次のようなバッシングを受けて、多くの方(hamhamseven氏など)が自粛されたという経緯...

また、SBI証券での発注方法はFeasibility Study(実現可能性)まで完了している。

PythonでSBI証券に自動ログインして株価チェックする(Mechanize編)
投資の成功のコツは「マイルール」を愚直に守ること誰が言い始めたが調べても分からないが、一般常識になっている格言だ。そんな、私自身には、次の格言も送っておく。...
PythonでSBI証券に自動ログインして株価チェックする(selenium編)
春は曙 夏は夜 秋は夕暮れ 冬はつとめて・・・・。春は野草夏はガサガサ秋は釣り冬は森・・・・・・・・と自然と戯れて現実逃避し過ぎた・...
  • Feasibility Study(実現可能性調査)・・・・この結果次第ではプロジェクトのゴーサインがでない
  • PoC(Proof of Concept:概念実証)・・・・実現可能性調査が成功すれば、ほとんど成約となるのに対し、こちらは無償でベンダーがやらされる場合も多い(PoC貧乏)

今回はProtraの処理自動化にフォーカスする。

Protra.exeの自動株価更新とアプリケーション終了

「エディタで開発してビルド環境にVC++を使う」という方法しか経験が無いので Visual Studio上からソースコードを追いかけて改変した経験が無かった。

教えてもらって やってみらメチャクチャ楽。

Windowsフォームの表示直後に初期化処理を行うには?

アプリケーションの起動後はまずLoadイベントとActivatedイベントが発生するが、その直後にShownイベントが発生する。

そしてそれ以降はShownイベントが発生することはない。順番にすると次のようになる。

  • ①コンストラクタ
  • ②Loadイベント:フォーム表示前
  • ③Shownイベント:フォーム表示後

このShownイベントに処理を追加する場合、次のようにGUIクリックからコードを見つけて記載が可能とのこと。

で、起動時処理に追記したいのは「更新処理」だ。

同じくGUIをクリックすると、コードに飛ぶ。

ここの処理をそのまま「shown」に追加する。要するに次のようになる。

たったこれだけで起動時に自動的に株価の更新が行われる

たったこれだけだけど知ると知らないでは雲泥の差だ。

アプリケーション(自分自身)を終了させる

今度は「更新が完了しました。」が表示されたら、アプリケーションを終了させる。

  • ①メインフォームを閉じる(this.Close())
  • ②Application.Exitメソッドを使用する

合ってるのかな・・・冗長な気がするけど。

これでビルドして出来た実行ファイル(EXE)は、株価更新後に自動終了するので別名にして利用すること。

PtSim.exeの自動バックテスト開始とアプリケーション終了

同じようにして PtSim.exe も更新してみた。

・・・なんか冗長だし合ってるのかな・・・・。

これでビルドして出来た実行ファイル(EXE)は、バックテスト後に自動終了するので別名にして利用すること。

まとめ

実際に実行してみると期待通りに動いているように見える。

これが本当に正しいのであれば、SBI証券での自動取引スクリプト作成しながら、

  • 自動株価更新
  • バックテスト
  • 購入銘柄が存在→メール等でスマホに通知

を作ってみよう。

確実に一歩ずつ進んでいる感はある、自動化に対しては・・・。

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