孫華,孟昭睿,魏天武
基于安卓系統(tǒng)的股票推薦系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
孫金華,孟昭睿,魏天武
(廈門理工學(xué)院計(jì)算機(jī)與信息工程學(xué)院,福建廈門361024)
設(shè)計(jì)并實(shí)現(xiàn)了基于安卓系統(tǒng)的股票推薦系統(tǒng),闡述了該系統(tǒng)的總體結(jié)構(gòu)、功能模塊和實(shí)現(xiàn)的關(guān)鍵技術(shù).系統(tǒng)結(jié)合SQLite數(shù)據(jù)庫(kù)和雅虎股票數(shù)據(jù)接口,通過(guò)分析股價(jià)歷史數(shù)據(jù),完成股票評(píng)估與推薦等功能.實(shí)際測(cè)試結(jié)果表明,系統(tǒng)能運(yùn)行于基于安卓系統(tǒng)的移動(dòng)設(shè)備,為用戶的股票交易帶來(lái)便利.
股票;推薦系統(tǒng);移動(dòng)設(shè)備;安卓系統(tǒng)
股票投資因其準(zhǔn)入門坎低、操作方便而成為中小投資者重要的投資渠道,但股票價(jià)格波動(dòng)的隨機(jī)性和風(fēng)險(xiǎn)又使許多投資者望而生畏.投資時(shí)如何選擇股票,如何更好的規(guī)避風(fēng)險(xiǎn),增加投資收益,是股票投資者最為關(guān)注的問(wèn)題[1].
隨著移動(dòng)互聯(lián)網(wǎng)與智能手機(jī)的快速發(fā)展,使得越來(lái)越多的用戶習(xí)慣通過(guò)移動(dòng)設(shè)備獲取和處理信息. CNNIC調(diào)查顯示,截至2014年6月,中國(guó)手機(jī)網(wǎng)民規(guī)模5.27億,網(wǎng)民上網(wǎng)設(shè)備中,手機(jī)使用率達(dá)83.4%,首次超越傳統(tǒng)PC整體80.9%的使用率,成為最大網(wǎng)絡(luò)終端[2].設(shè)計(jì)能在安卓系統(tǒng)的平臺(tái)上運(yùn)行、能夠有效的幫助股民進(jìn)行股票投資篩選的股票薦購(gòu)系統(tǒng)成為現(xiàn)實(shí)的應(yīng)用需求.
股民在進(jìn)行股票投資時(shí),最大的問(wèn)題是股票的選取問(wèn)題,即如何選擇預(yù)期收益高的股票作為購(gòu)入對(duì)象.基于這樣的需求,本系統(tǒng)核心功能定位于股票歷史數(shù)據(jù)的獲取與分析;股票實(shí)時(shí)交易數(shù)據(jù)的采集;對(duì)用戶選定的股票進(jìn)行分析,根據(jù)指定的規(guī)則篩選出符合用戶期望股票;其他輔助功能.
2.1 系統(tǒng)總體架構(gòu)
系統(tǒng)架構(gòu)采用C/S模式,其中的服務(wù)器為互聯(lián)網(wǎng)上的雅虎財(cái)經(jīng)服務(wù)器,主要提供股票價(jià)格數(shù)據(jù).客戶端是本系統(tǒng)的主要構(gòu)成部分,面向用戶提供服務(wù),總體結(jié)構(gòu)見(jiàn)圖1.
圖1 系統(tǒng)總體結(jié)構(gòu)
系統(tǒng)為3層結(jié)構(gòu),位于最上端的用戶界面層直接與用戶交互,負(fù)責(zé)接收用戶查詢需求、展示行情數(shù)據(jù)及推薦結(jié)果.中間層是系統(tǒng)的核心,主要完成選定股票數(shù)據(jù)的分析、推薦等邏輯操作,分別與SQLite數(shù)據(jù)庫(kù)中股票歷史數(shù)據(jù)、雅虎股票API進(jìn)行數(shù)據(jù)交互.位于底層的部分,主要通過(guò)Internet連接雅虎財(cái)經(jīng)服務(wù)器,獲取實(shí)時(shí)股票價(jià)格數(shù)據(jù)和完成客戶端數(shù)據(jù)更新等工作.
2.2 系統(tǒng)功能結(jié)構(gòu)圖
用戶進(jìn)入主界面后,可選擇查看大盤指數(shù)、個(gè)股行情、自選股和推薦股票列表等.在大盤指數(shù)模塊中可以查看歷史指數(shù),在個(gè)股行情中可以查看個(gè)股實(shí)時(shí)行情和個(gè)股歷史行情.在自選股中可以查看自選股行情,在推薦股票列表可查看被推薦的股票及其詳情.客戶端功能結(jié)構(gòu)見(jiàn)圖2.
圖2 系統(tǒng)功能結(jié)構(gòu)
系統(tǒng)運(yùn)行在Android平臺(tái)上,選用Java作為開(kāi)發(fā)語(yǔ)言,SQLite作為數(shù)據(jù)庫(kù),結(jié)合雅虎stockAPI服務(wù)器接口實(shí)現(xiàn).所實(shí)現(xiàn)的核心功能模塊主要包括大盤數(shù)據(jù)展示、股票搜索、自選股管理和股票推薦等.
3.1 股票數(shù)據(jù)的獲取
數(shù)據(jù)的采集是進(jìn)行股票數(shù)據(jù)分析和推薦的基礎(chǔ),系統(tǒng)實(shí)現(xiàn)所依賴的數(shù)據(jù)包括歷史數(shù)據(jù)和實(shí)時(shí)交易數(shù)據(jù),這些數(shù)據(jù)都通過(guò)Yahoo財(cái)經(jīng)網(wǎng)站獲得[3].
3.1.1 歷史數(shù)據(jù)獲取
歷史數(shù)據(jù)獲取請(qǐng)求為:
http://table.finance.yahoo.com/table.csv?a=〈int>&b=〈int>&c=〈int>&d=〈int>&e=〈int>&f=〈int>&s=〈s tring>,其中的a-f為時(shí)間參數(shù),s為股票代碼.例如,獲取代碼為601899的上證股票紫金礦業(yè)從2013年7月20日到2014年7月19日的股價(jià)數(shù)據(jù),可用地址:http://table.finance.yahoo.com/table.csv?a=7&b=20&c= 2013&d=7&e=19&f=2014&s=601899.ss.其中后輟.ss表上交所,若要獲取深交所數(shù)據(jù),應(yīng)在股票代碼后面附上.sz.
所獲得的數(shù)據(jù)包括日期、開(kāi)盤價(jià)、最高價(jià)、最低價(jià)、收盤價(jià)、收盤價(jià)、成交量、復(fù)權(quán)收盤價(jià)等7個(gè)字段,以CSV格式存放,可通過(guò)import命令導(dǎo)入到SQLite數(shù)據(jù)庫(kù)中用于分析.
由于手機(jī)內(nèi)存的限制,歷史數(shù)據(jù)設(shè)置為滾動(dòng)更新,穩(wěn)定存放大約一年的數(shù)據(jù),用以根據(jù)推薦規(guī)則生成推薦列表.
3.1.2 實(shí)時(shí)數(shù)據(jù)獲取
通過(guò)Yahoo財(cái)經(jīng)獲取實(shí)時(shí)交易數(shù)據(jù)的請(qǐng)求地址:
http://finance.yahoo.com/d/quotes.csv?s=〈股票名稱>&f=〈數(shù)據(jù)列選項(xiàng)>,其中的參數(shù)“股票名稱”用的是股票代碼加深市或上市后輟,“數(shù)據(jù)列選項(xiàng)”可選項(xiàng)很多,具體可參照幫助手冊(cè).例如:
http://download.finance.yahoo.com/d/quotes.csv?s=601899.SS&f=l1,可獲取上交所代碼為601899的股票最新交易價(jià)格.
3.2 大盤數(shù)據(jù)展示與股票搜索
大盤展示功能主要實(shí)現(xiàn)股票最新報(bào)價(jià)和漲幅等信息查看.技術(shù)實(shí)現(xiàn)上,采用的方法是從網(wǎng)站獲取實(shí)時(shí)數(shù)據(jù)到本地?cái)?shù)據(jù)庫(kù),讀取到ListView控件中并顯示,實(shí)現(xiàn)效果見(jiàn)圖3.用戶通過(guò)該模塊可查看股票代碼、名稱、最新報(bào)價(jià)和漲幅等信息,并帶有搜索功能,可以通過(guò)搜索獲取指定股票數(shù)據(jù).用戶對(duì)指定股票數(shù)據(jù)行點(diǎn)擊后,會(huì)進(jìn)行跳轉(zhuǎn)到股票詳細(xì)信息的顯示界面,可查看各類K線圖,方便用戶觀察股票走勢(shì)(見(jiàn)圖4).
在對(duì)股票進(jìn)行長(zhǎng)點(diǎn)擊后可以將股票添加到自選股中.
圖3 大盤數(shù)據(jù)顯示
圖4 個(gè)股K線
3.3 自選股管理
對(duì)股民來(lái)講,其所關(guān)注的通常不會(huì)是所有的股票,而是有限的數(shù)只股票,系統(tǒng)設(shè)計(jì)時(shí)順應(yīng)這種需求,設(shè)置自選股模塊,用以存放和展示用戶所關(guān)注的股票.其實(shí)現(xiàn)的方法是從數(shù)據(jù)庫(kù)表中讀取數(shù)據(jù)到ListView控件中并顯示,工作界面見(jiàn)圖5.
與大盤展示模塊相似,在其中可進(jìn)行查看指定股票的詳情、股票搜索和自選股的刪除等功能操作.
圖5 自選股展示
3.4 股票推薦
股票推薦功能是系統(tǒng)的核心功能,也是最為復(fù)雜的模塊.該功能的實(shí)現(xiàn)不可避免的涉及對(duì)股票歷史交易數(shù)據(jù)的分析、價(jià)格走勢(shì)的預(yù)測(cè).在系統(tǒng)實(shí)現(xiàn)時(shí),采用乖離率(BIAS)作為推薦衡量指標(biāo),該指標(biāo)是反映股價(jià)在波動(dòng)過(guò)程中與移動(dòng)平均線偏離程度的技術(shù)指標(biāo).它的理論基礎(chǔ)是:不論股價(jià)在移動(dòng)平均線之上或之下,只要偏離距離過(guò)遠(yuǎn),就會(huì)向移動(dòng)平均線趨近,據(jù)此計(jì)算股價(jià)偏離移動(dòng)平均線百分比的大小來(lái)判斷買賣時(shí)機(jī)[4].其計(jì)算公式為:
式(1)中,為指定股票當(dāng)日收盤價(jià),為n日移動(dòng)平均價(jià),n的值可根據(jù)需要設(shè)定為6、12或24等.若將n值設(shè)定為12,則當(dāng)某支股票BIAS值達(dá)-7%以下時(shí)為超賣現(xiàn)象,可推薦該股.
對(duì)股票價(jià)格走勢(shì)的預(yù)測(cè)是一件很困難的事,目前學(xué)術(shù)界對(duì)這一問(wèn)題形成了多種不同的處理方法和模型,包括BP神經(jīng)網(wǎng)絡(luò)、時(shí)間序列分析[5-6]、基于關(guān)聯(lián)規(guī)則[3,7]和支持向量機(jī)[8-9]等.這些方法各有所長(zhǎng),并且還在不斷發(fā)展,針對(duì)這種情況,考慮到實(shí)際應(yīng)用的需要,系統(tǒng)的推薦模塊設(shè)計(jì)成開(kāi)放式接口,可以根據(jù)需求添加多種不同的預(yù)測(cè)算法進(jìn)去,對(duì)指定的股票,可應(yīng)用多種算法進(jìn)行分析,對(duì)結(jié)果采用投票機(jī)制決定是否推薦,具體流程見(jiàn)圖6.
圖6 股票推薦算法流程
圖7 顯示推薦股票
系統(tǒng)在開(kāi)盤前,會(huì)應(yīng)用多種不同算法分析歷史數(shù)據(jù),得到自選股列表中各股的一個(gè)預(yù)期指標(biāo),作為是否推薦的一個(gè)評(píng)判標(biāo)準(zhǔn).開(kāi)盤后,系統(tǒng)每隔一段時(shí)間掃描自選股列表中各股實(shí)時(shí)股價(jià)數(shù)據(jù),與預(yù)期指標(biāo)比對(duì),決定是否推薦,最后刷新推薦列表并顯示,結(jié)果見(jiàn)圖7.用戶可以查看推薦列表個(gè)股詳情和K線圖等,決定是否購(gòu)買該股.
考慮到股民炒股的實(shí)際情況和現(xiàn)實(shí)需求,基于Android的股票推薦系統(tǒng)實(shí)現(xiàn)了大盤數(shù)據(jù)查看、個(gè)股詳情的查詢、自選股的設(shè)定,并能根據(jù)指定的規(guī)則對(duì)股票交易的歷史數(shù)據(jù)進(jìn)行分析,得到相應(yīng)的指標(biāo),據(jù)此選擇可能收益最大的股票向用戶推薦.在當(dāng)前Android移動(dòng)設(shè)備被廣泛使用的背景下,給股民的交易操作帶來(lái)方便,系統(tǒng)具有較好的應(yīng)用前景.
參考文獻(xiàn):
[1]王唯賢,陳利軍.股票價(jià)格預(yù)測(cè)的建模與仿真研究[J].計(jì)算機(jī)仿真,2012,29(1):344-347.
[2]中國(guó)互聯(lián)網(wǎng)信息中心.第34次中國(guó)互聯(lián)網(wǎng)絡(luò)發(fā)展?fàn)顩r統(tǒng)計(jì)報(bào)告[EB/OL].(2014-07-21)[2015-01-09].http://www.cnnic. net.cn/hlwfzyj/hlwxzbg/hlwtjbg/201407/t20140721_47437.htm.
[3]劉井蓮,趙衛(wèi)績(jī),文海霞.基于關(guān)聯(lián)規(guī)則的股票分析軟件的設(shè)計(jì)與實(shí)現(xiàn)[J].通化師范學(xué)院學(xué)報(bào),2012,33(8):30-32.
[4]邢長(zhǎng)青.統(tǒng)計(jì)方法在股市分析中的應(yīng)用[J].中國(guó)經(jīng)貿(mào),2011(24):111-112.
[5]唐廣宇.股票價(jià)格預(yù)測(cè)的時(shí)間序列組合模型方法[D].湘潭:湘潭大學(xué),2013.
[6]藺玉佩,楊一文.基于模糊時(shí)間序列模型的股票市場(chǎng)預(yù)測(cè)[J].統(tǒng)計(jì)與決策,2010(8):34-37.
[7]王玉梅.關(guān)聯(lián)規(guī)則算法在股票分析預(yù)測(cè)中的應(yīng)用研究[D].保定:華北電力大學(xué),2008.
[8]呂琦.基于SVM的股票時(shí)間序列的預(yù)測(cè)研究[J].吉林工程技術(shù)師范學(xué)院學(xué)報(bào),2011,27(7):48-49.
[9]程昌品,陳強(qiáng),姜永生.基于ARIMA—SVM組合模型的股票價(jià)格預(yù)測(cè)[J].計(jì)算機(jī)仿真,2012,29(6):343-346.
Design and Implementation of Stock Recommendation System Based on Android
SUN Jin-hua,MENG Zhao-rui,WEI Tian-wu
(School of Computer and Information Engineer,Xiamen University of Technology, Xiamen 361024,Fujian,China)
In this paper,design and development of the stock recommendation system based on Android is introduced in details including structure of system,system function and key technologies.By analyzing historical stock data,applying the yahoo finance stock API and SQLite database,the system can carry out stock recommendation actively and evaluating.Tests and applications results show that the system can run on mobile devices based on the android system,and help users to gain in the stock deal.
stock;recommendation system;mobile devices;android system
TP311
:A
:1007-5348(2015)04-0008-05
(責(zé)任編輯:歐愷)
2014-11-16
福建省教育廳科技計(jì)劃項(xiàng)目(JB12184).
孫金華(1976-),男,福建三明人,廈門理工學(xué)院計(jì)算機(jī)與信息工程學(xué)院講師,碩士;研究方向:計(jì)算機(jī)軟件與理論、數(shù)據(jù)庫(kù)與數(shù)據(jù)挖掘等.