dsh-tool-backtest
其他 活跃维护

dsh-tool-backtest

dmsobtl/dsh-tool-backtest

轻量级策略回测工具,支持自定义买卖信号规则,可导入历史行情数据一键运行回测,自动输出收益率、最大回撤等核心绩效指标,操作简单易上手。

0
Stars 标星
0
Forks 分支
0
Watchers 关注
0
Open Issues
TypeScript
主要语言
None
开源协议
12 KB
仓库大小
1 个月前
最后推送
一键安装扩展 / 插件指令
dsh plugin --profile web add github:dmsobtl/dsh-tool-backtest
git clone https://github.com/dmsobtl/dsh-tool-backtest.git
git clone git@github.com:dmsobtl/dsh-tool-backtest.git
README.md main

dsh-tool-backtest

DSH 插件:策略回测引擎 — 定义买卖信号,跑历史数据,输出绩效指标。

工具清单

工具 功能
run_backtest 输入 K 线 + 信号 → 输出收益率、夏普、回撤、胜率、交易记录
calc_indicator 技术指标计算:SMA、EMA、RSI、MACD、布林带

安装

dsh plugin add dsh-tool-backtest

配置

- insert:
    - id: backtest
      name: dsh-tool-backtest
      config:
        defaultCapital: 100000    # 默认初始资金
        defaultCommission: 0.001  # 默认手续费率 0.1%

使用流程

Agent 的标准回测工作流:

1. market_kline 获取历史数据
2. calc_indicator 计算技术指标
3. 根据策略规则生成 signals(Agent 自行判断)
4. run_backtest 执行回测
5. 分析结果,给出建议

工具详解

run_backtest

输入:

{
  "strategyName": "MA5/20 金叉",
  "bars": [{"date":"2024-01-02","open":100,"high":102,"low":99,"close":101,"volume":50000}, ...],
  "signals": [{"date":"2024-01-15","action":"buy","reason":"MA5上穿MA20"}, ...],
  "capital": 100000,
  "commission": 0.001
}

输出:

{
  "summary": {
    "strategy": "MA5/20 金叉",
    "period": "2024-01-02 ~ 2024-12-31",
    "totalReturn": "18.5%",
    "annualizedReturn": "18.5%",
    "maxDrawdown": "7.2%",
    "sharpeRatio": 1.82,
    "winRate": "65%",
    "totalTrades": 12,
    "avgHoldingDays": 15,
    "profitFactor": 2.3
  },
  "recentTrades": [...],
  "equityCurve": [...]
}

calc_indicator

支持的指标:

指标 参数 说明
sma period (默认 20) 简单移动平均
ema period (默认 20) 指数移动平均
rsi period (默认 14) 相对强弱指标,0-100
macd 固定 12/26/9 DIF、DEA、柱状图
bollinger period (默认 20) 上轨、中轨、下轨

输入:

{
  "prices": [100, 101.5, 99.8, 102.3, ...],
  "indicator": "rsi",
  "period": 14
}

输出:

{
  "indicator": "RSI",
  "period": 14,
  "values": [45.2, 52.1, 68.3, ...]
}

绩效指标说明

指标 含义 参考值
年化收益 按交易天数折算的年化回报 > 15% 算不错
最大回撤 从峰值到谷底的最大跌幅 < 20% 较安全
夏普比率 风险调整后收益 > 1 可接受,> 2 优秀
胜率 盈利交易占比 趋势策略 40-50% 正常
盈亏比 平均盈利/平均亏损 > 1.5 配合低胜率可行
交易次数 样本量 > 20 有统计意义

与 dsh-tool-market-data 配合

# 典型 Agent 对话:

User: 用 RSI 超卖策略回测 BTC 半年

Agent:
→ market_kline({ symbol: "BTC", market: "crypto", period: "1d", limit: 180 })
→ calc_indicator({ prices: [close prices...], indicator: "rsi", period: 14 })
# 生成信号:RSI < 30 → buy, RSI > 70 → sell
→ run_backtest({ strategyName: "RSI(14) 超买超卖", bars: [...], signals: [...] })
# 输出绩效报告

局限性

  • 不支持做空(仅多头)
  • 不支持分批建仓/加仓
  • 不支持止损止盈(需在信号层面实现)
  • 滑点未建模(以收盘价成交)
  • 无资金管理(每次全仓进出)

这些适合作为 v0.2+ 的增强方向。

License

MIT