Bot

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

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

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

以下に、自動デプロイ化 / ダッシュボード連携 / 複数戦略統合のための方法を、順に詳しく説明します。


🚀 ① 自動デプロイ化

🔧 方法1:HelmチャートによるBotの一括デプロイ

📁 Helm構成例

helm-bot-chart/
├── templates/
│   ├── deployment.yaml
│   └── configmap.yaml
├── values.yaml

values.yaml(複数通貨ペア定義)

bots:
  - pair: btcusdt
    strategy: breakout
  - pair: ethusdt
    strategy: ml

image:
  repository: yourdocker/crypto-bot
  tag: latest

✅ テンプレート(templates/deployment.yaml

{{- range .Values.bots }}
apiVersion: apps/v1
kind: Deployment
metadata:
  name: bot-{{ .pair }}
spec:
  replicas: 1
  template:
    spec:
      containers:
      - name: bot
        image: "{{ $.Values.image.repository }}:{{ $.Values.image.tag }}"
        args: ["bots/{{ .pair }}/config.yaml"]
        env:
        - name: STRATEGY
          value: "{{ .strategy }}"
{{- end }}

✅ インストール手順

helm install crypto-bots ./helm-bot-chart

→ 新しいペアを追加したら values.yaml に1行追加するだけ!


📊 ② ダッシュボード連携(Prometheus + Grafana)

✅ 必要な構成

  • Prometheus:Botのメトリクスを収集
  • Grafana:可視化(勝率/PnL/エラー数など)
  • Pushgateway:Bot側からメトリクスを手動Push

📤 Prometheusメトリクス送信コード例(Python)

import requests

def push_metrics(pair, pnl, trades):
    data = f"""
# TYPE bot_pnl gauge
bot_pnl{{pair="{pair}"}} {pnl}
# TYPE bot_trades gauge
bot_trades{{pair="{pair}"}} {trades}
"""
    requests.post("http://prometheus-push:9091/metrics/job/crypto_bot", data=data)

📈 Grafanaでのダッシュボード項目例

  • bot_pnl{pair="btcusdt"}
  • rate(bot_trades[1h])
  • kube_pod_container_status_restarts_total

🧠 ③ 複数戦略の統合管理

✅ 戦略選択ロジック(例)

def select_strategy(name):
    if name == "breakout":
        from strategies.breakout import breakout_signal
        return breakout_signal
    elif name == "ml":
        from strategies.ml import ml_predict_signal
        return ml_predict_signal

config.yaml に戦略名を記載し、Botごとに切り替え可能。

symbol: ETHUSDT
strategy: ml

→ 複数Botが同時に異なる戦略を実行可能!


✨ 発展的な構成(全体イメージ)

+---------------------+        +-------------------+
|  BTC Bot (breakout) | --->   |  Pushgateway       |
+---------------------+        +-------------------+
                                   ↓
                          +------------------+
                          |   Prometheus     |
                          +--------+---------+
                                   ↓
                          +------------------+
                          |     Grafana      |
                          +------------------+

✅ 次のステップ候補

フェーズ内容
🔧 Helmの雛形を生成各Botをchart化して一括展開
📈 Grafanaパネルテンプレート作成ペア別勝率・P&Lダッシュボード
🤖 複数戦略を1つのBotで自動切替市況変化に応じてML or ブレイクアウト選択

今後は

  • 🎁 Helmチャート雛形
  • 📊 GrafanaダッシュボードJSONテンプレート
  • 🧠 複数戦略の自動切替ロジック

などのアプローチが考えられます。

Yodaka

このシリーズも30回目となり、キリが良いので一旦ここまでにします。今後も追加・検証等を重ねながら更新していきます。

関連
開発記録#169(2025/4/3)「遅延を考慮したアプローチ」

続きを見る

-Bot