自适应三分位趋势策略
优化版实盘策略:趋势过滤 + 动态阈值 + 信号确认 + 完整风险管理。
目录结构
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 下执行:
# 使用 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 调用方式:
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, '..') 或使用:
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')
"
实盘
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。