kdb+(基于K語言的db, 增強(qiáng)版,也簡(jiǎn)稱kdb)是非常小眾的一個(gè)數(shù)據(jù)庫,它有非常高的性能,豐富高效的時(shí)間序列函數(shù),在存取和實(shí)時(shí)分析海量股票、×××等高頻數(shù)據(jù)這個(gè)領(lǐng)域內(nèi),唯kdb獨(dú)尊。
創(chuàng)新互聯(lián)是一家專業(yè)提供綿竹企業(yè)網(wǎng)站建設(shè),專注與成都做網(wǎng)站、成都網(wǎng)站制作、H5開發(fā)、小程序制作等業(yè)務(wù)。10年已為綿竹眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)絡(luò)公司優(yōu)惠進(jìn)行中。
kdb+是一個(gè)基于列的內(nèi)存數(shù)據(jù)庫,由KxSystems開發(fā)和銷售。它通常用于高頻交易,非常適用于高速存儲(chǔ),分析,處理和檢索大型數(shù)據(jù)集。kdb+能夠處理數(shù)十億條記錄并分析數(shù)據(jù)庫中的數(shù)據(jù)。該數(shù)據(jù)庫通過各種操作系統(tǒng)提供32位(免費(fèi))和64位版本。金融機(jī)構(gòu)使用kdb+來分析時(shí)間序列數(shù)據(jù),例如股票或商品交易數(shù)據(jù)。該數(shù)據(jù)庫還用于其他時(shí)間敏感的數(shù)據(jù)應(yīng)用,包括股票和大宗商品交易,電信,傳感器數(shù)據(jù),日志數(shù)據(jù)以及機(jī)器和網(wǎng)絡(luò)使用監(jiān)控。
q語言是由Arthur Whitney開發(fā)并由Kx商業(yè)化的專有陣列處理語言。該語言用作kdb+的查詢語言,kdb+基于K語言(APL語言的一個(gè)變體)。q語言是K簡(jiǎn)潔包裝,它提供一些可讀性。
kdb+的豐富的時(shí)間序列函數(shù)可以幫助我們輕松的進(jìn)行股票計(jì)算,我有一個(gè)基于Kdb的A股數(shù)據(jù)庫,daily表存儲(chǔ)了滬市A股和深市A股的日線數(shù)據(jù)(前復(fù)權(quán))。讓我們來看看Kdb+的數(shù)據(jù)處理,隨后的文章會(huì)向大家解釋怎樣使用kdb和如何創(chuàng)建這個(gè)數(shù)據(jù)庫。
1. 查詢某一日股票(sym)的開盤價(jià)(o)、最高價(jià)(o)、最低價(jià)(l)、收盤價(jià)(c)。以下結(jié)果只顯示了5條數(shù)據(jù),其他數(shù)據(jù)忽略了。
q)select from daily where date = 2016.11.10 date sym o h l c ----------------------------------------- 2016.11.10 000001 9.1 9.16 9.1 9.14 2016.11.10 000002 26 28.28 25.58 26.56 2016.11.10 000004 45 46.87 44.85 45.3 2016.11.10 000005 7.45 7.68 7.44 7.53 2016.11.10 000006 10.09 10.17 10.06 10.12 ..
2. 查詢股票002695(煌上煌)最近10個(gè)交易日的價(jià)格。
q)-10#select from daily where sym=`002695 date sym o h l c ----------------------------------------- 2016.10.25 002695 26.03 27.5 24.55 26.73 2016.10.26 002695 25.9 27.89 25.82 26.85 2016.10.27 002695 26.7 29.54 26.33 29.54 2016.11.02 002695 32.49 32.49 30.86 32.49 2016.11.03 002695 34 35.74 32.21 32.77 2016.11.04 002695 32.31 33.69 30.15 30.51 2016.11.07 002695 30.18 31 29.6 30.59 2016.11.08 002695 30.48 32.56 29.78 31.4 2016.11.09 002695 30.53 31.99 30.05 31.5 2016.11.10 002695 31.8 31.99 30.8 31.19
3. 計(jì)算002695(煌上煌)的5日、10日、20日的簡(jiǎn)單移動(dòng)平均價(jià)格
q)-10#select date,sym,o,h,l,c, MA5:mavg[5;c],MA10:mavg[10;c], MA20:mavg[20;c] from daily where sym=`002695 date sym o h l c MA5 MA10 MA20 --------------------------------------------------------------- 2016.10.25 002695 26.03 27.5 24.55 26.73 23.044 20.108 18.7045 2016.10.26 002695 25.9 27.89 25.82 26.85 24.588 21.082 19.1155 2016.10.27 002695 26.7 29.54 26.33 29.54 26.288 22.351 19.63 2016.11.02 002695 32.49 32.49 30.86 32.49 28.184 23.86 20.342 2016.11.03 002695 34 35.74 32.21 32.77 29.676 25.426 21.1535 2016.11.04 002695 32.31 33.69 30.15 30.51 30.432 26.738 21.834 2016.11.07 002695 30.18 31 29.6 30.59 31.18 27.884 22.5295 2016.11.08 002695 30.48 32.56 29.78 31.4 31.552 28.92 23.289 2016.11.09 002695 30.53 31.99 30.05 31.5 31.354 29.769 24.05 2016.11.10 002695 31.8 31.99 30.8 31.19 31.038 30.357 24.757
4. 計(jì)算002695(煌上煌)的10日指數(shù)移動(dòng)平均
q)-10#select date,sym,o,h,l,c, MA5:ema[2%1+10;c] from daily where sym=`002695 date sym o h l c MA5 -------------------------------------------------- 2016.10.25 002695 26.03 27.5 24.55 26.73 21.39675 2016.10.26 002695 25.9 27.89 25.82 26.85 22.38825 2016.10.27 002695 26.7 29.54 26.33 29.54 23.68857 2016.11.02 002695 32.49 32.49 30.86 32.49 25.28883 2016.11.03 002695 34 35.74 32.21 32.77 26.64904 2016.11.04 002695 32.31 33.69 30.15 30.51 27.35103 2016.11.07 002695 30.18 31 29.6 30.59 27.93994 2016.11.08 002695 30.48 32.56 29.78 31.4 28.56904 2016.11.09 002695 30.53 31.99 30.05 31.5 29.10194 2016.11.10 002695 31.8 31.99 30.8 31.19 29.48159
5. 找出最近20個(gè)交易日內(nèi)創(chuàng)年新高的股票代碼
q)10 cut exec distinct sym from daily where 1b= ({(max -250#x) = max -20#x};c) fby sym,2016.11.10=(last;date) fby sym 000019 000034 000338 000404 000503 000510 000513 000518 000550 000567 000568 000581 000607 000615 000635 000639 000661 000678 000721 000723 000731 000780 000818 000820 000823 000881 000889 000895 000910 000912 000913 000915 000935 000937 000951 000953 000959 000960 000993 002013 002050 002051 002082 002085 002088 002094 002113 002120 002122 002124 002132 002141 002150 002167 002194 002206 002212 002213 002264 002317 002319 002333 002352 002365 002374 002386 002421 002456 002476 002486 ..