Bot

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

2025年3月25日

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

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

🚀 システム統合とデプロイ (Docker + Kubernetes)

次のステップとして、以下のタスクを進めます。

システム統合:データ収集、異常検出、取引執行、監視システムの統合
Dockerコンテナ化:各機能をDockerコンテナに分割し、管理しやすくする
Kubernetesデプロイ:スケーラブルな環境構築と自動リカバリー対応


1. システム構成

/crypto_trading_bot
 ├── data_collector.py         # データ収集
 ├── pnd_detector.py           # P&Dイベント検出
 ├── trade_executor.py         # 取引執行
 ├── monitoring_system.py      # 監視システム
 ├── Dockerfile                # Dockerコンテナ設定
 ├── docker-compose.yml        # ローカルでの統合テスト用
 └── k8s/
     ├── deployment.yaml       # Kubernetesデプロイメント
     ├── service.yaml          # Kubernetesサービス設定
     └── configmap.yaml        # 環境変数の管理

2. Dockerファイルの作成

Dockerfile

# ベースイメージ
FROM python:3.12-slim

# 作業ディレクトリ
WORKDIR /app

# 必要なパッケージをインストール
COPY requirements.txt .
RUN pip install -r requirements.txt

# アプリケーションのソースコードをコピー
COPY . .

# コンテナ起動時の実行コマンド
CMD ["python", "monitoring_system.py"]

requirements.txt

flask
pandas
matplotlib
websockets
requests
ccxt
scipy

docker-compose.yml (ローカル開発用)

version: '3.8'

services:
  data_collector:
    build: .
    command: python data_collector.py
    volumes:
      - .:/app
    restart: always

  pnd_detector:
    build: .
    command: python pnd_detector.py
    volumes:
      - .:/app
    restart: always

  trade_executor:
    build: .
    command: python trade_executor.py
    volumes:
      - .:/app
    restart: always

  monitoring_system:
    build: .
    command: python monitoring_system.py
    ports:
      - "5000:5000"
    volumes:
      - .:/app
    restart: always

3. Kubernetes設定

deployment.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: crypto-bot
spec:
  replicas: 3
  selector:
    matchLabels:
      app: crypto-bot
  template:
    metadata:
      labels:
        app: crypto-bot
    spec:
      containers:
      - name: data-collector
        image: crypto_bot:latest
        command: ["python", "data_collector.py"]
        envFrom:
        - configMapRef:
            name: crypto-bot-config
      - name: pnd-detector
        image: crypto_bot:latest
        command: ["python", "pnd_detector.py"]
      - name: trade-executor
        image: crypto_bot:latest
        command: ["python", "trade_executor.py"]
      - name: monitoring-system
        image: crypto_bot:latest
        command: ["python", "monitoring_system.py"]
        ports:
        - containerPort: 5000

service.yaml

apiVersion: v1
kind: Service
metadata:
  name: crypto-bot-service
spec:
  selector:
    app: crypto-bot
  ports:
    - protocol: TCP
      port: 80
      targetPort: 5000
  type: LoadBalancer

configmap.yaml

apiVersion: v1
kind: ConfigMap
metadata:
  name: crypto-bot-config
data:
  SLACK_WEBHOOK_URL: "https://hooks.slack.com/services/YOUR_WEBHOOK_URL"
  BYBIT_API_KEY: "YOUR_BYBIT_API_KEY"
  BYBIT_API_SECRET: "YOUR_BYBIT_API_SECRET"

4. 実行手順

(1) Docker環境でのローカルテスト

1.Dockerイメージのビルド

docker-compose build

2.コンテナの起動

docker-compose up

3.モニタリングシステムの確認

  • ブラウザで http://localhost:5000 にアクセスし、ダッシュボードが表示されれば成功

(2) Kubernetesデプロイ

1.Docker Hubへのイメージのアップロード

docker tag crypto_bot:latest your_dockerhub_username/crypto_bot:latest
docker push your_dockerhub_username/crypto_bot:latest

2.Kubernetesクラスタへデプロイ

kubectl apply -f k8s/deployment.yaml
kubectl apply -f k8s/service.yaml
kubectl apply -f k8s/configmap.yaml

3.デプロイ状況の確認

kubectl get pods
kubectl get services

5. デプロイ後の確認

ログの確認

kubectl logs <POD_NAME> -c data-collector

稼働状況の確認

kubectl get deployments

サービス確認

kubectl get services

6. 次のステップ

  1. テストとデバッグ:システム全体の統合テスト
  2. 本番環境の最適化:KubernetesのAuto Scalingリソース制御の導入
  3. セキュリティ強化:APIキーの安全な管理と、監視機能の強化
Yodaka

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

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

続きを見る

-Bot