如何将Pine Script自定义策略计算值添加至Performance Summary并导出CSV
一、将自定义多空统计数据添加到Performance Summary
要把「做多/做空信号后首次盈利所需天数」这类自定义统计加入策略的Performance Summary,直接用Pine Script内置的strategy.custom()函数即可,它专门用来注册自定义性能指标。
实现步骤:
- 确保你已经计算好多单(
LongAvgFirstDay)和空单(ShortAvgFirstDay)的平均首次盈利天数数值 - 在策略代码中添加以下注册逻辑,分别绑定多空统计数据:
// 注册多单自定义统计到Performance Summary strategy.custom( title = "做多信号后首次盈利所需平均天数", value = LongAvgFirstDay, shorttitle = "多单盈利天数", overlay = false ) // 注册空单自定义统计到Performance Summary strategy.custom( title = "做空信号后首次盈利所需平均天数", value = ShortAvgFirstDay, shorttitle = "空单盈利天数", overlay = false )
- 运行策略后,打开策略测试器的「Performance Summary」标签,就能在自定义指标区域看到你添加的统计项。
二、导出含自定义数据的Transaction List为CSV
TradingView原生Transaction List导出的字段是固定的,但可以通过订单备注或自定义表格两种方式携带自定义数据,再导出为CSV:
方法1:通过订单Comment字段携带数据(直接导出CSV)
在触发交易时,把当前交易的首次盈利天数(或其他自定义数据)写入订单的comment参数,这样导出的Transaction List CSV会包含该字段:
// 假设longEntry是你的做多信号触发条件,currentLongProfitDay是当前这笔多单的首次盈利天数 if (longEntry) strategy.entry("Long", strategy.long, comment = "首次盈利天数:" + str.tostring(currentLongProfitDay)) // 做空同理 if (shortEntry) strategy.entry("Short", strategy.short, comment = "首次盈利天数:" + str.tostring(currentShortProfitDay))
导出步骤:
- 运行策略后,打开策略测试器的「List of Trades」标签页
- 点击右上角的CSV导出图标(下载样式),导出的CSV文件中会有「Comment」列,里面就是你添加的自定义数据。
方法2:用Table组件展示完整自定义数据后复制导出
如果需要更结构化的自定义交易数据(比如每笔交易的方向、首次盈利天数等),可以用table组件生成表格,再手动复制保存为CSV:
// 初始化存储交易数据的数组 var float[] tradeProfitDays = array.new_float() var string[] tradeDirection = array.new_string() // 当交易平仓时,记录对应数据(需提前计算好currentProfitDay) if (strategy.closedtrades > strategy.closedtrades[1]) currentTradeIdx = strategy.closedtrades - 1 currentProfitDay = // 这里填入你计算当前平仓交易首次盈利天数的逻辑 array.push(tradeProfitDays, currentProfitDay) array.push(tradeDirection, strategy.closedtrades.position_size(currentTradeIdx) > 0 ? "做多" : "做空") // 在最后一根K线生成表格 if (barstate.islast) var table tradeTable = table.new(position.bottom_right, 2, array.size(tradeProfitDays)+1) // 写入表头 table.cell(tradeTable, 0, 0, "交易方向") table.cell(tradeTable, 1, 0, "首次盈利天数") // 写入每笔交易数据 for i = 0 to array.size(tradeProfitDays)-1 table.cell(tradeTable, 0, i+1, array.get(tradeDirection, i)) table.cell(tradeTable, 1, i+1, str.tostring(array.get(tradeProfitDays, i)))
操作步骤:
- 运行策略后,图表右下角会生成包含所有交易自定义数据的表格
- 选中表格内的所有内容,复制到Excel或文本编辑器,再保存为CSV格式即可。
内容的提问来源于stack exchange,提问作者jacky
相关产品推荐
相关产品推荐

