前回の記事に引き続き、今回も仮想通貨botの開発状況をまとめていきます。
本記事では「暗号通貨のパンプ&ダンプスキームの検出」に関する論文をベースにbot開発の過程をまとめていきます。
Detecting Crypto Pump-and-Dump Schemes: A Thresholding-Based Approach to Handling Market Noisehttps://t.co/ctCJEV1MBs
— よだか(夜鷹/yodaka) (@yodakablog) March 22, 2025
🚀 取引執行ロジックの実装
次のステップとして、P&Dイベント検出後に自動でトレードを実行する取引執行ロジックを設計・実装します。
1. 取引戦略の方針
📋 取引方針
本システムでは、2つのモードでの取引を実装します。
✅ リスク回避モード(デフォルト)
- P&Dイベント検出時に保有ポジションの自動クローズ
- 直後の市場の急変動リスクを回避
✅ 逆張りモード(オプション)
- P&Dイベント検出後に、価格のリバウンドを狙って自動エントリー
- ダンプ後の価格回復を利用して利益を狙う
2. 実装方針
🔎 Bybit API を活用した取引処理
ccxt
ライブラリを使用してBybit APIと連携し、次の機能を実装します。- ポジション確認
- ポジションのクローズ
- 逆張りエントリー
- 損切り (Stop Loss) / 利益確定 (Take Profit)
3. コード実装 (trade_executor.py)
import ccxt import pandas as pd import json from datetime import datetime # 設定ファイルの読み込み with open("config.json", "r") as file: config = json.load(file) API_KEY = config["bybit_api_key"] API_SECRET = config["bybit_api_secret"] # Bybit API認証 exchange = ccxt.bybit({ 'apiKey': API_KEY, 'secret': API_SECRET, 'enableRateLimit': True }) # 取引設定 RISK_AVOIDANCE_MODE = True # デフォルトはリスク回避モード REVERSE_TRADE_MODE = False # 逆張りモードはオプション STOP_LOSS_PERCENT = 0.03 # 3%の損切りライン TAKE_PROFIT_PERCENT = 0.05 # 5%の利益確定ライン # ポジション確認 def get_position(symbol): positions = exchange.fetch_positions() for position in positions: if position['symbol'] == symbol: return position return None # ポジションのクローズ def close_position(symbol): position = get_position(symbol) if position: exchange.create_order(symbol, 'market', 'sell', position['size']) print(f"✅ Position closed for {symbol}") # 逆張りエントリー (Buy) def place_reverse_trade(symbol, entry_price): # エントリー価格、損切り、利益確定の計算 stop_loss_price = entry_price * (1 - STOP_LOSS_PERCENT) take_profit_price = entry_price * (1 + TAKE_PROFIT_PERCENT) # 成行注文の実行 exchange.create_order(symbol, 'market', 'buy', 0.01) print(f"📈 Reverse trade executed for {symbol}") # 損切り注文の設定 exchange.create_order(symbol, 'stop', 'sell', 0.01, stop_loss_price) print(f"⛔ Stop loss set at {stop_loss_price}") # 利益確定注文の設定 exchange.create_order(symbol, 'limit', 'sell', 0.01, take_profit_price) print(f"🎯 Take profit set at {take_profit_price}") # P&Dイベントに応じたアクション def handle_pnd_event(row): symbol = row['symbol'] pump_price = row['pump_price'] if RISK_AVOIDANCE_MODE: close_position(symbol) if REVERSE_TRADE_MODE: place_reverse_trade(symbol, pump_price) # メイン処理 def main(): pnd_events = pd.read_csv('./data/pnd_events.csv') for _, row in pnd_events.iterrows(): print(f"🚨 Handling P&D event for {row['symbol']} at {row['timestamp']}") handle_pnd_event(row) if __name__ == "__main__": main()
4. 実行方法
ccxt
のインストール
pip install ccxt
- APIキーの登録
config.json
に以下の情報を追加
{ "bybit_api_key": "YOUR_BYBIT_API_KEY", "bybit_api_secret": "YOUR_BYBIT_API_SECRET" }
3.スクリプトの実行
python trade_executor.py
5. 動作の流れ
✅ P&Dイベントの確認 → 自動でポジションのクローズ or 逆張りエントリー
✅ 逆張りモードでは、損切り (Stop Loss) と 利益確定 (Take Profit) の両方を自動設定
✅ エラーハンドリングにより、API通信エラーや注文失敗時の再試行も考慮
6. テスト戦略
- バックテスト:過去のP&Dイベントデータを使用し、取引執行のシミュレーション
- パラメータ調整:損切り幅、利益確定幅の最適化
- データ分析:P&Dイベント後の価格推移を分析し、より高精度なエントリーポイントの特定
7. 今後の改善点
- 🚨 リスク管理の高度化
- ATR (Average True Range) を用いた動的な損切り設定
- 🔍 P&D予測モデルの追加
- 機械学習 (LSTM / DQN) による将来のP&Dイベント予測
- 📈 市場センチメント分析
- SNSデータやニュースデータの活用によるリアルタイム予測の導入
8. 次のステップ
- 🔍 バックテスト環境の構築
- 📊 パフォーマンス評価とパラメータ調整
- 🚨 リアルタイム運用時の監視システム設計

次のステップとして、バックテスト環境の構築に取り組みます。具体的には、以下の内容で進める予定です。
🚀 バックテスト環境の設計
✅ データ読み込み:収集した過去データを用いて、シミュレーション用データセットを作成
✅ シミュレーションエンジン:
- 仮想取引環境でP&Dイベント検出モデルを実行し、取引エントリーポイントと結果をシミュレーション
✅ 評価指標の設計: - 損益 (PnL)、勝率、最大ドローダウン、シャープレシオなどの評価指標を用いて検証
✅ 結果の可視化: - MatplotlibやPlotlyを活用して、バックテスト結果のグラフ化

次の記事では、バックテストシステムの実装についてまとめます。
-
-
開発記録#144(2025/3/25)「論文ベースのbot開発フローpart.6」
続きを見る