Files
lm_code/adaptive_third_strategy/README.md

80 lines
3.2 KiB
Markdown
Raw Normal View History

2026-01-31 10:35:25 +08:00
# 自适应三分位趋势策略
优化版实盘策略:趋势过滤 + 动态阈值 + 信号确认 + 完整风险管理。
## 目录结构
- `config.py` - 策略参数(趋势模式、止损止盈、确认条件等)
- `indicators.py` - EMA、ATR 指标
- `data_fetcher.py` - **Bitmart 方式**拉取 5/15/60 分钟 K 线API 或 CSV
- `strategy_core.py` - 趋势判断、有效 K 线、动态触发价、信号确认
- `backtest.py` - 回测引擎(硬止损、止盈、移动止损、时间止损)
- `trade.py` - 实盘交易入口(拉数据 + 信号,开平仓需对接现有 Bitmart 下单逻辑)
- `data/` - 回测用 K 线 CSV可选无则 API 拉取)
## 回测(先出数据再回测)
在**项目根目录** `lm_code` 下执行:
```bash
# 使用 API 拉取数据并回测(会请求 Bitmart 接口)
python adaptive_third_strategy/backtest.py --start 2025-01-01 --end 2025-01-30 --capital 10000
# 仅用本地已有 CSV 回测(需先抓过数据)
python adaptive_third_strategy/backtest.py --start 2025-01-01 --end 2025-01-30 --no-api
```
数据会保存到 `adaptive_third_strategy/data/kline_5m.csv``kline_15m.csv``kline_60m.csv`
回测结果输出到控制台,交易明细保存到 `adaptive_third_strategy/backtest_trades.csv`
## 仅抓取数据Bitmart 方式)
`bitmart/回测.py``bitmart/抓取多周期K线.py` 相同的 API 调用方式:
```bash
cd adaptive_third_strategy && python -c "
from data_fetcher import fetch_multi_timeframe, save_klines_csv
import time, os
end_ts = int(time.time())
start_ts = end_ts - 30*24*3600
data = fetch_multi_timeframe(start_ts, end_ts, [5, 15, 60])
os.makedirs('data', exist_ok=True)
for step, klines in data.items():
save_klines_csv(klines, f'data/kline_{step}m.csv')
"
```
需在项目根目录 `lm_code` 下执行时,先 `import sys; sys.path.insert(0, '..')` 或使用:
```bash
python -c "
import sys, os
sys.path.insert(0, os.getcwd())
from adaptive_third_strategy.data_fetcher import fetch_multi_timeframe, save_klines_csv
import time
end_ts = int(time.time())
start_ts = end_ts - 30*24*3600
data = fetch_multi_timeframe(start_ts, end_ts, [5, 15, 60])
os.makedirs('adaptive_third_strategy/data', exist_ok=True)
for step, klines in data.items():
save_klines_csv(klines, f'adaptive_third_strategy/data/kline_{step}m.csv')
"
```
## 实盘
```bash
python adaptive_third_strategy/trade.py
```
当前 `trade.py` 只做:拉 5/15/60 数据、算信号、打日志/钉钉。实际开平仓需在 `run_loop` 里接入你现有的 Bitmart 下单方式(如 `交易/bitmart-三分之一策略交易.py` 的浏览器点击或 API 下单)。
## 策略要点
- **数据与周期**:主周期 5 分钟,趋势用 15 分钟 / 1 小时 EMA。
- **有效 K 线**:实体 ≥ max(ATR×0.1, 价格×0.05%)。
- **趋势过滤**:长期 1h EMA50/200中期 15m EMA20/50短期 5m 收盘 vs EMA9保守模式要求中期+短期一致。
- **动态触发**:波动率系数 clamp(实体/ATR, 0.3, 3.0),顺势方向更易触发。
- **信号确认**:收盘价、成交量、动量等至少满足 2 项。
- **风控**:硬止损 ATR×2、时间止损 3 根 K、移动止损盈利 1×ATR 后 0.5×ATR 跟踪)、止盈目标 1.5/3/5×ATR。