Skip to content

kuncle/supertrend-trading

Repository files navigation

SuperTrend Trading Signal System

Python License Binance

基于 SuperTrend 指标的加密货币交易信号系统,结合持仓量(OI)、资金费率等市场情绪指标,提供高质量的买卖信号。


📌 信号使用指南

本系统提供 两套独立的信号,适用于不同场景:

🎯 信号分工

信号系统 最佳周期 核心用途 回测胜率 年化收益*
SuperTrend 组合策略 日线 (1d) 判断大趋势方向 71% +46%
OI 情绪信号 (SAFE) 5分钟 寻找入场时机 71% ~480%

*OI 信号年化为理论值,需扣除手续费。

📖 实战用法

步骤一:日线 SuperTrend 看大方向
├── 上涨趋势 → 只做多,持有
├── 下跌趋势 → 不追多,等信号
└── 趋势转换 → 重要买卖点

步骤二:5分钟 OI 信号找入场点
├── 🟢 SAFE 信号 → 可以入场(多头离场完毕)
├── 🔴 DANGER 信号 → 别入场(空头在加仓)
└── ⏳ 无信号 → 继续观望

⚙️ 最优参数(回测验证)

参数 SuperTrend 日线 OI 信号 5分钟
ATR周期 14 -
ATR乘数 3.0 -
价格阈值 - 0.1%
OI中等阈值 - 0.5%
OI强势阈值 - 2.0%

⚠️ 注意事项

  1. ETH 的 DANGER 信号不可靠(胜率仅 29%),只关注 SAFE 信号
  2. 短周期 SuperTrend 效果差(15m/1h 亏损),请使用日线
  3. 信号需结合使用:日线趋势 + 5分钟入场时机

✨ 特性


🧠 核心策略

策略架构

flowchart TB
    subgraph 技术指标层
        ST[SuperTrend 指标]
        RSI[RSI 相对强弱]
        EMA[EMA 均线系统]
        MACD[MACD 指标]
        VOL[成交量分析]
    end
    
    subgraph 市场情绪层
        OI[持仓量变化]
        FR[资金费率]
    end
    
    subgraph 信号生成
        ST --> BASE[基础信号]
        BASE --> FILTER[多指标过滤]
        RSI --> FILTER
        EMA --> FILTER
        MACD --> FILTER
        VOL --> FILTER
        FILTER --> COMBINED[组合信号]
        COMBINED --> RISK[风险过滤]
        OI --> RISK
        FR --> RISK
        RISK --> FINAL[最终集成信号]
    end
Loading

SuperTrend 计算

1. True Range = max(High-Low, |High-PrevClose|, |Low-PrevClose|)
2. ATR = RMA(True Range, period)  # 或 SMA
3. Upper Band = HL2 + (multiplier × ATR)
4. Lower Band = HL2 - (multiplier × ATR)
5. SuperTrend = 价格突破上/下轨时切换

信号过滤规则

信号类型 SuperTrend RSI EMA MACD Volume
买入 翻多 < 70 Price > EMA_fast > EMA_slow 柱状图 > 0 或上升 > 均值
卖出 翻空 > 30 Price < EMA_fast < EMA_slow 柱状图 < 0 或下降 > 均值

⚠️ 持仓信号分析 (PO Signal)

基于价格-持仓量背离资金费率识别市场风险:

信号类型

信号 Emoji 条件 解读
DANGER 🔴 价跌 + OI涨 空头加仓,谨慎抄底
SAFE 🟢 价跌 + OI跌 多头止损离场,可能见底
BULLISH 🚀 价涨 + OI涨 多头加仓,趋势健康
TOPPING ⚠️ 价涨 + OI跌 多头获利了结,警惕见顶

信号强度

强度 条件
STRONG OI变化 > 10% + 资金费率极端
MEDIUM OI变化 > 3%
WEAK OI变化 < 3%

币种配置

不同币种支持不同阈值,配置存储在 signal_thresholds 表:

-- 查看当前配置
SELECT * FROM signal_thresholds;

-- 添加新币种配置
INSERT INTO signal_thresholds (symbol, strong_oi_change, medium_oi_change, rsi_oversold, rsi_overbought)
VALUES ('SOLUSDT', 12.0, 4.0, 32.0, 68.0);

