根据Google表格中的给定OHLC数据计算不同的时间范围查询字符串?

问题描述

我一直在获取OHLC数据,并尝试将其转换为不同的时间范围,同时保持动态。尽管手动计算不是问题,但通过更新数据不会保持这种动态状态。我已经尝试过查询它了,但是查询字符串相对较新,无法达到期望的结果。如果有人有经验,我会很感激。

以下是给定数据的摘要(已编辑):

ctx.saved_tensors

假设我们正在尝试将数据转换为2小时的时间范围。 我的“伪查询字符串代码”如下所示:

//  Timestamp   Open1h  High1h  Low1h   Close1h
//  A           B       C       D       E  

1598500800  384.22  385.63  382.88  382.88
1598504400  382.88  383.79  380.40  381.45
1598508000  381.45  386.05  381.45  385.14
1598511600  385.14  386.48  384.31  385.72
1598515200  385.72  385.79  383.49  383.82
1598518800  383.82  387.32  383.00  386.99
1598522400  386.99  387.74  383.43  383.99
1598526000  383.99  385.31  381.80  382.07
1598529600  382.07  386.47  381.04  385.51
1598533200  385.51  396.85  384.99  388.75

结果应如下所示:

=QUERY(A1:B,"Every second row of A and B (A2:B2)",0)

=QUERY(A1:C,"Maximum of every two rows (C2:C3)",0)

=QUERY(A1:D,"Minimum of every two rows (D2:D3)",0)

=QUERY(A1:E,"Every second row with an offset of 1(E3)",0)

感谢您的时间!

解决方法

请参见TestSheet

使用以下公式返回第一部分“ A和B的第二行”。

=ARRAYFORMULA(FILTER(FILTER(A1:B,A1:A<>""),ISODD(SEQUENCE(COUNT(A1:A),1,1))))

我们创建序号索引并过滤赔率。

最后一个子句“偏移量为1(E3)的第二行”也一样,但偶数为

=ARRAYFORMULA(FILTER(FILTER(E1:E,E1:E<>""),ISEVEN(SEQUENCE(COUNT(A1:A),1))))

对于以下公式的两行的MAX值:

=ARRAYFORMULA(
 FILTER(
 SORT(
  FILTER($C$1:$C,$C$1:$C<>""),QUOTIENT(SEQUENCE(COUNT($A$1:$A),1)+1,2),TRUE,FILTER($C$1:$C,FALSE),ISODD(SEQUENCE(COUNT($A$1:$A),1))))

我们在创建1,2,3,3 ...的索引时,SORT的值降序为每个索引取第一个值,即两个行的MAX值。

每两行的MIN使用几乎相同的公式,而MIN的SORT选项为TRUE FILTER($ D $ 1:$ D,$ D $ 1:$ D “”),TRUE)。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...