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

如何为TradingView脚本添加可切换UTC时区的会话更新功能?

解决TradingView脚本「FXN - Asian Session Range」的UTC时区可调问题

问题根源

你之前尝试的input.session、timerange、is_open等函数,本质是基于图表当前时区判断时段,而非UTC时区。所以直接调整时区输入后,这些函数无法自动映射到UTC时段,导致会话时间不更新。

核心解决方案

要实现UTC时区可调的亚洲时段判断,需要手动将图表时间转换为UTC时间,再与自定义的UTC时段对比。具体步骤如下:

  1. 添加UTC偏移量输入项
    让用户可以输入目标时区相对于UTC的偏移值(比如东八区填8,西五区填-5):

    utcOffset = input.int("目标时区UTC偏移", defval=8, minval=-12, maxval=14, tooltip="例如:UTC+8输入8,UTC-5输入-5")
    
  2. 定义亚洲时段的UTC范围
    设定亚洲时段的UTC起始/结束时间(可做成输入项让用户调整):

    asianUtcStart = input.time("亚洲时段UTC开始时间", defval=timestamp("00:00", "UTC"))
    asianUtcEnd = input.time("亚洲时段UTC结束时间", defval=timestamp("09:00", "UTC"))
    
  3. 编写UTC时段判断函数
    将当前K线的时间转换为UTC,再判断是否落在目标UTC时段内:

    isAsianSession() =>
        // 将当前K线开盘时间转换为UTC时间戳
        currentUtcTime = time - (utcOffset * 3600 * 1000)
        // 判断是否在UTC时段内(处理跨天情况,比如时段从22:00到06:00 UTC)
        if asianUtcStart < asianUtcEnd
            currentUtcTime >= asianUtcStart and currentUtcTime < asianUtcEnd
        else
            currentUtcTime >= asianUtcStart or currentUtcTime < asianUtcEnd
    
  4. 替换原脚本的会话判断逻辑
    把原脚本中用is_open或timerange判断亚洲时段的代码,替换为调用isAsianSession()函数。

完整修改示例(核心片段)

假设原脚本中判断亚洲时段的代码是:

asianSession = input.session("0000-0900", title="Asian Session")
inAsianSession = is_open(asianSession)

替换为:

// UTC时区设置
utcOffset = input.int("目标时区UTC偏移", defval=8, minval=-12, maxval=14)
asianUtcStart = input.time("亚洲时段UTC开始", defval=timestamp("00:00", "UTC"))
asianUtcEnd = input.time("亚洲时段UTC结束", defval=timestamp("09:00", "UTC"))

// 自定义UTC时段判断函数
isAsianSession() =>
    currentUtcTime = time - (utcOffset * 3600 * 1000)
    asianUtcStart < asianUtcEnd ? currentUtcTime >= asianUtcStart and currentUtcTime < asianUtcEnd : currentUtcTime >= asianUtcStart or currentUtcTime < asianUtcEnd

// 当前是否在亚洲时段
inAsianSession = isAsianSession()

关键注意事项

  • time变量在Pine Script中是当前K线的开盘时间戳(基于图表时区),减去utcOffset*3600*1000(偏移秒数转毫秒)即可得到UTC时间戳。
  • 处理跨天时段(比如UTC 22:00到次日06:00)时,要通过asianUtcStart < asianUtcEnd的分支判断,避免逻辑错误。
  • 如果需要让用户直接输入本地时段(而非UTC时段),可以在代码中把用户输入的本地时间转换为UTC,再进行判断。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 18:22:23