金融与交易
需要搭建/配置加密货币合约自动交易信号机器人时:用多交易所…
适用于把 Telegram/TradingView/自定义 API 信号接入 Binance/Bybit/OKX 合约,执行杠杆、仓位、止盈止损和 P&L 监控的自动化交易机器人。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 60/100 ×0.15
适用场景
需要搭建/配置加密货币合约自动交易信号机特定
解决思路
- 克隆仓库并安装依赖:运行 `git clone https://github.com/Whit1985/Binance-Futures-Signal-Bot.git`,`cd Binance-Futures-Signal-Bot`,`pip install -r requirements.txt`;也可运行 `python main.py` 后选择 `1 → Install Dependencies`。确保 Python 3.10+。
- 确认关键依赖包:`rich`、`python-binance`、`ccxt`、`pandas`、`ta`、`websockets`、`cryptography`。
- 快速启动交互菜单:运行 `python main.py`,可使用选项 `1 → Install Dependencies`、`2 → Settings`、`3 → About`、`4 → Connect Signal Source`、`5 → Start Auto Trading`、`6 → Strategy Configuration`、`7 → Position Manager`、`8 → P&L Dashboard`、`0 → Exit`。
- Windows 运行 `run.bat`;Linux/macOS 运行 `chmod +x run.sh && ./run.sh`。
- 编辑 `config.json`,配置 `exchange`、`api_key`、`api_secret`、`testnet`、`leverage`、`max_position_pct`、`trailing_stop_pct`、`signal_source`、`telegram_bot_token`、`telegram_channel_id`、`tradingview_webhook_port`、`strategies`、`pairs`、`risk_management`。
- 优先用环境变量保存密钥:`export BINANCE_API_KEY`、`BINANCE_API_SECRET`、`BYBIT_API_KEY`、`BYBIT_API_SECRET`、`OKX_API_KEY`、`OKX_API_SECRET`、`OKX_PASSPHRASE`、`TELEGRAM_BOT_TOKEN`。
- 不要把真实密钥提交到 `config.json`;该文件默认在 `.gitignore` 中。
- Binance Futures 配置:用 `config.py` 模式写入 `exchange="binance"`、`api_key` 从 `BINANCE_API_KEY` 读取、`api_secret` 从 `BINANCE_API_SECRET` 读取、`testnet=True` 先测试、`leverage=5`、`pairs=["BTCUSDT","ETHUSDT"]`。
- Bybit Perpetual 配置:设置 `exchange="bybit"`、`api_key`、`api_secret`、`leverage=5`、`pairs=["BTCUSDT","ETHUSDT"]`。
- OKX Perpetual Swap 配置:设置 `exchange="okx"`、`api_key`、`api_secret`、`okx_passphrase`、`leverage=5`、`pairs=["BTC-USDT-SWAP","ETH-USDT-SWAP"]`。
- Telegram 信号源:在 `https://t.me/BotFather` 创建 bot 获取 token;把 bot 加为信号频道管理员;获取以 `-100` 开头的频道 ID;配置 `signal_source="telegram"`、`telegram_bot_token`、`telegram_channel_id`。
- TradingView 信号源:配置 `signal_source="tradingview"`、`tradingview_webhook_port=8080`;TradingView 告警 JSON 使用 `symbol`、`side`、`leverage`、`price`(如 `{{close}}`)、`strategy`;把 webhook URL 指向 `http://YOUR_SERVER_IP:8080/webhook`。
- 自定义 API 信号源:配置 `signal_source="api"`、`custom_api_url`、`custom_api_key`。
- 配置 EMA Crossover:`ema_crossover` 中设 `enabled`、`fast`、`slow`;fast EMA 上穿 slow EMA 做 LONG,fast EMA 下穿 slow EMA 做 SHORT;适合 15m、1h、4h 周期。
- 配置 RSI Divergence:设 `period`、`overbought`、`oversold`;价格更低低点 + RSI 更高低点做 LONG;价格更高高点 + RSI 更低高点做 SHORT。
- 配置 Bollinger Band Breakout:设 `period`、`std_dev`;收盘价高于上轨做 LONG,低于下轨做 SHORT。
- 配置 MACD Momentum:设 `fast`、`slow`、`signal`;交易 histogram 与 signal line 交叉并确认,零线作为趋势过滤。
- 运行多策略:所有启用的策略每根 K 线运行;机器人取最高置信度信号并过滤冲突;在 `strategies` 中开关各策略。
- 配置风险管理:设置 `leverage`、`max_position_pct`、`trailing_stop_pct`、`risk_management.max_open_positions`、`max_daily_loss_pct`、`stop_loss_pct`、`take_profit_pct`。
- 理解风险参数:`leverage` 支持 1x–125x,起步用 2–5x;`max_position_pct` 为每笔占账户余额百分比;`trailing_stop_pct` 在价格盈利该百分比后激活移动止损;`max_open_positions` 为并发持仓硬上限;`max_daily_loss_pct` 达到后停止交易;`stop_loss_pct` 为入场固定止损距离;`take_profit_pct` 为固定止盈距离。
- 启用移动止损:当盈利达到 `trailing_stop_pct` 后,止损跟随峰值价格;价格反转该距离时自动平仓。
- 先在 testnet 验证:设置 `testnet=true`、`exchange="binance"`;Binance testnet 使用 `https://testnet.binancefuture.com`,Bybit testnet 使用 `https://testnet.bybit.com`。
- 以代码加载配置:定义 `load_config(path="config.json")` 读取 JSON,再用环境变量覆盖 `api_key` 和 `api_secret`。
- 创建最小安全测试配置:`exchange="binance"`、`api_key=""` 由环境变量 `BINANCE_API_KEY` 设置、`api_secret=""` 由环境变量 `BINANCE_API_SECRET` 设置、`testnet=true`、`leverage=2`、`max_position_pct=1.0`、`signal_source="telegram"`、`telegram_bot_token=""` 由环境变量设置、`telegram_channel_id=""`、仅启用 `ema_crossover`、`pairs=["BTCUSDT"]`、`max_open_positions=1`、`max_daily_loss_pct=1.0`、`stop_loss_pct=1.5`、`take_profit_pct=3.0`,写入 `config.json`。
- 验证安装:检查 `rich`、`binance`、`ccxt`、`pandas`、`ta`、`websockets`、`cryptography` 是否可导入;缺失时运行 `pip install <pkg>`。
- 排查无法连接交易所:检查 API key 权限(Binance 需 Enable Futures、Enable Reading、Enable Spot & Margin Trading;Bybit 需 Unified Trading、Read/Write;OKX 需 Trade、Read);用 `ccxt.binance` 配置 `apiKey`、`secret`、`options.defaultType='future'` 后执行 `fetch_balance()` 测试连通性。
- 排查 Telegram 信号未收到:确认 bot 是频道管理员;确认 `telegram_channel_id` 以 `-100` 开头;添加 bot 后向频道发测试消息;用 `https://api.telegram.org/bot<TOKEN>/getMe` 检查 token。
- 排查 TradingView webhook 未触发:确保 8080 端口开放;检查防火墙,例如 `sudo ufw allow 8080/tcp`;本地用 `curl -X POST http://localhost:8080/webhook -H 'Content-Type: application/json' -d '{"symbol":"BTCUSDT","side":"BUY","leverage":5}'` 测试。
- 排查杠杆被拒:Binance 每个 symbol 最大杠杆不同(BTC 125x,山寨币更低);Bybit 交易前需按 symbol 设置杠杆;从 `leverage=5` 开始谨慎增加。
- 排查启动时 ImportError:运行 `pip install --upgrade -r requirements.txt`,或单独安装 `rich>=13.0.0 python-binance>=1.0.19 ccxt>=4.2.0 pandas>=2.1.0 ta>=0.10.2 websockets>=12.0 cryptography`。
- 排查止损未平仓:确保 `risk_management` 中设置 `stop_loss_pct`;移动止损只在达到初始盈利阈值 `trailing_stop_pct` 后激活;检查交易所订单类型支持,部分山寨币交易对有限制。
- 按安全清单执行:先用 `testnet=true`;从 `leverage=2` 或 `3` 开始;设置 `max_daily_loss_pct <=3.0`;初始保持 `max_open_positions <=3`;不要提交带真实密钥的 `config.json`;所有密钥用环境变量;在交易所侧限制 API key IP;初始只启用一个策略,验证后再增加。
- 了解项目结构以便操作:入口 `main.py`,核心交易动作 `bot_actions.py`,配置加载 `config.py`,依赖 `requirements.txt`,平台启动脚本 `run.bat`/`run.sh`,动作在 `actions/`,工具在 `utils/`,发布说明在 `release/README.md`。
- 注意免责声明:该软件仅供教育和研究;合约交易可能全部爆仓,作者不承担财务损失责任。
适用边界 · 注意事项
- 不适用于没有 Binance/Bybit/OKX 账户、API Key 或不愿承担合约交易风险的用户。
- 不应用于未经 testnet 验证、无明确风控的实盘资金或高杠杆场景。
- 不适用于不支持该机器人或对应合约交易对的交易所/品种。