Skip to content

valuets/tradecat

 
 

Repository files navigation

TradeCat

🐱 交易猫

加密货币量化交易数据平台

实时数据采集 · 38个技术指标 · Telegram Bot 信号推送


Python TimescaleDB 数据量 币种 指标 License

快速开始 架构 数据 指标 Bot

Telegram 交流群 Twitter


📖 目录

🤖 从零开始? 复制 安装助手提示词 到任何 AI 助手,一步一步指导你完成安装


✨ 核心特性

🔄 实时数据采集

  • WebSocket 实时推送 - 币安期货全币种 K线
  • 多周期支持 - 1m/5m/15m/1h/4h/1d/1w
  • 期货指标 - 持仓量、多空比、资金费率
  • 数据延迟 - < 5 秒

📊 38个技术指标

  • 趋势指标 - EMA/MACD/SuperTrend/ADX
  • 动量指标 - RSI/KDJ/CCI/MFI
  • 波动指标 - 布林带/ATR/Keltner
  • 形态识别 - 61种蜡烛 + 价格形态

🤖 Telegram Bot

  • 实时排行榜 - 20+ 种排行卡片
  • 信号推送 - 形态突破、指标异常
  • 交互查询 - 单币详情、历史回溯
  • 高优先级 - 智能筛选活跃币种

🗄️ 海量数据存储

  • K线数据 - 3.73亿条 (2018-至今)
  • 期货数据 - 9457万条 (2021-至今)
  • 存储引擎 - TimescaleDB 时序优化
  • 压缩备份 - zstd 压缩至 ~15GB

🏗️ 架构设计

系统架构图

                              ┌─────────────────────────────────────────┐
                              │            币安交易所 API                │
                              │   WebSocket K线  │  REST 期货指标       │
                              └────────┬─────────┴──────────┬───────────┘
                                       │                    │
                    ┌──────────────────▼────────────────────▼──────────────────┐
                    │                    data-service                          │
                    │  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐      │
                    │  │  backfill   │  │    live     │  │   metrics   │      │
                    │  │  历史回填    │  │  实时采集   │  │  期货指标   │      │
                    │  └─────────────┘  └─────────────┘  └─────────────┘      │
                    └──────────────────────────┬───────────────────────────────┘
                                               │
                    ┌──────────────────────────▼───────────────────────────────┐
                    │                     TimescaleDB                          │
                    │  ┌─────────────────────┐  ┌─────────────────────┐       │
                    │  │    candles_1m       │  │  futures_metrics    │       │
                    │  │   3.73亿条 / 99GB   │  │  9457万条 / 5GB     │       │
                    │  └─────────────────────┘  └─────────────────────┘       │
                    └──────────────────────────┬───────────────────────────────┘
                                               │
                    ┌──────────────────────────▼───────────────────────────────┐
                    │                   trading-service                        │
                    │  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐      │
                    │  │   engine    │  │ indicators  │  │  scheduler  │      │
                    │  │  计算引擎   │  │  38个指标   │  │  定时调度   │      │
                    │  └─────────────┘  └─────────────┘  └─────────────┘      │
                    └──────────────────────────┬───────────────────────────────┘
                                               │
                    ┌──────────────────────────▼───────────────────────────────┐
                    │                    market_data.db                        │
                    │              SQLite 指标结果 (38张表)                    │
                    └──────────────────────────┬───────────────────────────────┘
                                               │
                    ┌──────────────────────────▼───────────────────────────────┐
                    │                  telegram-service                        │
                    │  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐      │
                    │  │   cards     │  │  handlers   │  │    bot      │      │
                    │  │  排行卡片   │  │  命令处理   │  │  主程序     │      │
                    │  └─────────────┘  └─────────────┘  └─────────────┘      │
                    └──────────────────────────┬───────────────────────────────┘
                                               │
                              ┌────────────────▼────────────────┐
                              │         Telegram 用户           │
                              │   排行榜查询  │  信号接收       │
                              └─────────────────────────────────┘

