Bot

開発記録#148(2025/3/25)「論文ベースのbot開発フローpart.10」

2025年3月25日

前回の記事に引き続き、今回も仮想通貨botの開発状況をまとめていきます。

本記事では「暗号通貨のパンプ&ダンプスキームの検出」に関する論文をベースにbot開発の過程をまとめていきます。

システム全体の統合テスト

まずは、システム全体の動作確認とデバッグに取り組みます。


1. 統合テストの目的

🔍 システム全体の一貫した動作を確認し、各コンポーネントの連携が正しく機能するかをテストします。
以下の項目に焦点を当てます:

データの流れ確認:データ収集 → 異常検出 → 取引執行 → 監視の連携
エラーハンドリングの確認:API接続エラー、データ欠損時の動作
リカバリー機能の検証:異常終了後の自動再起動
通知システムの確認:Slack通知が正しく送信されるか


2. 統合テストのチェックリスト

チェック項目内容ステータス
データ収集Bybit APIから正しくOHLCVデータが取得できるか
異常検出P&Dイベントが検出されるか
取引執行Botが指定の条件で売買を行うか
監視システムSlack通知とダッシュボード表示が正確か
再接続機能ネットワーク障害後に自動再接続できるか
データ保存データの正確な記録とファイル出力ができるか

3. 統合テスト用のスクリプト (integration_test.py)

以下のスクリプトは、システム全体の動作を順次テストし、エラーが発生した場合に詳細情報を出力します。

import subprocess
import time

# 各コンポーネントのテストコマンド
TEST_COMMANDS = [
    "python data_collector.py",
    "python pnd_detector.py",
    "python trade_executor.py",
    "python monitoring_system.py"
]

# ログ出力
def log_message(message):
    print(f"[INFO] {message}")

# 各コンポーネントのテスト
def run_component_test(command):
    try:
        log_message(f"{command} を開始しています...")
        process = subprocess.Popen(command, shell=True)
        time.sleep(5)  # 起動確認のため一時停止
        if process.poll() is None:  # 正常に起動しているか確認
            log_message(f"{command} が正常に稼働しています ✅")
            process.terminate()  # 一時停止中のプロセスを停止
        else:
            log_message(f"❌ {command} の起動に失敗しました")
    except Exception as e:
        log_message(f"❗ エラー: {e}")

# テストの実行
def run_integration_test():
    log_message("🚀 統合テストを開始します")

    for command in TEST_COMMANDS:
        run_component_test(command)

    log_message("✅ 統合テストが完了しました")

if __name__ == "__main__":
    run_integration_test()

4. 実行方法

  1. 統合テストのスクリプトを実行
python integration_test.py
  1. 確認ポイント
  • 各コンポーネントが起動し、異常がないことを確認
  • エラー発生時は、詳細なエラーログが出力される

5. テスト完了後の修正点

🟩 成功した場合

  • システムが正常に機能しているため、次のステップに進みます。

🟥 失敗した場合

  • エラーログをもとにデバッグを行い、問題点を修正します。
  • 具体的な修正内容が発生した際は、コードを調整し再テストします。

6. 次のステップ

次は、本番環境の最適化 (Auto Scalingやリソース制御の導入) に進みます。
具体的には、以下の内容に取り組みます:

✅ KubernetesのHorizontal Pod Autoscaler (HPA) による自動スケーリング
✅ CPUやメモリのリソース管理での最適化
Helm を活用したKubernetesマニフェストの一元管理

Yodaka

次の記事では、Kubernetesを活用した本番環境の最適化についてまとめます。

関連
開発記録#149(2025/3/25)「論文ベースのbot開発フローpart.11」

続きを見る

-Bot