前回は、PCが再起動した際に記憶(ステータス)を失わないための「リスタート設計」の概念について解説しました。
今回からはさらに視座を上げ、「そもそも再起動したPCの中で、システムをどうやって自動で立ち上げ直すのか」という、実運用におけるインフラ(環境構築)問題に踏み込みます。
止まる原因の9割はコードではなく「OS」
多くの初心者が、勝てるアルゴリズム(売買ロジック)の開発に何ヶ月も時間を費やします。しかし、完成したプログラムをいざ24時間稼働させてみると、残酷な現実に直面します。
システムが止まる原因の9割は、Pythonのコードではなく「OS(Windows等)」の挙動にあるからです。
- 深夜のWindows Updateによる強制的な再起動
- 一時的な停電やブレーカー落ちによる電源の喪失
- メモリリークやOS側の不具合によるフリーズ
どれだけバグのない完璧なPythonコードを書いても、土台となるOSがシャットダウンしてしまえばシステムは死にます。「自動売買の安定稼働=アルゴリズムの優秀さ」ではなく、「自動売買の安定稼働=インフラ環境の堅牢さ」なのです。
復帰を完全自動化する「3つの防衛線」
運用者が寝ている間にWindowsが強制再起動したとします。このとき、システムが自律的にトレードを再開するためには、人間がクリックして起動する手順をすべて「自動化」しておく必要があります。
実運用においては、以下の3つの防衛線をインフラレベルで構築します。
1. BIOSによる「通電時の自動起動」設計
停電などでPCの電源が完全に落ちた場合、電気が復旧してもPCは電源ボタンを押すまで立ち上がりません。これを防ぐため、PCの基幹システムである「BIOS(UEFI)」の設定を変更し、「AC電源が供給されたら自動的にPCを起動する(Restore on AC Power Loss等)」状態にしておきます。
2. タスクスケジューラによる「アプリ自動起動」設計
Windowsが立ち上がった後、証券会社のAPIツール(kabuステーション等)やPythonのプログラムを自動で実行させる必要があります。スタートアップフォルダに入れる簡易的な方法もありますが、実運用では細かい起動タイミング(OS起動から〇秒遅らせる等)を制御できる「タスクスケジューラ」を利用してプロセスを厳密に管理します。
3. ログイン画面の「自動突破」設計
ここが実務上、最も高い壁になります。多くの証券ツールは起動時に「パスワード入力」や、昨今導入が進んでいる「パスキー認証」などのログイン画面を要求します。人間がキーボードを叩かずにこれをどう突破するか(マウス操作の自動化や、認証フローのバイパス処理)を作り込むことが、完全自動化の最後の鍵となります。
監視不能時間の扱い方(次なる課題)
ここまでのインフラ設計(BIOS設定 → タスクスケジューラ → ログイン自動化)を構築して初めて、システムは「不慮の事故から自力で立ち上がり、前回の状態管理ファイルを読み込んでトレードを再開する」という不死身の構造を手に入れます。
しかし、ここで一つの疑問が生まれます。
「PCが再起動して復旧するまでの数分間(監視不能時間)に、保有しているETFが暴落したり、逆に設定した利確ラインに到達してしまったりした場合はどうなるのか?」
この「見えない時間」のリスクを潰すためには、システムがエラーや再起動から復旧したことを運用者がリアルタイムに把握する仕組みが不可欠です。
次回は、エラーは「直すもの」ではなく「検知するもの」という思想のもと、システムを“呼ぶ側”にする「エラー通知(メール・監視設計)」について解説します。