基于Python和币安API的专业级量化交易机器人,实现趋势跟踪策略,支持现货和合约交易。
- 多指标趋势识别: 集成EMA、MACD、ADX、布林带、RSI等多种技术指标
- 智能信号生成: 综合多指标分析,生成高质量交易信号
- 风险管理: 完善的止损止盈机制和资金管理
- 实时监控: 提供实时性能监控和风险预警
- 回测分析: 支持历史数据回测和策略优化
- 数据持久化: SQLite数据库存储交易记录和分析数据
- 可视化分析: 丰富的图表和性能报告
contractBot/
├── src/ # 核心源代码
│ ├── strategy.py # 交易策略实现
│ ├── exchange.py # 交易所接口
│ ├── risk_manager.py # 风险管理
│ ├── data_manager.py # 数据管理
│ └── trading_bot.py # 主交易机器人
├── tools/ # 工具脚本
│ ├── monitor.py # 实时监控工具
│ ├── analyzer.py # 性能分析工具
│ └── backtest.py # 回测工具
├── data/ # 数据存储目录
├── logs/ # 日志文件目录
├── analysis/ # 分析报告目录
├── config.yaml # 配置文件
├── requirements.txt # 依赖包列表
├── main.py # 主程序入口
└── README.md # 项目说明文档
- Python 3.8+
- 币安API账户
pip3 install -r requirements.txt编辑 config.yaml 文件,配置您的币安API密钥:
binance:
apiKey: "your_api_key_here"
secretKey: "your_secret_key_here"
sandbox: true # 测试环境,正式交易请设为false- 请妥善保管您的API密钥
- 建议先在测试环境中运行
- 设置适当的API权限(仅交易权限)
-
EMA (指数移动平均线)
- 快线: 12周期
- 慢线: 26周期
- 用于判断价格趋势方向
-
MACD (移动平均收敛发散)
- 参数: (12, 26, 9)
- 识别趋势转换点
-
ADX (平均趋向指数)
- 周期: 14
- 衡量趋势强度
-
布林带 (Bollinger Bands)
- 周期: 20
- 标准差: 2
- 识别超买超卖
-
RSI (相对强弱指数)
- 周期: 14
- 辅助确认信号
- EMA金叉 + MACD金叉
- ADX > 25 (趋势强劲)
- RSI < 70 (非超买)
- 价格突破布林带中轨
- EMA死叉 + MACD死叉
- ADX > 25 (趋势强劲)
- RSI > 30 (非超卖)
- 价格跌破布林带中轨
- 趋势反转确认
- 止损止盈触发
- ADX < 20 (趋势减弱)
- 止损: 2% (可配置)
- 止盈: 4% (可配置)
- 最大持仓: 账户资金的10%
- 每日交易限制: 10笔
- 最大回撤控制: 10%
python3 main.py# 实时监控模式
python3 tools/monitor.py --mode monitor
# 生成监控报告
python3 tools/monitor.py --mode report
# 导出数据
python3 tools/monitor.py --mode export --days 7# 完整性能分析
python3 tools/analyzer.py --days 30
# 仅生成报告
python3 tools/analyzer.py --report-only --days 30
# 不生成图表
python3 tools/analyzer.py --no-charts --days 30python3 tools/backtest.py- 当前持仓状态
- 最新交易信号
- 今日交易统计
- 实时盈亏情况
- 最大回撤
- 胜率统计
- 盈亏比
- 夏普比率
- 连续亏损次数
- 总收益率
- 年化收益率
- 索提诺比率
- 卡尔马比率
- 信号准确率
strategy:
# EMA参数
ema_fast: 12
ema_slow: 26
# MACD参数
macd_fast: 12
macd_slow: 26
macd_signal: 9
# ADX参数
adx_period: 14
adx_threshold: 25
# 布林带参数
bb_period: 20
bb_std: 2
# RSI参数
rsi_period: 14
rsi_overbought: 70
rsi_oversold: 30risk_management:
stop_loss_pct: 2.0 # 止损百分比
take_profit_pct: 4.0 # 止盈百分比
max_position_pct: 10.0 # 最大持仓百分比
max_daily_trades: 10 # 每日最大交易次数
max_drawdown_pct: 10.0 # 最大回撤百分比╔══════════════════════════════════════════════════════════════╗
║ 回测结果报告 ║
╠══════════════════════════════════════════════════════════════╣
║ 回测期间: 2024-01-01 至 2024-01-31 ║
║ 总交易次数: 45 ║
║ 胜率: 62.22% ║
║ 总收益率: 15.67% ║
║ 最大回撤: 3.45% ║
║ 夏普比率: 1.85 ║
║ 盈亏比: 1.45 ║
╚══════════════════════════════════════════════════════════════╝
-
API连接失败
- 检查API密钥是否正确
- 确认网络连接正常
- 验证API权限设置
-
数据库错误
- 检查data目录权限
- 确保SQLite正常安装
-
策略无信号
- 检查市场数据是否正常
- 调整策略参数敏感度
- 确认时间周期设置
# 查看交易日志
tail -f logs/trading_bot.log
# 查看错误日志
tail -f logs/error.log- 在
strategy.py中添加指标计算函数 - 在
generate_signals()方法中集成新指标 - 更新配置文件参数
- 添加相应的单元测试
- 继承
TrendFollowingStrategy类 - 重写
generate_signals()方法 - 实现自定义的信号逻辑
- 更新配置文件
- 投资有风险: 量化交易存在亏损风险,请谨慎投资
- 参数调优: 建议充分回测后再实盘交易
- 市场变化: 策略需要根据市场环境调整
- 资金管理: 严格控制仓位和风险
MIT License
欢迎提交Issue和Pull Request来改进项目。
如有问题或建议,请通过以下方式联系:
- 提交GitHub Issue
- 发送邮件至项目维护者
免责声明: 本项目仅供学习和研究使用,不构成投资建议。使用者需自行承担交易风险。