🤖 从零开始? 复制 安装助手提示词 到任何 AI 助手,一步一步指导你完成安装
|
|
|
|
┌─────────────────────────────────────────┐
│ 币安交易所 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线 (1m) | 实时 WebSocket | < 5秒 |
| K线 (5m/15m/1h/4h/1d/1w) | 聚合计算 | < 10秒 |
| 期货指标 | 每 5 分钟 | < 30秒 |
| 技术指标 | 每分钟轮询 | < 3分钟 |
🔥 趋势指标 (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)
|
|
/start - 启动 Bot
/help - 帮助信息
/rank <指标> - 查看排行榜
/detail <币种> - 查看单币详情
/alert - 管理告警
| 依赖 | 版本 | 说明 |
|---|---|---|
| Python | 3.10+ | 推荐 3.12 |
| PostgreSQL | 16+ | 需安装 TimescaleDB 扩展 |
| TA-Lib | 0.4+ | 系统级库,需单独安装 |
| SQLite | 3.x | 系统自带 |
git clone https://github.com/tukuaiai/tradecat.git
cd tradecat# 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# 初始化所有服务(创建虚拟环境、安装依赖、复制配置)
./scripts/init.sh
# 或单独初始化某个服务
./scripts/init.sh data-service# 编辑各服务配置(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 # 指标计算配置# 一键启动 + 守护(推荐,自动重启挂掉的服务)
./scripts/start.sh daemon
# 查看状态
./scripts/start.sh status
# 停止全部
./scripts/start.sh stop./scripts/verify.shtradecat/
│
├── 📂 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-LibQ: 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 restartQ: 数据库连接失败?
# 检查 PostgreSQL 是否运行
sudo systemctl status postgresql
# 检查端口
ss -tlnp | grep 5433
# 检查连接
PGPASSWORD=postgres psql -h localhost -p 5433 -U postgres -c "\l"
|
救救孩子,感谢了,好人一生平安🙏🙏🙏
|
本项目采用 MIT License 开源许可证。
