Trading View回测支持添加自定义指标、写入文件及提取特定信号数据吗?
TradingView回测自定义指标展示与数据处理方案
一、能否在回测结果中展示自行计算的指标?
完全可以,而且不需要修改初始资金、交易次数这类默认指标来替代。通过Pine Script的strategy.set_custom_metric()函数,可将自定义统计值直接添加到回测报告的「自定义指标」板块,直观展示结果。
针对你需要统计买入信号发出后收盘价大于开盘价的天数的需求,可通过以下逻辑实现:
- 用变量跟踪持仓状态、买入后的天数,以及累计收阳天数
- 在持仓期间,每日判断
close > open,符合条件则累加统计值 - 用
strategy.set_custom_metric()将统计结果写入回测报告
代码示例(Pine Script v5)
//@version=5 strategy("买入后收阳天数统计", overlay=true, default_qty_type=strategy.cash, default_qty_value=10000) // 替换为你自己的买入/卖出信号逻辑(示例用MA金叉死叉) maFast = ta.sma(close, 5) maSlow = ta.sma(close, 20) buySignal = ta.crossover(maFast, maSlow) sellSignal = ta.crossunder(maFast, maSlow) // 初始化统计变量 var int totalBullishDays = 0 // 累计所有买入后的收阳天数 var bool inTrade = false // 是否处于持仓状态 var int tradeCount = 0 // 总交易次数 // 触发买入信号时,重置持仓状态 if (buySignal) strategy.entry("多单", strategy.long) inTrade := true // 持仓期间每日统计收阳天数 if (inTrade) if (close > open) totalBullishDays += 1 // 触发卖出信号时,更新交易次数并重置持仓状态 if (sellSignal) strategy.close("多单") inTrade := false tradeCount += 1 // 将统计值写入回测报告的自定义指标 strategy.set_custom_metric("买入后收阳总天数", totalBullishDays) // 计算平均每次交易的收阳天数(可选) avgBullishDays = tradeCount > 0 ? totalBullishDays / tradeCount : 0 strategy.set_custom_metric("单次交易平均收阳天数", avgBullishDays) // 最后一根K线在图表上显示统计结果(可选) var label statsLabel = label.new(bar_index, high, "", color=color.navy, textcolor=color.white) if (barstate.islast) label.set_text(statsLabel, str.format("总收阳天数: %d\n平均单次收阳: %.2f", totalBullishDays, avgBullishDays))
运行回测后,在报告的「自定义指标」部分就能看到你统计的数值,完全不需要修改默认指标。
二、能否在回测过程中将数据写入文件?
TradingView的云端运行环境没有本地文件系统权限,不支持直接写入本地文件。但可以通过以下方式导出数据:
- 手动复制:将统计结果显示在图表的label或table组件中,手动复制保存
- 外部API转发:通过TradingView的alert功能,将统计数据发送到你自己搭建的简单API服务,再从服务端导出数据(需要额外的外部服务支持)
内容的提问来源于stack exchange,提问作者Paddy
相关产品推荐
相关产品推荐

