问题描述
我一直在获取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)。