Bot

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

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

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

ここでは、既存のBotに新しい戦略(ブレイクアウト戦略や機械学習モデル)を追加する方法を紹介します。


新戦略を追加する目的

  • 📈 複数戦略でリスク分散(相場の変化に強い構成へ)
  • 🧠 データ駆動型の意思決定(従来のルールベースと併用)
  • 🔄 既存Botの柔軟な拡張(新モジュールとして組み込む)

🧩 戦略の追加方法:構成イメージ

strategies/
├── breakout_strategy.py    ← ブレイクアウト戦略
├── ml_predictor.py         ← MLモデル戦略 (e.g. XGBoost, LSTM)
├── __init__.py

メインロジック(executorなど)で戦略を切り替え可能にします:

from strategies.breakout_strategy import breakout_signal
from strategies.ml_predictor import ml_predict_signal

signal = breakout_signal(df)
# or
signal = ml_predict_signal(df)

📈 ① ブレイクアウト戦略の例

def breakout_signal(df, window=20):
    high = df['high'].rolling(window).max()
    low = df['low'].rolling(window).min()
    price = df['close'].iloc[-1]

    if price > high.iloc[-2]:
        return "buy"
    elif price < low.iloc[-2]:
        return "sell"
    else:
        return None

🔎 「過去N期間の高値を超えたら買い/安値を割ったら売り」というシンプルかつ強力なモメンタム型ロジック。


🧠 ② 機械学習モデルによる戦略の例

特徴量例(データ準備):

pythonコピーする編集するdf['returns'] = df['close'].pct_change()
df['ma_5'] = df['close'].rolling(5).mean()
df['volatility'] = df['returns'].rolling(10).std()

学習済みモデルを使った推論(例:XGBoost)

import joblib
import pandas as pd

model = joblib.load("models/xgb_model.pkl")

def ml_predict_signal(df):
    latest = df.iloc[-1:][["returns", "ma_5", "volatility"]]
    pred = model.predict(latest)[0]
    return "buy" if pred == 1 else "sell" if pred == -1 else None

📌 学習モデルは過去データで「次の価格が上がる/下がる/横ばい」などを分類予測させます。


🔄 ③ 複数戦略を切り替えるロジック例

def select_signal(strategy_name, df):
    if strategy_name == "breakout":
        from strategies.breakout_strategy import breakout_signal
        return breakout_signal(df)
    elif strategy_name == "ml":
        from strategies.ml_predictor import ml_predict_signal
        return ml_predict_signal(df)
    else:
        return None

.envconfig.yamlから選択戦略を動的に切り替え可能!


🔜 次のステップ候補

ステップ内容
📁 strategies/ フォルダ構成の準備既存Botから切り出し・共通化
⚙️ config.yaml に戦略切替パラメータを追加strategy: breakout など
📉 学習モデルの作成 or 取得XGBoost / LSTMなど
🧪 バックテストによる精度評価各戦略の勝率・収益比較

次に進める内容としては:

  • breakout_strategy.py を完成させたい
  • ML戦略の学習コード(XGBoost or LSTM)を作りたい
  • 複数戦略を切り替える管理ロジックを構築したい

などがあります。

Yodaka

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

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

続きを見る

-Bot