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

如何在Pine Script中编写持仓特定时长后平仓的策略?

Pine Script实现持仓固定时长自动平仓策略

要实现开仓后固定时长(比如5分钟)自动平仓的策略,核心是跟踪每笔订单的入场时间,并在时间差达标时触发平仓指令。以下是针对你提供的代码的完整修改方案:

完整实现代码

//@version=5
strategy("固定持仓时长策略", overlay=true, default_qty_type=strategy.cash, default_qty_value=10000, commission_type=strategy.commission.percent, commission_value=0.1)

// 示例开仓条件(可根据你的策略替换)
long_condition = ta.crossover(ta.sma(close, 50), ta.sma(close, 200))
short_condition = ta.crossunder(ta.sma(close, 50), ta.sma(close, 200))

// 开仓指令
if (long_condition)
    strategy.entry("Long", strategy.long)
if (short_condition)
    strategy.entry("Short", strategy.short)

// 平仓条件:开仓后满5分钟自动平仓
// 处理多单平仓
if (strategy.opentrades.size > 0)
    for i = 0 to strategy.opentrades.size - 1
        if (strategy.opentrades.entry_id(i) == "Long")
            entry_time = strategy.opentrades.entry_time(i)
            if (time - entry_time >= 5 * 60 * 1000) // 5分钟转换为毫秒
                strategy.close("Long")

// 处理空单平仓
if (strategy.opentrades.size > 0)
    for i = 0 to strategy.opentrades.size - 1
        if (strategy.opentrades.entry_id(i) == "Short")
            entry_time = strategy.opentrades.entry_time(i)
            if (time - entry_time >= 5 * 60 * 1000) // 5分钟转换为毫秒
                strategy.close("Short")

关键逻辑说明

  • 跟踪入场时间:通过strategy.opentrades.entry_time(i)获取第i笔持仓订单的入场时间(毫秒级时间戳)。
  • 时间差计算:用当前时间time减去入场时间,判断是否达到5分钟(转换为5*60*1000毫秒)。
  • 订单匹配:通过strategy.opentrades.entry_id(i)匹配对应的多单/空单ID,确保只平仓目标订单。

简化写法(针对单一持仓场景)

如果你的策略同一时间只会持有多单或空单中的一种,可简化平仓逻辑:

// 多单平仓:持仓且开仓时间超过5分钟
strategy.close("Long", when = strategy.position_size > 0 and (time - strategy.opentrades.entry_time(0) >= 5*60*1000))
// 空单平仓:持仓且开仓时间超过5分钟
strategy.close("Short", when = strategy.position_size < 0 and (time - strategy.opentrades.entry_time(0) >= 5*60*1000))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 11:40:44