可以通过字典+过滤函数的方法,达到过滤非交易时间段数据的效果。
假设要过滤的表 tb 中有 a、b、c 三个品种,时间列的跨度为 8:00 到 16:20,一共10万条数据。
n = 100000 time = 2024.01.02 08:00:00.000 + 300 * 0..(n-1) sym = take(`a`b`c, n) price = rand(100.0, n) tb = table(sym, time, price)
创建一个字典,以证券品种作为键,有效交易时间段的数据对列表作为值。每个品种都需要填入有效交易时间段。
tradeTimeDict = dict(`STRING, ANY)
tradeTimeDict[`a] = [09:30m:11:30m,13:00m:15:00m]
tradeTimeDict[`b] = [09:30m:12:00m,13:00m:16:00m]
tradeTimeDict[`c] = [09:30m:11:30m]
对 tb 应用自定义函数 tradeTimeFilter 就可以实现非交易时间段数据的过滤。
def tradeTimeFilter(tradeTimeDict, time, sym): between:R(time,tradeTimeDict[sym]).any() tb[tradeTimeFilter{tradeTimeDict} :E (minute(tb.time),tb.sym)]