🤖

AI自動売買システム開発日誌:マルチエージェント化とCoincheck実取引の実装

に公開

個人開発で進めている「AI自動売買システム」に大きなアップデートを行いました。
今回は、マルチエージェントシステムの導入と、Coincheck APIを使った仮想通貨の実取引機能の実装、そして管理UIの刷新について紹介します。

1. マルチエージェントシステムの導入

これまでは単一のロジックで動いていましたが、市場ごとに特性が異なるため、専門のエージェントを配置する構成に変更しました。

  • JP Agent: 日本株担当。PERやPBRなどのファンダメンタルズ重視。
  • US Agent: 米国株担当。成長率やニュースセンチメント重視。
  • Crypto Agent: 仮想通貨担当。ボラティリティとSNSのトレンド重視。

これらを統括する MultiAgentLoop クラスを実装し、各エージェントが独立してスクリーニングと売買判断を行うようにしました。

# services/auto_trading_agent.py (抜粋)

class MultiAgentLoop:
    def _run_loop(self):
        while self.is_running:
            for config in self.agents_config:
                # エージェントごとに個別に処理を実行
                agent = config['agent']
                screener = config['screener']
                
                # ... スクリーニングと売買判断のロジック ...

2. Coincheck APIによる実取引の実装

これまで仮想通貨もシミュレーション(架空の資金)で動かしていましたが、ついに**実弾(リアルマネー)**を投入することにしました。
対象は Crypto Agent のみです。

実装のポイント

CoincheckのREST APIを使用しました。認証にはHMAC-SHA256署名が必要です。

  1. CoincheckServiceクラス: API通信部分をカプセル化。
  2. 安全装置: 暴走を防ぐため、1回の取引額を 1,000円 にハードコードで制限。
  3. 環境変数: APIキーは .env で管理し、Dockerコンテナに注入。
# services/coincheck_service.py (イメージ)

def get_auth_headers(self, nonce, url, body=""):
    message = nonce + url + body
    signature = hmac.new(
        self.secret_key.encode('utf-8'),
        message.encode('utf-8'),
        hashlib.sha256
    ).hexdigest()
    
    return {
        "ACCESS-KEY": self.access_key,
        "ACCESS-NONCE": nonce,
        "ACCESS-SIGNATURE": signature
    }

app.py で環境変数を読み込み、キーが存在する場合のみ実取引モードでエージェントを初期化します。

if COINCHECK_ACCESS_KEY and COINCHECK_SECRET_KEY:
    logging.info("Coincheck API keys found. Crypto Agent will use real trading.")
    crypto_agent = TradingAgent(..., market_type="CRYPTO", coincheck_keys=keys)

3. 管理UIの刷新 (React)

バックエンドの進化に合わせて、フロントエンドの管理画面も作り直しました。
これまでは「全エージェントの一括起動/停止」しかできませんでしたが、エージェントごとの個別制御が可能になりました。

改善点

  • サイバーパンク風UI: 黒基調にネオンカラーのアクセントを採用。
  • カードレイアウト: 「システム全体」と「個別エージェント」を視覚的に分離。
  • ステータス可視化: 稼働状況が一目でわかるインジケーターを追加。

Agent Panel UI
(※実際の画面は開発環境で動作中)

4. Docker環境の整備

開発環境の安定化のため、Docker周りも見直しました。
Google Generative AI (Gemini) ライブラリの依存関係解決のため、ベースイメージを python:3.11 にアップグレードしました。

FROM python:3.11-slim-buster
# ...

今後の展望

現在は「買い」のみの実装ですが、利益確定や損切りの「売り」ロジックを強化していく予定です。また、X (旧Twitter) の分析精度を上げるために、より高度なプロンプトエンジニアリングにも挑戦したいと考えています。


このプロジェクトは個人開発の学習用プロジェクトです。投資は自己責任で行いましょう。

Discussion