如何获取策略执行中的当前资金?计算值与回测结果不符求助
解决TradingView策略中当前资金计算与测试器数值不匹配的问题
你的公式核心问题是只扣除了最后一笔平仓订单的佣金,而非所有平仓订单的总佣金,这直接导致计算结果和测试器手动统计的数值不符。以下是两种解决方案:
方案一:直接使用内置变量(推荐)
TradingView提供了现成变量来获取实时账户资金,无需手动计算:
strategy.equity:实时反映当前账户总权益,包含未平仓头寸的浮动盈亏、已平仓盈亏、所有佣金费用和初始资金。strategy.closed_equity:仅统计已平仓订单处理后的账户资金,不包含未平仓头寸的浮动盈亏。
用这两个变量直接获取的数值,会和策略测试器中的统计完全一致。
方案二:修正手动计算逻辑
如果一定要手动计算,必须累加所有平仓订单的佣金,而非只取最后一笔。示例代码如下:
// 初始化总佣金变量 var float total_commission = 0.0 // 每次有新的平仓订单时,重新累加所有佣金 if strategy.closedtrades > 0 total_commission := ta.sum(strategy.closedtrades.commission(i), i = 0, strategy.closedtrades - 1) // 计算当前资金 current_capital = strategy.initial_capital + strategy.grossprofit - strategy.grossloss - total_commission
原公式错误原因
原公式中strategy.closedtrades.commission(strategy.closedtrades - 1)仅提取了最后一笔平仓订单的佣金,而实际总佣金是所有已平仓订单的佣金总和,这会导致资金计算少扣/多扣佣金,最终数值和测试器手动统计结果不匹配。
内容的提问来源于stack exchange,提问作者MuQ
相关产品推荐
相关产品推荐

