Google表格GOOGLEFINANCE获取区间最高价滞后1天问题求解
GOOGLEFINANCE区间最高价滞后1天问题修复
问题根因
- GOOGLEFINANCE拉取历史区间行情时,对非美时区交易所(如NSE印度国家证券交易所)的标的,会默认按美东时区判定交易日边界,直接传入目标起始日期时,会因时区偏差漏取起始日当日的历史数据,从起始日次日开始返回行情序列。
- 原公式未对这个时区偏移做补正,因此会出现返回次日最高价、遗漏起始日更高价格的问题,和区域设置、数据更新延迟无关。
复现参考:标的NSE:IOC,传入起始日2022年6月9日时,原公式返回6月10日最高价,未统计6月9日当日更高的价格。
修复方案
直接替换原有公式为以下版本即可,原有实时价拼接、报错返回空值的逻辑全部保留:
=IFERROR(MAX(INDEX({IFNA(GOOGLEFINANCE("NSE:"&$E4, "high", $C4-1, TODAY()), {"Date", "High"}); NOW(), GOOGLEFINANCE("NSE:"&$E4, "high")},0 , 2)),"")
改动说明
- 仅将历史行情拉取的起始参数从
$C4调整为$C4-1,向前多取1个自然日的行情数据,即可覆盖时区判定偏差,把目标起始日当日的最高价纳入统计范围。 - 该调整不会引入无效数据:GOOGLEFINANCE会自动跳过非交易日(周末、节假日),不会返回空值或错误值影响MAX计算结果,即便是起始日为周一/节后首个交易日也能正常统计。
内容的提问来源于stack exchange,提问作者Rinku
相关产品推荐
相关产品推荐

