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

PineScript如何实现每日10:59:59精准下单的问题咨询

Pine Script 每日固定时间唯一触发下单实现方案

问题根因

原有代码使用>=判断时间,只要过了10:59:59之后的所有K线都会满足时间条件,且没有做当日触发标记限制,所以会出现日内多次触发的问题。

修正后完整代码

// 时间参数配置
targetYear      = input(0,  "Year (use 0 for all)",    minval = 0)
targetMonth     = input(0,  "Month (use 0 for all)",   minval = 0, maxval = 12)
targetDay       = input(0,  "Day (use 0 for all)",     minval = 0, maxval = 31)
targetHour      = input(10, "Hour (use 24 for all)",   minval = 0, maxval = 24)
targetMinute    = input(59, "Minute (use 60 for all)", minval = 0, maxval = 60)
targetSecond    = input(59, "Second (use 60 for all)", minval = 0, maxval = 60)

// 当日触发标记,var声明变量会保留历史值,每天开盘时重置为false
var triggeredToday = false
if ta.change(dayofmonth)
    triggeredToday := false

// 精准匹配目标时间,未开启通配的参数必须完全相等
timeMatched = 
  (targetYear == 0 or year == targetYear) and
  (targetMonth == 0 or month == targetMonth) and
  (targetDay == 0 or dayofmonth == targetDay) and
  (targetHour == 24 or hour == targetHour) and
  (targetMinute == 60 or minute == targetMinute) and
  (targetSecond == 60 or second == targetSecond)

// 触发条件:时间匹配 + 当日未触发过
if timeMatched and not triggeredToday
    if strategy.position_size == 0
        // 此处写下单逻辑
        strategy.entry("多单", strategy.long)
    // 标记当日已触发,避免重复执行
    triggeredToday := true

核心改动说明

  • 把原有的时间>=判断改为==精准匹配,只有刚好到达目标时间点才满足条件
  • 新增triggeredToday标记变量,每日开盘自动重置,触发一次后置为真,保证一天只会执行一次下单逻辑
  • 兼容原有通配逻辑:年份填0匹配所有年份,小时填24匹配所有小时,以此类推

注意事项

  • 时区默认使用交易所时区,如果需要使用UTC时间,把hour/minute/second替换为hour(timezone.UTC)/minute(timezone.UTC)/second(timezone.UTC)即可
  • 如果使用大于1秒的K线(比如1分钟K线)回测/实盘,需要把秒级判断去掉,改为匹配10:59分的K线即可,因为1分钟K线不会返回单独的秒级时间戳
  • 回测时建议开启秒级数据回放,保证时间触发的精准度

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 07:57:03