Pine Script V4策略代码起止日期失效问题求助
Pine Script V4 时间范围参数失效问题修复
你的策略代码中startDate和endDate参数未生效,时间范围始终显示为当前至2023年5月初,无法覆盖设定的2020-01-01至2023-05-31区间,问题出在以下几点,对应修复方案如下:
核心问题与修复
时区不匹配
你用timestamp()生成的是UTC时区时间戳,但代码中判断用的time变量默认是图表本地时区,两者偏差会导致时间范围判断失效。- 修复:改用
time_utc替代time,确保时区统一。
- 修复:改用
平仓条件未限制时间范围
现有平仓逻辑strategy.close未加入时间范围判断,即使超出设定区间,平仓操作仍会执行,导致视觉上时间范围异常。- 修复:给平仓条件也加上时间范围限制。
时间周期注释与代码不一致
注释标注的是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
相关产品推荐
相关产品推荐