服务说明

服务 端口 职责 技术栈
data-service - WebSocket K线采集、期货指标采集、历史数据回填 Python, asyncio, ccxt, cryptofeed
trading-service - 38个技术指标计算、高优先级币种筛选、定时调度 Python, pandas, numpy, TA-Lib
telegram-service - Bot 交互、排行榜展示、信号推送 python-telegram-bot, aiohttp
order-service - 交易执行、Avellaneda-Stoikov 做市 Python, ccxt, cryptofeed
TimescaleDB 5433 K线存储、期货数据存储、时序查询优化 PostgreSQL 16 + TimescaleDB

数据流向

币安 WebSocket ──▶ data-service ──▶ TimescaleDB (candles_1m)
                                          │
                                          ▼
                                   trading-service
                                          │
                                          ▼
                                   market_data.db (SQLite)
                                          │
                                          ▼
                                   telegram-service ──▶ 用户

📊 数据规模

数据概览

📈 K线数据 (candles_1m)

指标 数值
总记录数 373,342,599
币种数量 615
时间范围 2018-01-01 ~ 至今
存储大小 99 GB
压缩后 ~15 GB (zstd)

字段说明:

  • bucket_ts - K线时间戳
  • open/high/low/close - OHLC 价格
  • volume - 成交量
  • quote_volume - 成交额 (USDT)
  • taker_buy_volume - 主动买入量

📊 期货数据 (futures_metrics_5m)

指标 数值
总记录数 94,576,458
币种数量 612
时间范围 2021-12-01 ~ 至今
存储大小 5 GB
压缩后 ~800 MB (zstd)

字段说明:

  • sum_open_interest - 持仓量
  • sum_open_interest_value - 持仓价值 (USDT)
  • sum_toptrader_long_short_ratio - 大户多空比
  • sum_taker_long_short_vol_ratio - 主动买卖比

数据更新频率

数据类型 更新频率 延迟
K线 (1m) 实时 WebSocket < 5秒
K线 (5m/15m/1h/4h/1d/1w) 聚合计算 < 10秒
期货指标 每 5 分钟 < 30秒
技术指标 每分钟轮询 < 3分钟

📈 技术指标

指标分类 (38个)

🔥 趋势指标 (8个)
指标 说明 参数
EMA 指数移动平均 7/25/99 周期
MACD 异同移动平均 12/26/9
SuperTrend 超级趋势 ATR 周期 10, 乘数 3
ADX 平均趋向指数 14 周期
Ichimoku 一目均衡表 9/26/52
Donchian 唐奇安通道 20 周期
Keltner 肯特纳通道 20 周期, ATR 2倍
趋势线 自动趋势线识别 动态计算
📊 动量指标 (6个)
指标 说明 参数
RSI 相对强弱指数 14 周期
KDJ 随机指标 9/3/3
CCI 商品通道指数 20 周期
WilliamsR 威廉指标 14 周期
MFI 资金流量指数 14 周期
RSI谐波 RSI 背离检测 14 周期
📉 波动指标 (4个)
指标 说明 参数
布林带 Bollinger Bands 20 周期, 2倍标准差
ATR 真实波幅 14 周期
ATR波幅 波动率排行 14 周期
支撑阻力 关键价位识别 动态计算
📦 成交量指标 (6个)
指标 说明 用途
OBV 能量潮 量价背离
CVD 累积成交量差 买卖力量
VWAP 成交量加权均价 机构成本
成交量比率 相对成交量 放量识别
流动性 买卖盘深度 滑点预估
VPVR 成交量分布 密集成交区
🕯️ K线形态 (61+种)

蜡烛形态 (TA-Lib, 61种)

类型 形态
反转形态 锤子线、上吊线、吞没、孕线、晨星、黄昏星、三只乌鸦
持续形态 三法、分离线、并列阴阳
中性形态 十字星、纺锤线、高浪线

