前回の記事では、買いタイミングを表示する機能を実装しました。
銘柄コードを入力すると、買いシグナルかどうかが表示されるところまではできました。
関連: 実装の流れが近い記事として AIで株式投資ツールに売買候補銘柄の管理画面を追加してみた も読むと、ここで触れたポイントがつながりやすくなります。
関連: 次に読むなら moomoo AIとは?株式投資に特化したAIを買う前の確認役にできるか考えてみた も見ておくと、判断の軸がそろいます。
ただし、別の銘柄に変更しても、最初の銘柄の結果が表示されたまま変わりませんでした。
シグナル取得エラー HTTP 500 が発生していました。
今回は、そのエラーをAIと一緒に調査し、最終的に修正できたところまでを記録します。

修正するエラー内容
銘柄を変更したら、その銘柄に応じた買いシグナルが表示される状態にすることです。
しかし実際は、
- 最初の銘柄は表示される
- 別の銘柄にするとエラーになる
- しかも表示は最初のまま残る
という状態でした。
間違った銘柄のシグナルを見ているため、修正していきます。
AIへの指示内容
伝えた内容は以下です。
初回の銘柄入力時のエラーは解決しましたが、まだ銘柄を切り替えたときのシグナル取得エラー: HTTP 500エラーは残っています。原因を網羅的に調査してください
どの操作で
何が起きて
どうしてほしいか
を伝えました。
市場データの取得エラー
最初にAIが見つけたのは、市場データの取得エラーでした。
私の売買ルールでは、
指数が上昇トレンドのときだけ買う
という条件を入れています。
そのため、指数データが必要です。
当初はTOPIXを使っていましたが、yfinanceで取得できませんでした。
その結果、シグナル判定APIが失敗していました。
そこでAIは、TOPIXから日経平均に変更という修正を行いました。
これでHTTP 500の一部は解消しました。
エラーの修正
原因の特定
しかし、これで完全に解決ではありませんでした。
銘柄を切り替えると、まだエラーが出ます。
不具合対応では、原因を一つに決めつけないことが一番大事でした。判断の切り分け方はAIで株式投資ツールに売買候補銘柄の管理画面を追加してみたが近いです。
実際に動かして確認すると、
初回はOK
切り替えでエラー
表示も更新されない
という状態が続いていました。私はこの結果をそのままAIに伝えました。
ここからAIがさらに調査を進めます。
結果として見えてきたのは、複数の原因でした。
サーバーのリロード問題
開発環境では、uvicornのreload機能を使っていました。
これは便利ですが、監視範囲が広すぎると問題になります。
フロントエンドの更新でもバックエンドが再起動してしまい、API処理が途中で切れる可能性があります。
これがHTTP 500の原因の一つでした。
対応として、監視対象をPythonコードのみに限定していました。
フロントの状態管理の問題
もう一つの原因はフロントエンドです。
エラーが出たときに、
前の銘柄のデータがそのまま残る
という状態でした。
私が手を止めたのは、指標の優先順位が曖昧だったときです。買いタイミングOKの銘柄をmoomoo AIで分析|確認用プロンプトを作ってみたで先に基準を確認すると、この先がつながりやすいです。
つまり、
新しいデータが取得できない
でも古いデータは消えない
という状態です。
対応として、
新しい検索時にstateをリセットする
ように修正していました。
rulesetの読み込み問題
さらに、修正後に別のエラーが発生しました。
初回からHTTP 500が出る状態です。
原因はrulesetの読み込みタイミングでした。
起動時に読み込んでいたため、不安定になっていました。
対応として、
必要なときに読み込む遅延ロードに変更
していました。
最終的な修正内容
最終的には、以下の修正を行いました。
- 指数データをTOPIXから日経平均に変更
- uvicornのreload対象を限定
- フロントのstateを検索時にリセット
- rulesetを遅延ロードに変更
複数の問題が重なっていた形でした。しかし、すべてAIが原因を特定して、解決まで実行できました。
本当にすごいです。
この段階は感覚より再現性を優先したいので、moomoo AIとは?株式投資に特化したAIを買う前の確認役にできるか考えてみたで判断軸を整えてから進めています。
結果
最終的には、
銘柄を変更すると正しくシグナルが更新される
エラー時に古い表示が残らない
状態になりました。
まとめ
今回は、買いタイミング表示の不具合を修正しました。
結果として、
ツールとして使える状態に一歩近づいた
と思います。
今回も、
- 動かす
- 壊れる
- 直す
というループを何度も回しており、AIが自らエラーの解決までやりきってくれました。

