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

Pine Script V4策略代码起止日期失效问题求助

Pine Script V4 时间范围参数失效问题修复

你的策略代码中startDate和endDate参数未生效,时间范围始终显示为当前至2023年5月初,无法覆盖设定的2020-01-01至2023-05-31区间,问题出在以下几点,对应修复方案如下:

核心问题与修复

  1. 时区不匹配
    你用timestamp()生成的是UTC时区时间戳,但代码中判断用的time变量默认是图表本地时区,两者偏差会导致时间范围判断失效。

    • 修复:改用time_utc替代time,确保时区统一。
  2. 平仓条件未限制时间范围
    现有平仓逻辑strategy.close未加入时间范围判断,即使超出设定区间,平仓操作仍会执行,导致视觉上时间范围异常。

    • 修复:给平仓条件也加上时间范围限制。
  3. 时间周期注释与代码不一致
    注释标注的是5m和1m周期,但代码中security调用用的是"60"(1小时)和"30"(30分钟),虽不影响时间范围,但建议修正保持逻辑一致。

修复后的完整代码

//@version=4
strategy("LongSell", overlay=true)

startDate = timestamp("2020-01-01T00:00:00Z")
endDate = timestamp("2023-05-31T23:59:59Z")

// 修正时间周期:按需求选择,示例为5分钟和1分钟
rsiValue5m = security(syminfo.tickerid, "5", rsi(close, 1))
rsiValue1m = security(syminfo.tickerid, "1", rsi(close, 1))

// 统一时间范围判断,用time_utc匹配UTC时间戳
inTimeRange = time_utc >= startDate and time_utc <= endDate

buySignal = rsiValue5m > 80 and rsiValue1m > 80 and inTimeRange
sellSignal = rsiValue5m < 80 and rsiValue1m < 80 and inTimeRange

strategy.entry("Compra", strategy.long, when=buySignal)
strategy.entry("Venta", strategy.short, when=sellSignal)

// 平仓操作加入时间范围限制
strategy.close("Compra", when=rsiValue1m < 80 and inTimeRange)
strategy.close("Venta", when=rsiValue1m > 80 and inTimeRange)

关键说明

  • 新增inTimeRange变量统一管理时间判断,提升代码可读性;
  • time_utc与timestamp()的UTC时区完全匹配,彻底解决时间范围偏差问题;
  • 平仓逻辑加入时间限制后,策略只会在设定区间内执行完整的开平仓操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 10:32:20