如何计算最大回撤百分比?求助计算策略测试器中的「策略最大回撤百分比」
我来帮你彻底搞懂最大回撤百分比的计算,以及如何在TradingView策略测试器里获取「策略最大回撤百分比(Max Strategy Drawdown %)」。
一、核心概念与计算逻辑
首先得区分绝对回撤和相对回撤百分比:
- 绝对回撤:指账户权益从历史最高值到之后最低值的差值,公式是:
历史最高权益 - 最高峰值后的最低权益(这也是TradingView官方给出的回撤美元值计算方式) - 相对回撤百分比:是绝对回撤值相对于产生回撤前那个历史最高权益的占比,而非初始资金(除非初始资金就是第一个历史峰值)
举个直观的例子:
- 初始资金100美元,亏到50美元:绝对回撤50美元,相对回撤50%(50/100)
- 后续盈利到300美元,又回落至200美元:绝对回撤100美元,相对回撤33%(100/300)
- 整个策略的最大绝对回撤是100美元,最大相对回撤是50%
TradingView官方说明:回撤美元值的计算公式为「历史最高权益 - 最高峰值后的最低权益」。而百分比回撤为相对计算:回撤的百分比与绝对值是两个独立追踪的不同指标。
二、TradingView策略中计算最大回撤百分比的代码实现
在Pine Script v5中,TradingView提供了内置变量strategy.max_drawdown来获取策略的最大绝对回撤值(以美元为单位),我们只需要将其除以初始资金再乘以100,就能得到百分比形式的最大回撤:
//@version=5 strategy("Max Drawdown", overlay=false) // 计算最大回撤百分比:(最大绝对回撤 / 初始资金) * 100 maxDrawdownPercent = (strategy.max_drawdown / strategy.initial_capital) * 100 // 可选:将结果以曲线形式显示在图表下方 plot(maxDrawdownPercent, title="Max Drawdown %", color=color.red, display=display.data_window) // 示例策略逻辑(双均线交叉) longCondition = ta.crossover(ta.sma(close, 14), ta.sma(close, 28)) if (longCondition) strategy.entry("My Long Entry Id", strategy.long) shortCondition = ta.crossunder(ta.sma(close, 14), ta.sma(close, 28)) if (shortCondition) strategy.entry("My Short Entry Id", strategy.short)
代码关键说明:
strategy.max_drawdown:返回策略运行以来的最大绝对回撤金额strategy.initial_capital:获取你在策略设置中输入的初始资金- 计算后的
maxDrawdownPercent就是你要的「策略最大回撤百分比」,用plot()函数可以直观展示在图表中,方便实时监控
内容的提问来源于stack exchange,提问作者Muhammed Tahreem Alam




