根据 Google 工作表中给定的 OHLC 数据计算不同的时间范围(查询字符串?)
Calculating a different timeframe from given OHLC Data in Google Sheets ( Query String ?)
我一直在获取 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 小时的时间范围。
我的 'pseudo query string code' 如下所示:
=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
感谢您的宝贵时间!
第一部分“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))))
对于以下公式中两行的最大值:
=ARRAYFORMULA(
FILTER(
SORT(
FILTER($C:$C,$C:$C<>""),
QUOTIENT(SEQUENCE(COUNT($A:$A),1,1,1)+1,2),TRUE,
FILTER($C:$C,$C:$C<>""),FALSE),
ISODD(SEQUENCE(COUNT($A:$A),1,1,1))))
我们在这里创建索引 1,1,2,2,3,3... 并按值降序排序,每个索引的第一个值是两行的最大值。
对于每两行的 MIN,几乎使用相同的公式,不同之处在于 SORT 选项 TRUE FILTER($D$1:$D,$D$1:$D<>""),TRUE) for MIN。
我一直在获取 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 小时的时间范围。 我的 'pseudo query string code' 如下所示:
=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
感谢您的宝贵时间!
第一部分“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))))
对于以下公式中两行的最大值:
=ARRAYFORMULA(
FILTER(
SORT(
FILTER($C:$C,$C:$C<>""),
QUOTIENT(SEQUENCE(COUNT($A:$A),1,1,1)+1,2),TRUE,
FILTER($C:$C,$C:$C<>""),FALSE),
ISODD(SEQUENCE(COUNT($A:$A),1,1,1))))
我们在这里创建索引 1,1,2,2,3,3... 并按值降序排序,每个索引的第一个值是两行的最大值。
对于每两行的 MIN,几乎使用相同的公式,不同之处在于 SORT 选项 TRUE FILTER($D$1:$D,$D$1:$D<>""),TRUE) for MIN。