You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TradingView策略测试出现同时买卖订单异常求助

TradingView策略平仓伴随反向开仓问题解决

问题核心原因

  1. 默认多空持仓规则:TradingView策略默认允许同时持有多空仓位,当平仓信号触发时,若反向开仓条件也满足,会同时执行平仓+反向开仓操作。
  2. 订单命名冲突:所有平仓订单都用了"Exit"这个重复名称,导致策略逻辑识别混乱,无法区分多单/空单的平仓指令。
  3. 开仓参数误用:strategy.entry中的stop和limit是设置挂单开仓条件(比如跌到指定价开多),而非开仓后的止损止盈,这会干扰正常开平仓逻辑。
  4. 无持仓状态校验:独立的if(longCondition)和if(shortCondition)判断未结合当前持仓状态,同一K线可能同时触发多空信号。

修正方案

1. 限制单向持仓

在策略开头添加配置,强制策略仅持有单一方向仓位,平仓后再开反向仓:

//@version=5
strategy("修正后的策略", overlay=true)
// 限制仅允许单向持仓,避免多空同时存在
strategy.risk.allow_entry_in = strategy.only_one_direction

2. 修正开平仓核心逻辑

  • 移除strategy.entry中的stop和limit参数(市价开仓场景),仅在strategy.exit中设置止损止盈。
  • 给平仓订单设置唯一名称,区分多单/空单。
  • 加入持仓状态判断,确保开仓前无反向仓位。

修正后的核心代码:

// Entry and exit logic
if (longCondition)
    // 仅当前无多仓/空仓时开多
    if strategy.position_size <= 0
        strategy.entry("Buy", strategy.long, qty=accountSize / close)
        // 多单平仓订单单独命名
        strategy.exit("Exit Long", "Buy", stop=stopLossLong, limit=takeProfitLong)

if (shortCondition)
    // 仅当前无空仓/多仓时开空
    if strategy.position_size >= 0
        strategy.entry("Sell", strategy.short, qty=accountSize / close)
        // 空单平仓订单单独命名
        strategy.exit("Exit Short", "Sell", stop=stopLossShort, limit=takeProfitShort)

// Plot buy and sell signals
plotshape(series=longCondition, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small)
plotshape(series=shortCondition, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small)

额外说明

如果你的需求是挂单开仓(比如突破某个价位开多),那strategy.entry中的stop/limit是合理的,但此时需要确保挂单触发时反向仓位已平仓,结合strategy.risk.allow_entry_in = strategy.only_one_direction即可避免同时开仓问题。

内容的提问来源于stack exchange,提问作者Arjun

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 22:52:47