如何在TradingView策略中加入手续费计算,实现盈利覆盖成本后触发卖出警报
TradingView 卖出警报过滤方案
核心逻辑
你可以通过修改策略的Pine Script代码,新增手续费成本计算规则,将「收益覆盖双向手续费且盈利」作为必要条件,和原有策略的卖出参数做与运算,最终只有同时满足所有条件才会触发卖出信号和关联警报。
具体实现步骤
- 第一步:定义手续费参数,可根据你实际交易的品类固定,也可以做动态判断
// 现货交易佣金0.15%,合约交易佣金0.054% spot_fee_rate = 0.0015 contract_fee_rate = 0.00054 // 可直接根据当前交易品类固定费率,比如做现货就直接写 trade_fee = spot_fee_rate trade_fee = strategy.market_type == "spot" ? spot_fee_rate : contract_fee_rate
- 第二步:计算覆盖双向手续费的保本价,开仓、平仓各收取一次手续费
// 持仓开仓均价 entry_avg_price = strategy.entry_price // 多头持仓保本价 long_break_even = entry_avg_price * (1 + trade_fee * 2) // 空头持仓保本价(如果你的策略支持做空) short_break_even = entry_avg_price * (1 - trade_fee * 2)
- 第三步:组合最终卖出触发条件
// 替换为你原本的策略卖出触发逻辑,比如RSI超卖、均线死叉等原有规则 original_sell_signal = ta.rsi(close, 14) > 75 or ta.cross(ta.sma(close,5), ta.sma(close,20)) // 盈利且覆盖手续费的条件,根据持仓方向调整 profit_valid = strategy.position_size > 0 ? close >= long_break_even : close <= short_break_even // 最终卖出触发条件 final_sell_signal = original_sell_signal and profit_valid
- 第四步:绑定警报
你可以直接在代码中通过alertcondition(final_sell_signal, title="有效卖出信号", message="满足策略条件且收益覆盖手续费,可卖出")绑定警报,也可以策略回测验证通过后,在TradingView界面手动添加警报,触发条件选择脚本输出的final_sell_signal即可。
注意事项
- 如果你的BNB手续费折扣有调整,需要同步修改代码里的费率参数,避免保本价计算偏差
- 可以把该逻辑加入策略后先跑5分钟周期的历史回测,确认已经过滤掉所有利润不足以覆盖手续费的无效交易
内容的提问来源于stack exchange,提问作者Nick Betts
相关产品推荐
相关产品推荐

