如何在TradingView策略中统计多头交易及多空盈利交易数量?
在TradingView策略中统计多空细分交易数据
TradingView确实没有直接提供strategy.longtrades、strategy.shorttrades这类细分多空交易总数的内置函数,也没有直接返回多头/空头盈利交易数的函数,但可以通过自定义变量结合交易信号的触发逻辑来手动统计这些数据。
实现思路
通过定义全局变量,在每次触发开仓、平仓信号时,根据交易方向(多/空)以及平仓时的盈亏状态,更新对应的统计变量。
代码示例
//@version=5 strategy("多空交易统计示例", overlay=true, default_qty_type=strategy.cash, default_qty_value=10000, commission_type=strategy.commission.percent, commission_value=0.1) // 初始化统计变量 var int total_long_trades = 0 var int total_short_trades = 0 var int long_win_trades = 0 var int short_win_trades = 0 // 定义简单的交易信号(示例用,可替换为你的策略逻辑) long_condition = ta.crossover(ta.sma(close, 50), ta.sma(close, 200)) short_condition = ta.crossunder(ta.sma(close, 50), ta.sma(close, 200)) // 开仓逻辑:记录交易方向 if (long_condition) strategy.entry("Long", strategy.long) total_long_trades += 1 // 多头交易数+1 if (short_condition) strategy.entry("Short", strategy.short) total_short_trades += 1 // 空头交易数+1 // 平仓逻辑:判断盈亏并更新盈利交易数 if (strategy.position_size > 0 and strategy.close) // 多头平仓,判断是否盈利 if (strategy.close > strategy.position_avg_price) long_win_trades += 1 if (strategy.position_size < 0 and strategy.close) // 空头平仓,判断是否盈利(空头盈利是平仓价低于开仓价) if (strategy.close < strategy.position_avg_price) short_win_trades += 1 // 输出统计结果 plotshape(total_long_trades, title="总多头交易数", location=location.bottom, color=color.green, style=shape.labelup, text="总多头: " + str.tostring(total_long_trades)) plotshape(long_win_trades, title="多头盈利交易数", location=location.bottom, color=color.lime, style=shape.labelup, text="多头盈利: " + str.tostring(long_win_trades)) plotshape(total_short_trades, title="总空头交易数", location=location.top, color=color.red, style=shape.labeldown, text="总空头: " + str.tostring(total_short_trades)) plotshape(short_win_trades, title="空头盈利交易数", location=location.top, color=color.orange, style=shape.labeldown, text="空头盈利: " + str.tostring(short_win_trades))
关键说明
- 使用
var关键字定义变量,确保变量在图表刷新时不会被重置,保持统计的持续性。 - 开仓时根据交易方向累加对应总交易数。
- 平仓时通过比较平仓价和持仓平均价,判断该笔交易是否盈利,对应累加盈利交易数(注意空头交易的盈利逻辑是平仓价低于开仓价)。
- 可以通过
plotshape或label将统计结果可视化展示在图表上,也可以在策略测试报告的"数据窗口"中查看这些变量的最终值。
内容的提问来源于stack exchange,提问作者Lovekesh Azad
相关产品推荐
相关产品推荐