价格形态 (patternpy)

类型 形态 信号
头肩形态 头肩顶、头肩底 强反转
双重形态 双顶、双底 中等反转
三角形态 上升三角、下降三角、对称三角 突破方向
楔形形态 上升楔形、下降楔形 反向突破
通道形态 上升通道、下降通道、水平通道 趋势延续
📡 期货指标 (8个)
指标 说明 信号含义
持仓量 Open Interest 市场参与度
持仓价值 OI Value (USDT) 资金规模
多空比 Long/Short Ratio 散户情绪
大户多空比 Top Trader L/S 主力方向
主动买卖比 Taker Buy/Sell 即时情绪
资金费率 Funding Rate 多空成本
爆仓数据 Liquidations 极端行情
期货情绪聚合 综合评分 多维度分析

高优先级算法

系统自动识别高优先级币种 (约 130-150 个),基于以下维度:

高优先级 = K线维度 ∪ 期货维度

K线维度:
  - 成交额 Top 50
  - 波动率 Top 30  
  - 涨跌幅 Top 30

期货维度:
  - 持仓价值 Top 30
  - 主动买卖比极端 (>1.5 或 <0.67)
  - 多空比极端 (>2.0 或 <0.5)

🤖 Telegram Bot

功能概览

📊 排行榜卡片 (20+种)

类别 卡片
基础排行 RSI、MACD、KDJ、布林带、OBV
高级排行 EMA、ATR、CVD、MFI、VWAP、流动性
形态排行 K线形态、支撑阻力、趋势线
期货排行 持仓量、多空比、主动买卖比

🔔 信号推送

信号类型 触发条件
形态突破 检测到头肩、双顶等形态
指标异常 RSI 超买超卖、MACD 金叉死叉
量价异动 成交量突增、价格突破
期货异常 多空比极端、持仓量剧变

Bot 命令

/start          - 启动 Bot
/help           - 帮助信息
/rank <指标>    - 查看排行榜
/detail <币种>  - 查看单币详情
/alert          - 管理告警

🚀 快速开始

环境要求

依赖 版本 说明
Python 3.10+ 推荐 3.12
PostgreSQL 16+ 需安装 TimescaleDB 扩展
TA-Lib 0.4+ 系统级库,需单独安装
SQLite 3.x 系统自带

安装步骤

1. 克隆仓库

git clone https://github.com/tukuaiai/tradecat.git
cd tradecat

2. 安装系统依赖

# Ubuntu/Debian
sudo apt-get update
sudo apt-get install -y build-essential python3-dev

# 安装 TA-Lib
wget http://prdownloads.sourceforge.net/ta-lib/ta-lib-0.4.0-src.tar.gz
tar -xzf ta-lib-0.4.0-src.tar.gz
cd ta-lib && ./configure --prefix=/usr && make && sudo make install
cd .. && rm -rf ta-lib ta-lib-0.4.0-src.tar.gz

3. 一键初始化

# 初始化所有服务(创建虚拟环境、安装依赖、复制配置)
./scripts/init.sh

# 或单独初始化某个服务
./scripts/init.sh data-service

4. 配置环境变量

# 编辑各服务配置(init.sh 已自动从 .env.example 复制)
vim services/data-service/config/.env      # 数据库连接
vim services/telegram-service/config/.env  # Telegram Bot Token
vim services/trading-service/config/.env   # 指标计算配置

5. 启动服务

# 一键启动 + 守护(推荐,自动重启挂掉的服务)
./scripts/start.sh daemon

# 查看状态
./scripts/start.sh status

# 停止全部
./scripts/start.sh stop

6. 验证安装

./scripts/verify.sh

📁 目录结构

