Bot

開発記録#166(2025/4/2)「論文ベースのbot開発フローpart.28」

2025年4月2日

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

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

ここでは、他通貨ペアのBotを追加し、複数のBotを並列で運用する方法について、設計から実装、運用までを具体的に説明します。


✅ なぜ複数通貨ペアでBotを運用するか?

  • 📊 相場分散:BTCだけでなく、ETH、XRP、SOLなども対象にしてリスク分散
  • 💰 チャンスの最大化:通貨ごとに異なるP&Dやトレンドに対応
  • ⚙️ 再利用可能な設計:共通ロジックを活かして効率的に展開できる

🧩 複数Bot運用の構成イメージ(Docker/Kubernetes運用想定)

├── bots/
│   ├── btcusdt/
│   │   └── config.yaml
│   ├── ethusdt/
│   │   └── config.yaml
│   └── solusdt/
│       └── config.yaml
├── core/
│   ├── scheduler.py
│   ├── detector.py
│   ├── executor.py
│   └── utils/
├── deploy/
│   └── deployment-template.yaml

各Botは 通貨ペア別の設定ファイルとインスタンスを持ちます。


🛠️ 1. 各Botの設定ファイル(例:btcusdt/config.yaml

symbol: BTCUSDT
strategy: breakout
stop_loss: 3.5
take_profit: 6.0
trade_amount: 0.01
slack_webhook: "https://hooks.slack.com/services/..."

🧠 2. 各Botを個別に起動(Python版)

import yaml
from core.scheduler import get_mode
from core.executor import run_executor
from core.detector import run_detector
from core.logger import get_logger

def launch_bot(config_path):
    with open(config_path) as f:
        config = yaml.safe_load(f)

    logger = get_logger(config["symbol"])
    mode = get_mode()

    logger.info(f"起動モード: {mode}")
    if mode in ["full", "monitor"]:
        run_detector(config, logger)
    if mode == "full":
        run_executor(config, logger)

if __name__ == "__main__":
    import sys
    launch_bot(sys.argv[1])  # ex. python bot_launcher.py ./bots/btcusdt/config.yaml

🐳 3. Docker/K8sでの同時起動(通貨ペアごとにPod分離)

✅ deployment-template.yaml(テンプレート化して自動展開)

apiVersion: apps/v1
kind: Deployment
metadata:
  name: bot-{{PAIR}}
spec:
  replicas: 1
  selector:
    matchLabels:
      app: bot-{{PAIR}}
  template:
    metadata:
      labels:
        app: bot-{{PAIR}}
    spec:
      containers:
      - name: bot
        image: your_dockerhub_user/crypto-bot:latest
        args: ["bots/{{PAIR}}/config.yaml"]
        env:
        - name: PAIR
          value: "{{PAIR}}"

PAIRbtcusdt, ethusdt, solusdt などを渡して展開します。


📈 4. 複数Botのモニタリング例(Grafana)

ペア勝率PnLアラート
BTCUSDT62%$1,250
ETHUSDT55%$870⚠️
XRPUSDT67%$1,040

🔄 5. 次の拡張ポイント

拡張案内容
✅ Bot追加自動化設定ファイルと通貨ペア名だけでデプロイできる仕組み
✅ 通貨ごとの戦略切替config.yaml に個別戦略を記述
✅ モジュール共通化core/ 以下で全通貨共通のロジックを持たせる
✅ 戦略別Botの比較分析勝率・P&LでBotランキング作成可能

🔜 次に進めるなら

  • 🛠️ 各Botの config.yaml 雛形作成
  • 🐳 K8sでの自動デプロイ(Helmやテンプレート)
  • 📊 複数Botの統合ダッシュボード構築(Grafana)
Yodaka

次は、上記のテンプレートやKubernetes用マニフェストなどをセットで扱う方法をまとめます。

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

続きを見る

-Bot