CryptoQuant是一个高性能、模块化的加密货币量化交易系统,专注于捕捉短期市场机会和风险控制。系统采用异步架构,支持多策略并行执行,提供实时数据处理和信号生成能力。
┌──────────────────────────────────────────────────────────────────────────────┐
│ CryptoQuant 系统架构 │
├──────────────────┬───────────────────────────┬───────────────────────────────┤
│ │ │ │
│ 应用层 │ 核心框架 │ 工具和服务 │
│ │ │ │
├──────────────────┼───────────────────────────┼───────────────────────────────┤
│ │ │ │
│ ┌───────────────┐│ ┌─────────────────────┐ │ ┌─────────────────────────┐ │
│ │ 短线逐利策略 ││ │ 交易框架 │ │ │ 数据分析工具 │ │
│ └───────────────┘│ │ TradingFramework │ │ │ (因子分析、回测) │ │
│ │ └─────────────────────┘ │ └─────────────────────────┘ │
│ ┌───────────────┐│ │ │
│ │ TradingView ││ ┌─────────────────────┐ │ ┌─────────────────────────┐ │
│ │ 信号追踪器 ││ │ 仓位管理器 │ │ │ HTTP服务器 │ │
│ └───────────────┘│ │ PositionManager │ │ │ HttpServer │ │
│ │ └─────────────────────┘ │ └─────────────────────────┘ │
│ ┌───────────────┐│ │ │
│ │ 资金费率套利 ││ ┌─────────────────────┐ │ ┌─────────────────────────┐ │
│ └───────────────┘│ │ 数据缓存 │ │ │ 风控模块 │ │
│ │ │ DataCache │ │ │ RiskControl │ │
│ ┌───────────────┐│ └─────────────────────┘ │ └─────────────────────────┘ │
│ │ 价格监控 ││ │ │
│ └───────────────┘│ ┌─────────────────────┐ │ ┌─────────────────────────┐ │
│ │ │ 交易接口 │ │ │ 异步事件循环 │ │
│ ┌───────────────┐│ │ Trader │ │ │ AsyncEventLoop │ │
│ │ 交易工具 ││ └─────────────────────┘ │ └─────────────────────────┘ │
│ └───────────────┘│ │ │
│ │ ┌─────────────────────┐ │ ┌─────────────────────────┐ │
│ ┌───────────────┐│ │ 行情数据订阅器 │ │ │ 日志系统 │ │
│ │ 策略模板 ││ │ MarketSubscriber │ │ │ Logger │ │
│ └───────────────┘│ └─────────────────────┘ │ └─────────────────────────┘ │
│ │ │ │
├──────────────────┴───────────────────────────┴───────────────────────────────┤
│ │
│ 交易所接口层 │
│ │
├──────────────────────────────────────────────────────────────────────────────┤
│ │
│ OKEx API │
│ │
└──────────────────────────────────────────────────────────────────────────────┘
- 高性能异步架构: 采用Python AsyncIO异步编程范式,最大化I/O密集型操作效率
- 实时数据处理: 通过WebSocket接口实时接收和处理行情数据,毫秒级响应
- 多策略支持: 支持多个交易策略并行执行,便于分散风险和捕捉不同市场机会
- 风控机制: 内置多层次风险控制,包括仓位管理、止盈止损、下单频率限制和资金使用限制
- 高效缓存: 基于内存的数据缓存系统,减少API调用频率,提高性能并避免触发交易所限流
- HTTP API接口: 提供RESTful API接口用于监控和控制策略执行,支持远程管理
- 分析工具: 内置多种分析工具,用于评估策略性能、市场状况和因子有效性
- 灵活配置: 通过JSON配置文件,灵活调整策略参数、风控设置和系统行为
- 模块化设计: 组件化、松耦合设计,便于扩展和自定义新功能
- 交易框架 (TradingFramework): 提供策略执行的基础架构,处理信号接收、分析和执行
- 仓位管理器 (PositionManager): 管理和跟踪所有交易仓位,提供统一的仓位操作接口
- 数据缓存 (DataCache): 缓存行情数据、K线和其他市场信息,减少API调用频率
- 交易接口 (Trader): 提供统一的交易接口,处理订单创建、修改和取消
- 行情订阅器 (MarketSubscriber): 通过WebSocket接收实时市场数据
- 风控模块 (RiskControl): 提供多层风险控制机制,保护资金安全
- 短线逐利策略 (Short-Term Profit Strategy): 基于多因子模型的短期交易策略,专注捕捉价格波动
- TradingView信号追踪器: 接收并执行来自TradingView的交易信号,支持多交易对和自定义参数
- 资金费率套利 (Funding Arbitrage): 针对永续合约和交割合约之间的资金费率差异进行套利
- 价格监控 (Price): 实时监控加密货币价格和资产信息,支持多种显示和提醒方式
- 交易工具 (Trader Tools): 提供多种实用交易工具,如批量下单、仓位计算和杠杆设置
- 策略模板 (Strategy Template): 用于快速开发新策略的基础模板,包含完整的框架集成
- HTTP服务器: 提供RESTful API,用于远程控制和监控策略执行
- 异步事件循环: 管理异步任务执行,提供高效的I/O操作
- 日志系统: 详细记录系统操作和异常情况,支持多级别日志
- 配置加载器: 处理JSON配置文件的加载和验证
- 分析工具: 提供因子分析、回测和性能评估功能
专注于捕捉短期价格波动机会的量化交易策略,基于多因子分析模型。
主要特点:
- 多因子分析: 综合价格变化、持仓量变化和成交量比率等因子
- 自动扫描: 定期扫描所有交易对,寻找符合条件的交易机会
- 优化的5分钟级别分析: 专注于最近5分钟的市场变化,捕捉短期机会
- 自动止盈止损: 内置多层次止盈止损机制,保护资金安全
- 实时监控: 持续监控开仓条件,及时调整持仓
接收并执行来自TradingView的交易信号,支持多种交易对和交易策略。
主要特点:
- WebSocket服务器: 接收TradingView的Alert Webhook信号
- HTTP API: 提供手动触发信号的API接口
- 多交易对支持: 可同时监控和交易多个交易对
- 仓位持久化: 在程序重启后恢复仓位信息
- 止损设置: 支持跟踪止损和固定止损
利用永续合约和交割合约之间的资金费率差异进行套利的策略。
主要特点:
- 自动识别: 识别资金费率显著偏离的合约对
- 仓位对冲: 在永续合约和交割合约之间建立对冲仓位
- 资金费获取: 通过持有对冲仓位获取资金费收益
- 风险控制: 监控价差风险,动态调整仓位
实时监控加密货币价格和资产信息的工具。
主要特点:
- 价格监控: 实时显示加密货币价格和涨跌幅
- 资产查询: 查询账户资产和仓位信息
- 历史数据分析: 支持K线数据查询和简单分析
- 自定义刷新间隔: 可设置数据刷新频率
- 多种输出方式: 支持控制台、通知和API返回
提供多种实用交易工具和功能的应用。
主要特点:
- 快速下单: 支持快速市价和限价订单
- 批量操作: 批量设置杠杆和下单
- 仓位计算: 根据风险和账户余额计算合适的仓位大小
- 杠杆设置: 快速调整合约杠杆
- 余额查询: 查询账户余额和资产分布
- IPO参与: 简化新币上线认购流程
用于快速开发新策略的基础模板,包含完整的框架集成。
主要特点:
- 完整框架: 集成交易框架的所有核心功能
- 标准接口: 提供标准的信号处理和仓位管理接口
- 示例实现: 包含示例策略实现和注释
- HTTP API: 预配置的API接口
- 配置示例: 包含详细的配置文件示例
- 克隆项目仓库:
git clone https://github.com/yourusername/cryptoquant.git
cd cryptoquant- 安装依赖:
pip install -r requirements.txt- 配置API密钥:
在
config目录下创建相应的配置文件,填入交易所API密钥和策略参数。
短线逐利策略:
python apps/short_term_profit_strategy/main.pyTradingView信号追踪器:
python apps/tradingview_signal_tracker/main.py资金费率套利:
python apps/funding_arbitrage/main.py价格监控:
python apps/price/main.py交易工具:
python apps/trader_tools/main.py所有策略配置文件位于config目录下。主要配置示例:
短线逐利策略配置 (short_term_profit_strategy.json):
{
"log": {
"level": "INFO",
"file": "logs/short_term_profit_strategy.log"
},
"exchange": {
"api_key": "YOUR_API_KEY",
"secret_key": "YOUR_SECRET_KEY",
"passphrase": "YOUR_PASSPHRASE"
},
"strategy": {
"leverage": 3,
"price_change_threshold": 1.5,
"volume_ratio_threshold": 2.5,
"position_change_threshold": 2.0
},
"position_manager": {
"max_positions": 5,
"position_size_percent": 10,
"take_profit_percent": 3.0,
"stop_loss_percent": 2.0
},
"http_server": {
"enabled": true,
"host": "0.0.0.0",
"port": 8080
}
}系统提供以下标准HTTP API接口:
-
GET
/api/status: 获取策略状态curl http://localhost:8080/api/status -
POST
/api/trigger: 触发信号处理curl -X POST http://localhost:8080/api/trigger -H "Content-Type: application/json" -d '{"action":"scan"}' -
POST
/api/close_all: 关闭所有持仓curl -X POST http://localhost:8080/api/close_all
- GET
/api/factor_analysis: 分析策略因子curl http://localhost:8080/api/factor_analysis
使用以下命令运行因子分析:
python scripts/analyze_factors.py --host <IP地址> --port 8080 --max-symbols 50支持参数:
--host: 服务器主机名或IP (默认: localhost)--port: 服务器端口 (默认: 8080)--top: 返回排名前多少的数据 (默认: 10)--max-symbols: 最多分析多少个标的 (默认: 20)--format: 输出格式 (默认: table, 可选: json)
CryptoQuant采用分层架构设计:
-
核心层: 提供基础组件和服务
- 交易框架、仓位管理、数据缓存等
-
应用层: 实现具体的交易策略和功能
- 短线逐利策略、信号追踪器等
-
服务层: 提供API和用户界面
- HTTP服务器、WebSocket服务等
-
交易所接口层: 与交易所API交互
- 目前主要支持OKEx交易所
- 复制
apps/strategy_template目录作为起点 - 实现自定义的信号处理逻辑
- 在
config目录下创建相应的配置文件 - 运行新策略的
main.py文件
- 使用异步编程模式 (asyncio)
- 遵循PEP 8命名和代码风格
- 为所有公共API添加文档字符串
- 使用类型注解提高代码可读性和安全性
- 使用日志记录关键操作和异常
- 数据缓存: 减少API调用,提高响应速度
- 异步处理: 非阻塞I/O操作
- 延迟启动: 分散多个组件的启动时间
- 内存优化: 定期清理不再需要的缓存数据
- 批量操作: 尽可能合并API请求
欢迎提交问题报告、功能请求和Pull Requests。
贡献指南:
- Fork项目
- 创建特性分支 (
git checkout -b feature/amazing-feature) - 提交更改 (
git commit -m 'Add some amazing feature') - 推送到分支 (
git push origin feature/amazing-feature) - 创建Pull Request
本项目采用 CC BY-NC (Creative Commons Attribution-NonCommercial) 许可证。
这意味着您可以:
- 分享 - 复制和重新分发本项目的材料,以任何媒介或格式
- 改编 - 重混、转换材料并以材料为基础进行创作
但须遵守下列条件:
- 署名 - 您必须给出适当的署名,提供指向本许可证的链接,同时标明是否做出了修改
- 非商业性使用 - 您不得将本项目用于商业目的
本项目仅供个人和学习研究使用,禁止商业应用。如需商业授权,请联系作者。