📈

AI自動売買エージェントに取引時間管理と自動メンテナンス機能を実装しました

に公開

AI自動売買エージェントの開発を進めていますが、今回は運用の効率化と安定性を高めるために重要なアップデートを行いました。

これまではエージェントが24時間365日絶え間なく動作していましたが、株式市場には「営業時間」があります。市場が閉まっている間にAPIを叩き続けるのはリソースの無駄ですし、ログも肥大化してしまいます。

そこで、各市場の取引時間に合わせてエージェントが活動するようにロジックを修正し、さらにシステムの健康状態を保つための自動メンテナンス機能を実装しました。

実装した機能

1. 市場ごとの取引時間管理

エージェントが対象とする市場に応じて、活動時間を制御するようにしました。

  • 日本株エージェント (JP Agent): 平日 09:00 - 15:30 (日本時間)
  • 米国株エージェント (US Agent): 平日 09:30 - 16:00 (米国東部時間)
  • 暗号資産エージェント (Crypto Agent): 24時間365日稼働

pytz ライブラリを使用してタイムゾーンを厳密に管理し、市場が閉じている間はエージェントがスリープモードに入るようにしています。これにより、不要なAPIコールを削減し、API制限に引っかかるリスクを低減しました。

2. 自動システムメンテナンス

長時間稼働させると問題になるのが、ログの蓄積とキャッシュファイルです。これらを定期的に掃除するメンテナンススレッドを追加しました。

  • ログローテーション: メモリ内のログが一定数を超えた場合、古いログを自動的に削除します。
  • キャッシュ削除: __pycache__ などの不要な一時ファイルを1時間に1回クリーンアップします。

コードのポイント

MultiAgentLoop クラスに _is_market_open メソッドを追加し、現在時刻が取引時間内かどうかを判定しています。

def _is_market_open(self, market_type: str) -> bool:
    if market_type == 'CRYPTO':
        return True
        
    now_utc = datetime.now(pytz.utc)
    
    if market_type == 'JP':
        tz_jp = pytz.timezone('Asia/Tokyo')
        now_jp = now_utc.astimezone(tz_jp)
        # ... 時間判定ロジック ...

今後の展望

これでシステムの基礎体力が向上しました。次は、より高度な分析ロジックや、市場の急変に対応するアラート機能などを追加していきたいと考えています。

AIエージェントによる自動売買、少しずつですが着実に進化しています!

#Python #AI #自動売買 #個人開発 #StockPrediction

Dashboard Screenshot

Discussion