基于Google Finance单查询获取20/50/200日均线的性能优化需求
优化Google Finance均线查询性能:单请求获取多周期均线
当前你通过Google Finance获取移动均线时,每条均线单独请求一次,跟踪200个标的时出现性能问题,想要单条查询同时输出20日、50日、200日均线并按三列展示。
解决方案:单次请求+多周期计算
核心思路是只调用一次GOOGLEFINANCE获取最长周期(200天)的收盘价数据,再从返回结果中分别截取对应周期的收盘价计算均线,大幅减少API请求次数(从600次降到200次)。
具体公式
=LET( price_data, QUERY(GOOGLEFINANCE($H3, "price", TODAY()-250, TODAY()), "SELECT Col2 ORDER BY Col1 DESC"), { "MMA20", "MMA50", "MMA200"; AVERAGE(INDEX(price_data, 1, 1):INDEX(price_data, 20, 1)), AVERAGE(INDEX(price_data, 1, 1):INDEX(price_data, 50, 1)), AVERAGE(INDEX(price_data, 1, 1):INDEX(price_data, 200, 1)) } )
公式说明
LET函数:将单次GOOGLEFINANCE请求的收盘价数据(按日期倒序排序)存入price_data变量,避免重复调用API- 表头行:输出"MMA20"、"MMA50"、"MMA200"作为列标题
- 均线计算:分别截取
price_data中前20、50、200条数据计算平均值,对应20日、50日、200日均线
注意事项
- 时间范围设置为
TODAY()-250是为了覆盖周末、节假日等无数据时段,确保能获取到足够的200个交易日数据,可根据实际情况调整 - 批量处理200个标的时,可将公式改为数组形式或直接下拉应用,每个标的仅触发一次GOOGLEFINANCE请求
内容的提问来源于stack exchange,提问作者B0001021
相关产品推荐
相关产品推荐

