0

我不断获取 OHLC 数据并尝试将其转换为不同的时间范围,同时保持动态。虽然手动计算它不是问题,但它不会在更新数据时保持动态。我试图查询它,但我对查询字符串比较陌生,无法得到想要的结果。如果有人有这方面的经验,我将不胜感激。

这是给定数据的片段(已编辑):

//  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

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

=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)

结果应如下所示:

//Timestamp Open2h High2h Low2h Close2h

1598500800  384.22  385.63  380.40  381.45
1598508000  381.45  386.48  381.45  385.72
1598515200  385.72  387.32  383.00  386.99
1598522400  386.99  387.74  381.80  382.07
1598529600  382.07  396.85  381.04  388.75

谢谢你的时间!

4

1 回答 1

0

测试表

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

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

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

最后一个子句“每隔一行,偏移量为 1(E3)”也是如此,但有偶数

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

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

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

我们在其中创建索引 1,1,2,2,3,3... 并按值降序排序,每个索引取第一个值,即两行的 MAX 值。

对于每两行的 MIN,使用几乎相同的公式,不同之处在于 MIN 的 SORT 选项 TRUE FILTER($D$1:$D,$D$1:$D<>""),TRUE)。

于 2020-10-21T15:09:53.933 回答