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

3.2 KiB
Raw Blame History

自适应三分位趋势策略

优化版实盘策略:趋势过滤 + 动态阈值 + 信号确认 + 完整风险管理。

目录结构

  • 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.csvkline_15m.csvkline_60m.csv
回测结果输出到控制台,交易明细保存到 adaptive_third_strategy/backtest_trades.csv

仅抓取数据Bitmart 方式)

bitmart/回测.pybitmart/抓取多周期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。