默认配置:

币种 强 OI 中 OI RSI超卖 RSI超买
BTCUSDT 10% 3% 35 65
ETHUSDT 15% 5% 30 70

🚀 快速开始

安装

git clone https://github.com/kuncle/supertrend-trading.git
cd supertrend-trading

# 安装依赖
pip install -r requirements.txt

# 配置环境变量
cp .env.example .env
# 编辑 .env 填入你的配置

配置

编辑 config/config.py 或设置环境变量:

export APP_ENV=DEVNet           # DEVNet / TestNet / ProdNet
export DB_HOST=localhost
export DB_PASSWORD=your_password
export TG_BOT_TOKEN=your_token
export TG_BOT_CHAT_ID=your_chat_id

运行

所有功能通过 main.py 统一入口调用:

# 查看帮助
python main.py --help

# ===== 1. 实时分析 =====
python main.py                              # 单次分析(默认精简输出)
python main.py analyze --symbol ETHUSDT     # 分析指定交易对
python main.py analyze --verbose            # 详细输出(含完整分析和建议)

# ===== 2. 状态查看 =====
python main.py status                       # 查看当前配置和市场状态

# ===== 3. 守护进程 =====
python main.py daemon --interval 1h         # 每小时自动运行

# ===== 4. 组合分析 =====
python main.py combo --symbol BTCUSDT       # 多周期组合分析(1D+4H+1H)

# ===== 5. 策略回测(SuperTrend 买卖信号)=====
# 用途:验证 SuperTrend 交易策略的盈利能力
python main.py backtest --optimize --save   # 回测并优化参数
python main.py backtest -s ETHUSDT --atr 10 --mult 3.0

回测脚本(高级用法)

# ===== 策略回测 =====
# 用途:验证 SuperTrend 买卖信号的收益率、胜率、夏普比率
python -m signal.strategy_backtest -s BTCUSDT
python -m signal.strategy_backtest --optimize              # 参数优化
python -m signal.strategy_backtest --timeframes "1h,4h,1d" # 多周期

# ===== 市场信号回测 =====
# 用途:验证 OI 情绪信号(SAFE/DANGER)的预测准确率
python -m signal.market_signal_backtest -s BTCUSDT -p 5m
python -m signal.market_signal_backtest -s ETHUSDT --optimize

输出模式

精简输出(默认)

============================================================
📊 BTCUSDT | 12-22 13:32
============================================================
💰 价格: $88,823.80  |  🎯 ST: $97,020.75
🔴 趋势: 下跌(明显)  |  📏 距离: 9.2%
📉 RSI: 46(偏空)  |  📊 ATR: $3,134.50
⚪ 风险: 中性  |  OI: -1.4%↓  |  费率: 0.003%
────────────────────────────────────────────────────────────
💡 ⏳ 观望等信号
   等待SAFE信号出现
🚧 阻力: $97,020.75
============================================================

SAFE 信号出现时

💡 🟢 可入场(止损3%,目标ST $97,020)
   SAFE信号:多头离场,反弹概率高

详细输出--verbose):包含完整的市场解读和技术分析。


📊 回测结果

SuperTrend 日线组合策略(最优参数:ATR=14, 乘数=3.0)

策略 交易次数 胜率 收益率 年化收益 最大回撤 夏普比率
原始 SuperTrend 12 42% +54.3% +20.6% 26.7% 0.53
组合策略 7 71% +141.2% +46.4% 21.2% 1.06

多周期对比(组合策略)

周期 数据范围 交易数 胜率 累计收益 推荐
15m 10天 8 38% -1.5%
1h 41天 6 33% -1.5%
4h 166天 4 75% +1.5% ⚠️ 样本少
1d 2.7年 7 71% +141% ✅ 推荐

OI 情绪信号(5分钟,最优参数:价格阈值=0.1%)

信号 次数 胜率 单次收益 累计收益 年化收益*
🟢 SAFE 21 71% +0.11% +2.29% ~480%
🔴 DANGER 18 56% - - -

*年化收益为理论值(测试数据仅 1.7 天),实际需扣除手续费和滑点。

