感觉您这个不需要 parser,直接用响应式引擎就可以了
n = 1000
datetime = 2023.08.01 09:00:00.00.000 + 500 * 1..n
sym = rand(`A`B, n)
price = rand(100.0, n)
quotes=table(datetime, sym, price)
input = table(1:0, `datetime`sym`price, [TIMESTAMP, SYMBOL, DOUBLE])
output2 = table(1:0, `sym`datetime`factor1`factor2`factor3, [SYMBOL, TIMESTAMP, DOUBLE, DOUBLE, DOUBLE])
@state
def myMetricsFunc(datetime, price){
f1 = price-prev(price)
f2 = tmfirst(datetime, price, 3s)
f3 = f2-prev(f2)
return f1,f2,f3
}
engine2 = createReactiveStateEngine(name="engine2", metrics=< [datetime, myMetricsFunc(datetime, price)] >, dummyTable=input, outputTable=output2, keyColumn=`sym)
engine2.append!(quotes)