2013-09-23 7 views
0

Esper 문제를 해결할 수 없습니다. 나는 Max와 Min을 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(24hour)"엔진은 도착할 수있는 Tick 이벤트가 24 시간 동안 모두 메모리에 유지되도록 지시하고 24 시간 후에 만 ​​뱉어냅니다. 더 나은 접근법은 엔진이 1 분 최대 값을 말하고 24 시간 동안 1 분 최대 값을 취하여 최대 값을 취하는 것입니다. 즉, 더 이상 24 * 60 행에서 최대 값을 유지하고 빌드하십시오. 각 행은 최대 1 분을 유지합니다.