🚀 トレーディングボットサーバ
このサーバは、Bunで構築された高性能な暗号通貨自動取引のためのModel Context Protocol (MCP) サーバです。複数の暗号資産に対するリアルタイムの市場データ収集、テクニカル分析、自動取引実行機能を提供します。
🚀 クイックスタート
このトレーディングボットサーバは、Bunを使用して構築された高性能な暗号通貨自動取引システムです。リアルタイムの市場データ収集、テクニカル分析、自動取引実行などの機能を備えています。以下の手順に従って、サーバをセットアップしてください。
✨ 主な機能
- リアルタイム市場データ:暗号資産のリアルタイムの市場価格と履歴データを取得します。
- テクニカル分析:複数の時間枠でテクニカル指標(RSI、MACD、ボリンジャーバンドなど)を計算します。
- 自動取引:LONG、SHORT、HOLD、CLOSE_ALLの取引アクションを設定可能な信頼度で実行します。
- 多資産対応:BTC、ETH、SOL、HYPEなどの複数の資産で取引が可能で、他のシンボルにも拡張可能です。
- ポジション追跡:オープンな取引ポジションを監視および取得します。
- LLM統合:AIモデルを活用して、賢い取引分析と意思決定を行います。
- 高性能:Bunランタイムを使用しており、Node.jsよりも3倍高速なパフォーマンスを実現します。
📦 インストール
ステップ1: プロジェクトのクローンまたは作成
bun init trading-bot-server
cd trading-bot-server
git clone <your-repo-url>
cd trading-bot-server
ステップ2: 依存関係のインストール
bun install
これにより、package.jsonで定義されたすべての依存関係がインストールされます。以下のものが含まれます。
- MCPプロトコルの依存関係
- 市場データクライアント
- 取引実行ライブラリ
- 分析ツール
📚 ドキュメント
環境変数の設定
プロジェクトのルートディレクトリに.envファイルを作成し、以下の必須変数を設定してください。
PRIVATE_API_KEY=your_private_api_key_here
EXCHANGE_API_KEY=your_exchange_api_key
EXCHANGE_SECRET_KEY=your_exchange_secret_key
SERVER_PORT=3000
LOG_LEVEL=info
TRADING_MODE=simulation
プライベートAPIキーの取得
- 取引プラットフォームのアカウントにログインします。
- 設定 → API管理またはセキュリティに移動します。
- 以下の権限を持つ新しいAPIキーを作成します。
- 市場データの読み取り ☐
- アカウント残高の読み取り ☐
- 注文の作成 ☐
- 注文のキャンセル ☐
- プライベートキーをコピーし、
.envファイルに追加します。
- キーを安全に保管してください。
.envをバージョン管理にコミットしないでください。
環境の安全性
常に.envを.gitignoreに追加してください。
echo ".env" >> .gitignore
echo ".env.local" >> .gitignore
echo "*.key" >> .gitignore
サーバの実行
基本的な実行
bun run server.ts
サーバはデフォルトのポートで起動し、MCPプロトコルの接続を待機します。
カスタム設定での実行
export $(cat .env.production | xargs)
bun run server.ts
bun run --watch server.ts
bun run --smol server.ts
サーバの状態の確認
起動後、以下のような出力が表示されるはずです。
☑️ トレーディングボットサーバが初期化されました
☑️ 市場データプロバイダに接続されました
☑️ MCPサーバがポート3000で待機中です
☑️ 接続を待機しています
MCPインスペクタを使用したデバッグモード
MCPインスペクタを使用したデバッグ
MCPインスペクタは、MCPサーバのデバッグと監視のための視覚的なインターフェイスを提供します。これは以下の用途に非常に役立ちます。
- ツール関数の呼び出しのテスト
- サーバの応答の検査
- 取引実行ロジックのデバッグ
- リアルタイムデータフローの監視
インストール
npm install -g @modelcontextprotocol/inspector
bun add -g @modelcontextprotocol/inspector
インスペクタでの実行
bunx @modelcontextprotocol/inspector bun server.ts
mcp-inspector bun server.ts
bun run --inspect server.ts
インスペクタのインターフェイス
実行後、インスペクタは以下の機能を提供します。
- ツールブラウザ:利用可能なすべてのツールとそのパラメータを表示します。
- リクエスト/レスポンスビューア:リアルタイムのAPI呼び出しと応答を表示します。
- エラー追跡:エラーが発生したときに監視し、デバッグします。
- パフォーマンスメトリクス:実行時間とリソース使用量を表示します。
インスペクタのワークフローの例
bunx @modelcontextprotocol/inspector bun server.ts
APIリファレンス
利用可能なツール
1. get_market_data
指定された暗号通貨シンボルの現在の市場価格とデータを取得します。
パラメータ:
symbol (文字列、必須): 取引シンボル - BTC、ETH、SOL、または HYPE
応答:
{
"symbol": "BTC",
"price": 45250.50,
"change24h": 2.35,
"volume": 28450000000,
"timestamp": 1698825600000
}
2. get_technical_indicators
指定された時間枠とシンボルのテクニカル分析指標を計算します。
パラメータ:
symbol (文字列、必須): 取引シンボル
period (文字列、必須): 時間周期 - 5m (5分) または 4h (4時間)
応答:
{
"symbol": "BTC",
"period": "5m",
"rsi": 65.42,
"macd": 245.30,
"bollingerBands": {
"upper": 46000,
"middle": 45250,
"lower": 44500
}
}
3. get_open_positions
現在オープンなすべての取引ポジションを取得します。
応答:
{
"positions": [
{
"symbol": "BTC",
"side": "LONG",
"quantity": 0.5,
"entryPrice": 44000,
"currentPrice": 45250.50,
"pnl": 625.25,
"pnlPercent": 1.42
}
]
}
4. execute_trade
指定されたパラメータと信頼度で取引アクションを実行します。
パラメータ:
symbol (文字列、必須): 取引シンボル
action (文字列、必須): 取引アクション - LONG、SHORT、HOLD、または CLOSE_ALL
quantity (数値、必須): ベース通貨での取引数量
confidence (数値、必須): 信頼度 (0.0 - 1.0)
reasoning (文字列、必須): 取引決定の説明
応答:
{
"status": "executed",
"orderId": "ORD_1698825650_BTC",
"symbol": "BTC",
"action": "LONG",
"quantity": 0.5,
"executionPrice": 45250.50,
"timestamp": 1698825650000
}
5. request_ai_trading_bot
AI取引ボットMCPサーバにリクエストを送信して、データを収集、市場を分析、自動的に取引を実行します。
パラメータ:
symbol (文字列、必須): 分析する取引シンボル
応答:
{
"status": "processing",
"analysis": {
"trend": "bullish",
"strength": 0.85,
"recommendation": "LONG"
},
"tradeExecuted": true,
"orderId": "ORD_1698825650_BTC"
}
💻 使用例
例1: 市場データの取得
const response = await server.tools.get_market_data({
symbol: "BTC"
});
console.log(`BTC価格: $${response.price}`);
console.log(`24時間の変動: ${response.change24h}%`);
例2: テクニカル指標の分析
const indicators = await server.tools.get_technical_indicators({
symbol: "ETH",
period: "5m"
});
console.log(`RSI: ${indicators.rsi}`);
console.log(`ボリンジャーバンド上限: ${indicators.bollingerBands.upper}`);
例3: 取引の実行
const tradeResult = await server.tools.execute_trade({
symbol: "SOL",
action: "LONG",
quantity: 10,
confidence: 0.75,
reasoning: "RSIクロスオーバーからの強い強気シグナル"
});
console.log(`注文ID: ${tradeResult.orderId}`);
console.log(`ステータス: ${tradeResult.status}`);
例4: オープンポジションの確認
const positions = await server.tools.get_open_positions();
positions.forEach(position => {
console.log(`${position.symbol}: ${position.side} ${position.quantity}`);
console.log(`損益: $${position.pnl} (${position.pnlPercent}%)`);
});
例5: AIボットによる自動取引
const aiTrade = await server.tools.request_ai_trading_bot({
symbol: "HYPE"
});
console.log(`分析: ${aiTrade.analysis.trend}`);
console.log(`取引実行: ${aiTrade.tradeExecuted}`);
コンポーネントの詳細
| コンポーネント |
目的 |
技術 |
| MCPプロトコルハンドラ |
クライアント接続を管理 |
@modelcontextprotocol/sdk |
| 市場データサービス |
リアルタイムの価格を取得 |
REST API + WebSocket |
| テクニカル分析 |
指標を計算 |
カスタムTAライブラリ |
| 取引実行者 |
取引所に注文を送信 |
取引所API SDK |
| ポジションマネージャ |
アクティブな取引を追跡 |
データベース/インメモリストア |
| AI/LLM統合 |
自動分析 |
外部LLM API |
🔧 技術詳細
Bunランタイムの利点
BunはNode.jsに比べて大幅なパフォーマンス向上を提供します。
| 指標 |
Node.js |
Bun |
改善率 |
| パッケージインストール |
45s |
8s |
5.6倍速い |
| TypeScriptコンパイル |
2.3s |
0.1s |
23倍速い |
| HTTPスループット |
19,039 req/s |
59,026 req/s |
3.1倍速い |
| WebSocketメッセージ |
435,099 msg/s |
2,536,227 msg/s |
5.8倍速い |
| データベースクエリ |
14,522 q/s |
28,571 q/s |
1.97倍速い |
最適化のヒント
- Bunの組み込みバンドラを使用して、より高速なビルドを行います。
- キャッシュを有効化して、市場データクエリを高速化します。
- 取引操作をバッチ処理して、API呼び出しを減らします。
- レート制限を実装して、取引所の制限を遵守します。
- メモリ使用量を監視して、制約のある環境では
bun run --smolを使用します。
トラブルシューティング
問題: "PRIVATE_API_KEY not found"
解決策:
ls -la .env
grep PRIVATE_API_KEY .env
source .env
bun run server.ts
問題: ポート3000で "Connection refused"
解決策:
lsof -i :3000
kill -9 <PID>
PORT=3001 bun run server.ts
問題: インスペクタが起動しない
解決策:
bun add -g @modelcontextprotocol/inspector@latest
mcp-inspector --help
bun run --inspect-brk server.ts
問題: APIキーの認証失敗
解決策:
echo $PRIVATE_API_KEY | wc -c
curl -H "Authorization: Bearer $PRIVATE_API_KEY" \
https://api.example.com/account
PRIVATE_API_KEY=$(echo $PRIVATE_API_KEY | xargs)
問題: 高いメモリ使用量
解決策:
bun run --smol server.ts
ps aux | grep server.ts
setInterval(() => {
if (global.gc) global.gc();
}, 60000);
問題: 市場データAPIのレート制限
解決策:
開発ワークフロー
ホットリロード開発
bun run --watch server.ts
テストの実行
bun test
本番用のビルド
bun build --target bun server.ts --outfile dist/server.js
Dockerデプロイ
FROM oven/bun:latest
WORKDIR /app
COPY package.json bun.lockb ./
RUN bun install --frozen-lockfile
COPY server.ts .
ENV NODE_ENV=production
EXPOSE 3000
CMD ["bun", "run", "server.ts"]
セキュリティのベストプラクティス
- APIキーを含む
.envファイルを決してコミットしないでください。
- 本番環境では環境固有のシークレットを使用してください。
- レート制限を実装して、乱用を防止してください。
- 外部ソースからのすべての入力を検証してください。
- 本番デプロイではHTTPSを使用してください。
- 定期的にAPIキーをローテートしてください。
- 取引アカウントの疑わしい活動を監視してください。
- 取引実行にはリクエスト署名を実装してください。
コントリビュート
このプロジェクトに貢献するには、以下の手順に従ってください。
- 機能ブランチを作成します。
- 変更を加えます。
- インスペクタで十分にテストします。
- プルリクエストを送信します。
📄 ライセンス
[ここにライセンスを追加してください]
サポート
問題、質問、または機能リクエストについては、以下の方法で対応します。
- GitHub Issues:リポジトリに問題を作成してください。
- ドキュメント:docsフォルダを確認してください。
- デバッグ:
bunx @modelcontextprotocol/inspector bun server.tsを使用してください。
追加リソース