2013-09-23 33 views
0

我無法解決Esper問題。我必須計算24小時的最大值和最小值,然後我必須檢查嘀嗒價格是否高於此值(這必須在多個證券上完成)。下面是我正在使用的代碼。但我打賭很多的表現擊中並且不止一次地發起了一個事件。ESPER:查找24小時的最大值和最小值,並檢查價格是否高於前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); 

我該如何改進此代碼?

回答

1

「Tick.win:time_batch(24小時)」告訴引擎在內存中保留24小時內可能到達的Tick事件,並且僅在24小時後吐出這些事件。 我認爲一個更好的方法是讓引擎計算1分鐘的最大值,並在24小時內取1分鐘的最大值,並取最大值,即保留並在不超過24 * 60行的地方建立一個最大值每行最多保持1分鐘。