How to convert tic data to 5 minute OHLC?

I am learning KDB + and loading tic data into table W as shown below. My question is: how to transfer data in 5 (or n) minutes of OHLCVA?

"Stk_ID","Date","Time","Price","Chg","Vol","Amt","Ty" 300032,2011-03-03,09:51:40,20.40,0.00,10.0,20400.0,S 300032,2011-03-03,09:51:30,20.40,-0.01,9.0,18360.0,S 300032,2011-03-03,09:51:00,20.41,0.01,2.0,4082.0,B 300032,2011-03-03,09:51:00,20.40,-0.01,115.0,234599.0,S 300032,2011-03-03,09:50:45,20.41,0.00,10.0,20410.0,S 300032,2011-03-03,09:50:45,20.41,-0.02,7.0,14287.0,S 300032,2011-03-03,09:50:20,20.43,-0.01,4.0,8172.0,S 300032,2011-03-03,09:50:05,20.44,0.01,25.0,51100.0,B 300032,2011-03-03,09:50:00,20.43,-0.01,28.0,57204.0,S 

I use such a Q-code to get data in 1 minute, but I don’t know how to get 5 minutes.

 select Open: first price,High: max price, Low: min price,Close: last price,Vol: sum vol, Amt: sum amt,Avg_Price: ((sum amt)%(sum vol))%100 by stk_id,time.hh,time.mm from asc W 

result:

 stk_id hh mm| Open High Low Close Vol Amt Avg_Price ------------| ---------------------------------------------------- 000001 9 30| 16.24 16.24 16.22 16.24 3253 5282086 16.23758 000001 9 31| 16.22 16.24 16.21 16.21 1974 3204276 16.2324 000001 9 32| 16.23 16.23 16.2 16.2 3764 6102207 16.21203 000001 9 33| 16.21 16.21 16.19 16.2 4407 7143120 16.20858 000001 9 34| 16.2 16.2 16.19 16.19 1701 2756614 16.20584 000001 9 35| 16.19 16.21 16.19 16.21 2756 4466988 16.20823 000001 9 36| 16.22 16.25 16.22 16.24 3123 5076089 16.25389 000001 9 37| 16.25 16.27 16.25 16.27 1782 2897340 16.25892 
+3
source share
1 answer

Instead of grouping separately by time. hh and then time.mm, I would recommend making one group:

 by stk_id,time.minute 

From there, all you have to do for the 5 minute buckets is to use xbar:

 by stk_id,5 xbar time.minute 
+2
source

Source: https://habr.com/ru/post/1383816/


All Articles