如何修改Pine Script代码实现百分比固定的TP与SL
解决Pine Script百分比止盈止损问题
要实现基于入场价的百分比止盈止损,无需保留原金额转点数的逻辑,直接通过入场价+百分比偏移计算目标价格,再用strategy.exit()的limit(止盈价)和stop(止损价)参数设置即可,具体修改如下:
修改后的完整代码
//@version=5 strategy("百分比止盈止损策略", overlay=true) // 输入百分比参数 tp_pct = input.float(5.0, title="止盈百分比(%)", minval=0.1) / 100 sl_pct = input.float(5.0, title="止损百分比(%)", minval=0.1) / 100 // 模拟信号(可替换为你实际的longsignal/shortsignal逻辑) longsignal = ta.crossover(ta.sma(close,5), ta.sma(close,20)) shortsignal = ta.crossunder(ta.sma(close,5), ta.sma(close,20)) // 开仓逻辑 if (longsignal) strategy.entry("多头", strategy.long) if (shortsignal) strategy.entry("空头", strategy.short) // 记录开仓入场价 var float entry_price = na if (strategy.position_size != 0 and strategy.position_size != strategy.position_size[1]) entry_price := strategy.position_avg_price // 分方向计算止盈止损价格 long_tp = entry_price * (1 + tp_pct) long_sl = entry_price * (1 - sl_pct) short_tp = entry_price * (1 - tp_pct) short_sl = entry_price * (1 + sl_pct) // 出场设置 strategy.exit("出场", limit = strategy.position_size > 0 ? long_tp : short_tp, stop = strategy.position_size > 0 ? long_sl : short_sl )
关键修改说明
- 参数替换:将原固定金额输入改为百分比输入,除以100转换为小数便于计算
- 入场价记录:用
var变量记录每次开仓的平均入场价,确保基准价格准确 - 分方向计算:根据当前仓位的多空属性,分别计算对应的止盈止损价格
- 参数切换:放弃
profit/loss(点数偏移),改用limit/stop(直接指定价格),适配百分比场景
内容的提问来源于stack exchange,提问作者user3500484
相关产品推荐
相关产品推荐

