🚀 交易机器人服务器
这是一个基于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。
额外资源