0

我无法解决 Esper 问题。我必须计算 24 小时的最大值和最小值,然后我必须检查价格是否高于这个值(这必须在多个证券上完成。)这是我正在使用的代码。但是我打赌很多性能受到打击,并且不止一次触发了一个事件。

create context
GroupSecurity
partition by 
security
from 
Tick;

context
GroupSecurity
select
currentData.last, max(groupedData.last)
from
Tick as currentData unidirectional, Tick.win:time_batch(24 hour) as groupedData
having
currentData.last > max(groupedData.last);

我该如何改进此代码?

4

1 回答 1

1

“Tick.win:time_batch(24 小时)”告诉引擎将所有可能到达的 24 小时 Tick 事件保留在内存中,并且仅在 24 小时后将它们吐出。我认为更好的方法是让引擎计算 1 分钟的最大值并在 24 小时内取 1 分钟的最大值并取最大值,即保留并从不超过 24*60 行中构建最大值,其中每个row 最多保持 1 分钟。

于 2013-09-23T23:53:16.170 回答