Pinescript计算DAX指数9点收盘缺口遇时间帧不支持问题求助
DAX缺口计算报错“时间帧不支持”的解决方法
问题原因
你原代码的核心问题在于:
- 直接通过
request.security获取30分钟周期的close[0],会取当前时间所在的30分钟K线收盘价,而非固定9:30的那根K线,跨周期请求时容易触发时间帧兼容问题。 - 未指定正确的时区,DAX交易时间为欧洲中部时间(CET/CEST),时区不匹配会导致时间筛选失效,进而触发报错。
- 部分平台对
INDEX:DAX的30分钟数据访问有限制,改用通用代号DE40可能解决权限问题。
修正后的代码
//@version=5 indicator("DAX Gap计算器", overlay=false, timezone=time_zone.central_europe) // 获取前一日收盘价 prev_day_close = request.security("INDEX:DAX", "D", close[1]) // 获取当日9:30的30分钟K线收盘价 nine_thirty_close = request.security("INDEX:DAX", "30", time == timestamp(year, month, dayofmonth, 9, 30) ? close : na) // 计算缺口大小(仅当9:30收盘价有效时输出) gap_size = not na(nine_thirty_close) ? nine_thirty_close - prev_day_close : na // 可视化缺口 plot(gap_size, color=gap_size > 0 ? color.new(color.green, 0) : color.new(color.red, 0), title="缺口大小") label.new(bar_index, high, str.tostring(gap_size, "%.2f"), color=gap_size > 0 ? color.green : color.red, textcolor=color.white)
关键修正点说明
- 时区设置:通过
timezone=time_zone.central_europe指定欧洲中部时间,确保9:30的时间匹配DAX实际交易时段。 - 精准时间筛选:在30分钟周期的请求中,通过
time == timestamp(...)精准定位当日9:30的K线,仅返回该K线的收盘价,避免跨周期数据冲突。 - 空值处理:用
not na(...)判断9:30收盘价是否有效,避免未到交易时间时出现计算错误。
额外排查建议
- 如果仍报错,将标的代码
INDEX:DAX替换为DE40,这是多数交易平台对DAX的通用代号,数据兼容性更好。 - 确保使用Pinescript v5版本,v5的
request.security函数稳定性和兼容性优于旧版本。 - 检查平台是否提供DAX的30分钟历史数据访问权限,部分免费平台可能限制高频数据请求。
内容的提问来源于stack exchange,提问作者Michael Mueller
相关产品推荐
相关产品推荐