tradecat/
│
├── 📂 services/                    # 微服务目录 (4个)
│   │
│   ├── 📂 data-service/            # 数据采集服务
│   │   ├── 📂 src/
│   │   │   ├── 📂 collectors/      # 采集器
│   │   │   ├── 📂 adapters/        # 适配器
│   │   │   └── config.py
│   │   ├── 📂 config/
│   │   ├── 📂 scripts/
│   │   └── requirements.txt
│   │
│   ├── 📂 trading-service/         # 指标计算服务
│   │   ├── 📂 src/
│   │   │   ├── 📂 indicators/      # 38个指标
│   │   │   ├── 📂 core/            # 计算引擎
│   │   │   └── simple_scheduler.py
│   │   ├── 📂 config/
│   │   ├── 📂 scripts/
│   │   └── requirements.txt
│   │
│   ├── 📂 telegram-service/        # Telegram Bot
│   │   ├── 📂 src/
│   │   │   ├── 📂 cards/           # 排行榜卡片
│   │   │   ├── 📂 bot/             # Bot 主程序
│   │   │   └── main.py
│   │   ├── 📂 config/
│   │   └── requirements.txt
│   │
│   └── 📂 order-service/           # 交易执行服务
│       ├── 📂 src/
│       │   └── 📂 market-maker/    # A-S 做市系统
│       ├── 📂 config/
│       └── requirements.txt
│
├── 📂 libs/                        # 共享库
│   ├── 📂 database/                # 数据库文件
│   │   └── 📂 services/telegram-service/
│   │       └── market_data.db      # SQLite 指标数据
│   └── 📂 common/                  # 共享工具
│
├── 📂 scripts/                     # 全局脚本
│   ├── init.sh                     # 初始化脚本
│   ├── start.sh                    # 统一启动/守护脚本
│   ├── verify.sh                   # 验证脚本
│   └── export_timescaledb.sh       # 数据导出
│
├── 📂 backups/                     # 备份目录
│   └── 📂 timescaledb/             # 数据库备份
│
├── 📂 docs/                        # 文档目录
│   └── index.md
│
├── README.md                       # 项目说明
├── AGENTS.md                       # AI Agent 指南
└── CONTRIBUTING.md                 # 贡献指南

🔧 运维指南

服务管理

统一管理(推荐)
# 启动 + 守护(自动重启挂掉的服务,30秒检查一次)
./scripts/start.sh daemon

# 查看状态
./scripts/start.sh status

# 停止全部
./scripts/start.sh daemon-stop

# 仅启动(不守护)
./scripts/start.sh start
./scripts/start.sh stop
./scripts/start.sh restart
单服务管理
# data-service
cd services/data-service
./scripts/start.sh daemon   # 启动 + 守护
./scripts/start.sh start    # 仅启动
./scripts/start.sh stop     # 停止
./scripts/start.sh status   # 状态

# trading-service / telegram-service 同上
初始化
# 初始化全部服务
./scripts/init.sh

# 初始化单个服务
./scripts/init.sh data-service
验证与检查
./scripts/verify.sh
查看日志
# data-service 日志
tail -f services/data-service/logs/backfill.log
tail -f services/data-service/logs/ws_klines.log
tail -f services/data-service/logs/metrics.log

# trading-service 日志
tail -f services/trading-service/logs/simple_scheduler.log

# telegram-service 日志
tail -f services/telegram-service/logs/bot.log

# 守护进程日志
tail -f daemon.log
进程监控
# 查看所有相关进程
ps aux | grep -E "data-service|trading-service|telegram|simple_scheduler"

# 查看资源占用
htop -p $(pgrep -d',' -f "simple_scheduler|crypto_trading")

数据库操作

TimescaleDB 查询
# 连接数据库
PGPASSWORD=postgres psql -h localhost -p 5433 -U postgres -d market_data

# 常用查询
-- K线数据量
SELECT COUNT(*) FROM market_data.candles_1m;

-- 最新数据时间
SELECT MAX(bucket_ts) FROM market_data.candles_1m;

-- 币种列表
SELECT DISTINCT symbol FROM market_data.candles_1m ORDER BY symbol;

