如何在Pine策略中按pips设置TP止盈SL止损 并按权益比例开仓
Pine 策略需求实现方案
上述两个需求均可以通过 Pine Script 原生语法实现,具体操作如下:
1. 40 pips 止盈止损设置
Pine 内置了品种最小报价单位的获取接口,只需要做一次通用换算即可适配所有品种的点数计算:
- 首先定义点数换算规则,大部分交易品种1个pip对应10个最小报价单位,代码如下:
// 计算单pip对应价格波动,自动适配所有交易品种 pip_value = syminfo.mintick * 10 // 40 pips对应的价格偏移量 tp_sl_offset = 40 * pip_value
- 开仓时绑定止盈止损即可,示例代码:
// 做多场景 if (你的做多触发条件) strategy.entry("多单进场", strategy.long) // 止盈为进场价往上偏移40pips,止损为进场价往下偏移40pips strategy.exit("多单离场", "多单进场", limit=close + tp_sl_offset, stop=close - tp_sl_offset) // 做空场景 if (你的做空触发条件) strategy.entry("空单进场", strategy.short) // 止盈为进场价往下偏移40pips,止损为进场价往上偏移40pips strategy.exit("空单离场", "空单进场", limit=close - tp_sl_offset, stop=close + tp_sl_offset)
以上代码无需额外调整即可适配日元类报价精度特殊的品种。
2. 初始资金与仓位设置
- 初始资金直接在策略初始化参数中指定即可,在代码开头的
strategy声明中添加对应参数:
strategy( title="你的策略名称", initial_capital=1000, // 初始账户资金设置为1000美元 default_qty_type=strategy.cash, overlay=true )
- 按当前账户90%权益开仓的逻辑,只需要在开仓前动态计算仓位即可:
// 动态计算开仓数量:当前账户权益的90%除以当前价格 position_size = strategy.equity * 0.9 / close // 开仓时指定对应仓位即可,替换原有开仓逻辑即可 if (你的做多触发条件) strategy.entry("多单进场", strategy.long, qty=position_size) if (你的做空触发条件) strategy.entry("空单进场", strategy.short, qty=position_size)
如果是杠杆保证金交易,可将default_qty_type调整为strategy.margin,再乘以对应杠杆比例即可适配保证金计算规则。
内容的提问来源于stack exchange,提问作者Parabolic1
相关产品推荐
相关产品推荐