⚠️ 注意:ETH 的 DANGER 信号胜率仅 29%,只关注 SAFE 信号。


📁 项目结构

supertrend-trading/
├── main.py                # 统一入口(分析/守护/回测/状态)
├── config/
│   ├── config.py          # 配置管理(多环境支持)
│   └── model.py           # SQLAlchemy 模型
├── signal/
│   ├── supertrend.py      # 核心策略实现(含 PO 信号分析)
│   ├── scheduler.py       # 定时任务逻辑
│   ├── strategy_backtest.py  # 策略回测脚本
│   └── market_signal_backtest.py # 市场信号回测
├── utils/
│   ├── telegram_notify.py # Telegram 通知
│   ├── db_business.py     # 数据库操作(含 PO 配置/状态)
│   └── logging_util.py    # 日志工具
├── db.sql                 # 数据库表结构
├── requirements.txt       # 依赖
├── Dockerfile             # 容器化部署
└── README.md              # 项目文档

🔧 配置说明

所有配置通过 .env 文件或环境变量设置:

# 复制示例配置
cp .env.example .env

# 编辑配置
vim .env

主要配置项

变量 说明 默认值
DB_HOST 数据库地址 localhost
DB_PASSWORD 数据库密码 -
TG_BOT_TOKEN Telegram Bot Token -
TG_BOT_CHAT_ID Telegram Chat ID -
ST_ATR_PERIOD ATR 周期 7
ST_MULTIPLIER ATR 乘数 3.0
MAX_DRAWDOWN_THRESHOLD 最大回撤阈值 20.0

完整配置项见 .env.example


⚠️ 风险提示

本系统仅供学习和研究使用,不构成投资建议。

  • 🛡️ 加密货币市场波动剧烈,请合理控制仓位
  • 📊 历史回测结果不代表未来表现
  • 💰 始终设置止损,单次风险不超过总资金的 2%
  • ⚡ SuperTrend 在震荡行情中会产生较多假信号

🚀 部署

后台运行

# 使用 nohup
nohup python main.py daemon --interval 1h > /dev/null 2>&1 &

# 使用 screen
screen -S supertrend
python main.py daemon --interval 1h
# Ctrl+A, D 离开 screen

Systemd 服务(Linux)

创建 /etc/systemd/system/supertrend.service

[Unit]
Description=SuperTrend Trading Bot
After=network.target mysql.service

[Service]
Type=simple
User=your_username
WorkingDirectory=/path/to/supertrend-trading
ExecStart=/usr/bin/python3 main.py daemon --interval 1h
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target

启动服务:

sudo systemctl enable supertrend
sudo systemctl start supertrend
sudo systemctl status supertrend

Docker

单独运行容器:

docker build -t supertrend .
docker run -d --name supertrend --env-file .env supertrend

使用 Docker Compose(推荐,包含 MySQL):

# 复制配置
cp .env.example .env
vim .env  # 填入 Telegram Token 等

# 一键启动
docker-compose up -d

# 查看日志
docker-compose logs -f supertrend

# 停止
docker-compose down

❓ 常见问题

Q: Telegram 通知没收到?

检查 TG_BOT_TOKENTG_BOT_CHAT_ID 是否正确配置。运行 python main.py status 查看配置状态。

Q: 数据库连接失败?

确保 MySQL 服务运行,检查 DB_HOSTDB_USERDB_PASSWORD 配置。

Q: API 调用失败?

检查网络连接,确认可以访问 api.binance.com。可能遇到限流,稍后重试。

Q: 如何修改策略参数?

编辑 config/config.py 中的 ST_ATR_PERIODST_MULTIPLIER,或使用环境变量覆盖。

Q: 日志在哪里?

logs/supertrend_YYYYMMDD.log,查看命令:tail -f logs/supertrend_$(date +%Y%m%d).log


🤝 贡献

欢迎提交 Issue 和 Pull Request!

  1. Fork 本仓库
  2. 创建功能分支 (git checkout -b feature/AmazingFeature)
  3. 提交更改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 打开 Pull Request

📄 许可证

本项目采用 MIT 许可证 - 详见 LICENSE 文件


🙏 致谢

About

SuperTrend Trading Signal System

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published