2017-12-14 9 views
1

X 삭감보다 큰 인출 일을 찾는 가장 관용적 인 방법은 무엇입니까? 나는 다시 몇 가지 쿼리를 통해 내 방식대로 일을하지만 그들은 보일러는 ... 어쩌면 간단한 더 우아한 대안이 될 :X Bips보다 더 많은 인하가있는 요일을 찾는 방법은 무엇입니까?

다음
q)meta quotes 
c | t f a 
----| ----- 
date| z  
sym | s  
year| j  
bid | f  
ask | f  
mid | f  

내가 할 :

bips:50; 
`jump_in_bips xdesc distinct select date,jump_in_bips from (update date:max[date],jump_in_bips:(max[mid]-min[mid])%1e-4 by `date$date from quotes where sym=accypair) where jump_in_bips>bips; 

하지만이 일을 위해 나에게 줄 것이다 그 수는 하락에 그쳤다. ,

select ... where mid=min(mid),date=X 
select ... where mid=max(mid),date=X 

max(mid)min(mid) 전에 것을 확인 ... 간단한있다 :

나는 물론 임시 테이블에 이상이 결과를 넣을 수 있습니다 여러 같은 선택을 수행 할 더 관용적 인 방법?

+1

재현 가능/수치 예제를 제공 할 수 있습니까? 귀하의 질문에 우리쪽에 너무 많은 가정이 필요합니다. – terrylynch

답변

3

내 생각에 maxs이 주요 기능으로, 실행중인 기록 최대 값을 유지 관리 할 수 ​​있으며 현재 값을 최대 값과 비교할 수 있습니다. 당신이 미드 (mids) 및 타임 스탬프 (date)의 일부 시리즈를 포함 일부 테이블 quote이있는 경우, 특정 값보다 삭감 큰 보았던 일을 반환해야 다음 쿼리 :

key select by `date$date from quote 
    where bips<({(maxs[x]-x)%1e-4};mid) fby `date$date 

람다 {(maxs[x]-x)%1e-4}입니다 각 포인트에서 이력 최대치와의 비교를 수행하고 bipsfby보다 큰지 확인하여 그룹순으로 where 절을 적용 할 수 있습니다. 날짜가 by 인 그룹으로 묶은 다음 키를 가져 오면 발생한 날짜를 반환합니다.

당신이 대신 업데이트를 사용 할 수 드로우 최대의 정보를 보존하려면 : 날짜는 따옴표에 직접 수정 별도로 업데이트됩니다

select max draw by date from 
    (update draw:(maxs[mid]-mid)%1e-4 by date from @[quote;`date;`date$]) 
    where bips<draw 

를 반복 캐스팅을 피하기 위해.

+0

우수 감사합니다! 두 번째 대안은 '길이 오류가 발생하지만 ...이 비트'@ [quotes;'date;'date $]' –

+0

테이블의 구조에 대해 확실하지 않습니다.이''[[quotes;'date;'date $]''를' 'update'date $ date from quotes''. –

2

주어진 날짜의 maxmin 사이의 차이는 늘어나거나 줄어들 수 있습니다. 경우에 따라 max 중간에 min 앞에옵니다. 또한 sym 열이 존재하기 때문에 테이블에 다른 기호가있을 수 있으며 모든 기호를 줄일 수 있다고 가정합니다.

예를 들어 주어진 날에 3 인용이 있고 sym : 1.3000 1.2960 1.3010 인 경우 두 번째와 세 번째의 차이는 50pips이지만이 값은 증가합니다.

다음 질의

주어진 임계 값

select from 
(select drawdown: {max maxs[x]-x}mid 
    by date, sym from quotes) 
where drawdown>bips*1e-4 

{max maxs[x]-x}보다 더 드로우 이상에서 날짜 및 기호를 가져 오는 데 사용 중음 이전의 최대 각 중반을 뺀 날짜에 대한 최대 삭감을 제공 할 수 있습니다.