🚀 交易機器人服務器
這是一個基於Bun構建的高性能模型上下文協議(MCP)服務器,用於加密貨幣交易自動化。該項目可實現即時市場數據收集、技術分析以及多加密貨幣資產的自動交易執行。
🚀 快速開始
本項目是一個基於Bun構建的高性能加密貨幣交易自動化服務器。以下是快速開始的步驟:
- 安裝依賴:確保你已經安裝了Bun v1.3.1或更高版本,然後克隆項目並安裝依賴。
- 配置環境變量:創建一個
.env文件,並設置必要的環境變量,如API密鑰等。
- 啟動服務器:使用
bun run server.ts命令啟動服務器。
git clone <your-repo-url>
cd trading-bot-server
bun install
cp .env.example .env
bun run server.ts
✨ 主要特性
- 即時市場數據:獲取加密貨幣資產的即時市場價格和歷史數據。
- 技術分析:在多個時間框架內計算技術指標(如RSI、MACD、布林帶等)。
- 自動交易:以可配置的置信水平執行做多、做空、持有和全部平倉等交易操作。
- 多資產支持:支持比特幣(BTC)、以太坊(ETH)、索拉納(SOL)和HYPE等資產交易(可擴展到其他交易對)。
- 持倉跟蹤:監控和獲取未平倉的交易頭寸。
- 大語言模型集成:利用人工智能模型進行智能交易分析和決策。
- 高性能:基於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協議依賴項
- 市場數據客戶端
- 交易執行庫
- 分析工具
💻 使用示例
基礎用法
示例1:獲取市場數據
const response = await server.tools.get_market_data({
symbol: "BTC"
});
console.log(`BTC Price: $${response.price}`);
console.log(`24h Change: ${response.change24h}%`);
示例2:分析技術指標
const indicators = await server.tools.get_technical_indicators({
symbol: "ETH",
period: "5m"
});
console.log(`RSI: ${indicators.rsi}`);
console.log(`Bollinger Bands Upper: ${indicators.bollingerBands.upper}`);
高級用法
示例3:執行交易
const tradeResult = await server.tools.execute_trade({
symbol: "SOL",
action: "LONG",
quantity: 10,
confidence: 0.75,
reasoning: "Strong bullish signal from RSI crossover"
});
console.log(`Order ID: ${tradeResult.orderId}`);
console.log(`Status: ${tradeResult.status}`);
示例4:檢查未平倉頭寸
const positions = await server.tools.get_open_positions();
positions.forEach(position => {
console.log(`${position.symbol}: ${position.side} ${position.quantity}`);
console.log(`P&L: $${position.pnl} (${position.pnlPercent}%)`);
});
示例5:使用AI機器人進行自主交易
const aiTrade = await server.tools.request_ai_trading_bot({
symbol: "HYPE"
});
console.log(`Analysis: ${aiTrade.analysis.trend}`);
console.log(`Trade Executed: ${aiTrade.tradeExecuted}`);
📚 詳細文檔
配置
設置環境變量
在項目根目錄下創建一個.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
驗證服務器狀態
啟動後,你應該會看到類似以下的輸出:
✔ Trading Bot Server initialized
✔ Market data provider connected
✔ MCP server listening on port 3000
✔ Ready for connections
調試模式與檢查器
使用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"
}
組件詳情
| 組件 |
用途 |
技術 |
| MCP協議處理程序 |
管理客戶端連接 |
@modelcontextprotocol/sdk |
| 市場數據服務 |
獲取即時價格 |
REST API + WebSocket |
| 技術分析 |
計算指標 |
自定義TA庫 |
| 交易執行器 |
向交易所提交訂單 |
交易所API SDK |
| 頭寸管理器 |
跟蹤活躍交易 |
數據庫/內存存儲 |
| AI/大語言模型集成 |
自主分析 |
外部大語言模型API |
性能
Bun運行時優勢
Bun相比Node.js提供了顯著的性能提升:
| 指標 |
Node.js |
Bun |
提升 |
| 包安裝 |
45秒 |
8秒 |
5.6倍更快 |
| TypeScript編譯 |
2.3秒 |
0.1秒 |
23倍更快 |
| HTTP吞吐量 |
19,039請求/秒 |
59,026請求/秒 |
3.1倍更快 |
| WebSocket消息 |
435,099消息/秒 |
2,536,227消息/秒 |
5.8倍更快 |
| 數據庫查詢 |
14,522查詢/秒 |
28,571查詢/秒 |
1.97倍更快 |
優化提示
- 使用Bun的內置打包器以實現更快的構建。
- 啟用緩存以用於市場數據查詢。
- 批量處理交易操作以減少API調用。
- 實現速率限制以遵守交易所限制。
- 監控內存使用,在受限環境中使用
bun run --smol。
故障排除
問題:“PRIVATE_API_KEY未找到”
解決方案:
ls -la .env
grep PRIVATE_API_KEY .env
source .env
bun run server.ts
問題:端口3000連接被拒絕
解決方案:
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問題:在倉庫中創建一個問題。
- 文檔:查看docs文件夾。
- 調試:使用
bunx @modelcontextprotocol/inspector bun server.ts。
額外資源