Files
lm_code/adaptive_third_strategy/README.md
ddrwode 970080a2e6 hahaa
2026-01-31 10:35:25 +08:00

80 lines
3.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 自适应三分位趋势策略
优化版实盘策略:趋势过滤 + 动态阈值 + 信号确认 + 完整风险管理。
## 目录结构
- `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。