-- 单币种数据
SELECT * FROM market_data.candles_1m 
WHERE symbol = 'BTCUSDT' 
ORDER BY bucket_ts DESC LIMIT 10;
SQLite 查询
# 连接数据库
sqlite3 libs/database/services/telegram-service/market_data.db

# 常用查询
.tables                          -- 查看所有表
.schema "K线形态扫描器.py"        -- 查看表结构

-- 查看形态数据
SELECT * FROM "K线形态扫描器.py" 
WHERE 形态类型 LIKE '%头肩%' 
LIMIT 10;

数据备份

导出 TimescaleDB
# 运行导出脚本 (后台执行)
nohup ./scripts/export_timescaledb.sh &

# 查看进度
tail -f backups/timescaledb/export.log
ls -lh backups/timescaledb/

# 输出文件:
# - candles_1m_*.bin.zst      (~15GB, K线数据)
# - futures_metrics_*.bin.zst (~800MB, 期货数据)
# - schema_*.sql.zst          (表结构)
# - restore_*.sh              (恢复脚本)
恢复数据
cd backups/timescaledb

# 恢复 schema
zstd -d schema_*.sql.zst -c | psql -h localhost -p 5433 -U postgres -d market_data

# 恢复 K线数据
zstd -d candles_1m_*.bin.zst -c | psql -h localhost -p 5433 -U postgres -d market_data \
    -c "COPY market_data.candles_1m FROM STDIN WITH (FORMAT binary)"

# 恢复期货数据
zstd -d futures_metrics_*.bin.zst -c | psql -h localhost -p 5433 -U postgres -d market_data \
    -c "COPY market_data.binance_futures_metrics_5m FROM STDIN WITH (FORMAT binary)"

常见问题

Q: TA-Lib 安装失败?
# 确保先安装系统库
sudo apt-get install -y build-essential

# 下载并编译 TA-Lib
wget http://prdownloads.sourceforge.net/ta-lib/ta-lib-0.4.0-src.tar.gz
tar -xzf ta-lib-0.4.0-src.tar.gz
cd ta-lib
./configure --prefix=/usr
make
sudo make install

# 然后安装 Python 包
pip install TA-Lib
Q: K线形态显示"无形态"?
# 检查 TA-Lib 是否安装
python -c "import talib; print(talib.__version__)"

# 检查形态库是否安装
pip install m-patternpy
pip install tradingpattern --no-deps

# 重启 trading-service
cd services/trading-service
./scripts/start.sh restart
Q: 数据库连接失败?
# 检查 PostgreSQL 是否运行
sudo systemctl status postgresql

# 检查端口
ss -tlnp | grep 5433

# 检查连接
PGPASSWORD=postgres psql -h localhost -p 5433 -U postgres -c "\l"

📞 联系方式

社区

支持项目

救救孩子,感谢了,好人一生平安🙏🙏🙏

  • 币安 UID: 572155580
  • Tron (TRC20): TQtBXCSTwLFHjBqTS4rNUp7ufiGx51BRey
  • Solana: HjYhozVf9AQmfv7yv79xSNs6uaEU5oUk2USasYQfUYau
  • Ethereum (ERC20): 0xa396923a71ee7D9480b346a17dDeEb2c0C287BBC
  • BNB Smart Chain (BEP20): 0xa396923a71ee7D9480b346a17dDeEb2c0C287BBC
  • Bitcoin: bc1plslluj3zq3snpnnczplu7ywf37h89dyudqua04pz4txwh8z5z5vsre7nlm
  • Sui: 0xb720c98a48c77f2d49d375932b2867e793029e6337f1562522640e4f84203d2e

📜 许可证

本项目采用 MIT License 开源许可证。


⭐ 如果这个项目对您有帮助,请点亮 Star!


Made with ❤️ by tukuaiai

⬆ 返回顶部

About

交易猫;tradecat

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 94.7%
  • Shell 2.8%
  • PLpgSQL 2.4%
  • Makefile 0.1%