生生不息

生生不息

pine版本5转换为版本6后,交易信号变多了?

2025-07-27
pine版本5转换为版本6后,交易信号变多了?

背景

最近将v5版本的脚本,点击编辑器中的转换为v6版本后。

发现同样的回测周期,v6显示59笔,而v5无此机制仅显示37笔有效信号。

看了v6的交易列表中频繁出现Margin Call,说明策略在以下情况被中断:

连续亏损后账户资金不足 → 新开仓信号被拒绝

持仓亏损触及强平线 → 系统自动平仓并计入交易列表

原因

  1. v5默认无保证金限制

默认 margin_long 和 margin_short 参数值为 0

表现:策略可无限开仓,不检查账户资金是否充足,回测中不会触发保证金追加。

  1. v6默认启用100%保证金要求

默认 margin_long = 100(多头)和 margin_short = 100(空头)

表现:

策略开仓时需账户有充足保证金,否则:

新订单被拒绝 → 交易信号未被实际执行

持仓亏损超过保证金 → 强制平仓(Margin Call)

后果:

部分信号因保证金不足被跳过 → 实际交易数减少

亏损持仓被强平 → 额外生成平仓记录 → 回测显示交易数增加。

解决方案

在脚本首行strategy中定义多头空头不检查保证金

//@version=6
strategy(
  title        = "xxxxxx策略", 
  overlay      = true,
  default_qty_type  = strategy.percent_of_equity,
  default_qty_value = 100,
  margin_long  = 0,    // 禁用多头保证金检查
  margin_short = 0     // 禁用空头保证金检查
)

修改后,发现v6也是和v5一样的37笔有效信号了。