




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、詳細(xì)設(shè)計(jì)說明書求倉斤00001日期軟件詳細(xì)設(shè)計(jì)說明書(例)作 者:完成日期:簽收人:簽收日期:修改情況記錄:版本號(hào)修改批準(zhǔn)人修改人安裝日期簽收人目錄1弓i言31.1 編寫目的31.2 范圍41.3 定義41.4 參考資料42總體設(shè)計(jì)52.1 需求規(guī)定52.2 運(yùn)行環(huán)境52.3 基本設(shè)計(jì)概念和處理流程 62.4 結(jié)構(gòu) 82.5 功能需求與程序的關(guān)系 112.6 人工處理過程 132.7 尚未解決的問題 133接口設(shè)計(jì)133.1 用戶接口 133.2 外部接口 143.3 內(nèi)部接口 144運(yùn)行設(shè)計(jì)184.1 運(yùn)行模塊組合 184.2 運(yùn)行主空制 184.3 運(yùn)行時(shí)間185系統(tǒng)數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)195.1
2、 邏輯結(jié)構(gòu)設(shè)計(jì)要點(diǎn) 195.2 物理結(jié)構(gòu)設(shè)計(jì)要點(diǎn) 15.3 數(shù)據(jù)結(jié)構(gòu)與程序的關(guān)系 46系統(tǒng)出錯(cuò)處理設(shè)計(jì)46.1 出錯(cuò)信息46.2 補(bǔ)救措施56.3 系統(tǒng)維護(hù)設(shè)計(jì)51引言1.1 編寫目的隨著證券交易電子化程度的不斷提高,券商對(duì)于各種業(yè)務(wù)提出了新的要求,為了滿足券商的發(fā)展需求,更好的為客戶提供服務(wù),現(xiàn)結(jié)合原有各版本的證券交易軟件的優(yōu)點(diǎn)和特點(diǎn),開發(fā)一套采用 client/server結(jié)構(gòu)的證券交易軟件管理系統(tǒng)( sql版)。本系統(tǒng)從底層予以優(yōu)化,使整個(gè)系統(tǒng)的運(yùn)行速度得到較大提高,通過重新優(yōu)化數(shù)據(jù)庫內(nèi)部結(jié)構(gòu),使系統(tǒng)的可擴(kuò)充性得到極大提高。本說明書給出sql版證券交易系統(tǒng)的設(shè)計(jì)說明,包括最終實(shí)現(xiàn)的軟件必
3、須滿足的功能、性能、接口和用戶界面、附屬工具程序的功能以及設(shè)計(jì)約束等。目的在于:? 為編碼人員提供依據(jù);? 為修改、維護(hù)提供條件;? 項(xiàng)目負(fù)責(zé)人將按計(jì)劃書的要求布置和控制開發(fā)工作全過程;? 項(xiàng)目質(zhì)量保證組將按此計(jì)劃書做階段性和總結(jié)性的質(zhì)量驗(yàn)證和確認(rèn)。本說明書的預(yù)期讀者包括:? 項(xiàng)目開發(fā)人員,特別是編碼人員;? 軟件維護(hù)人員;? 技術(shù)管理人員;? 執(zhí)行軟件質(zhì)量保證計(jì)劃的專門人員;? 參與本項(xiàng)目開發(fā)進(jìn)程各階段驗(yàn)證、確認(rèn)以及負(fù)責(zé)為最后項(xiàng)目驗(yàn)收、鑒定提供相應(yīng)報(bào) 告的有關(guān)人員。? 合作各方有關(guān)部門的復(fù)雜人;項(xiàng)目負(fù)責(zé)人和全體參加人員。1.2 范圍說明:a.待開發(fā)的軟件系統(tǒng)的名稱:模擬股票交易系統(tǒng)b. 列出
4、本項(xiàng)目的任務(wù)提出者、開發(fā)者、用戶以及將運(yùn)行該項(xiàng)軟件的單位。1.3 定義列出本文件中用到的專門術(shù)語的定義和縮寫詞的原詞組。本報(bào)告用到的術(shù)語符合國家標(biāo)準(zhǔn)軟件工程術(shù)語(gb/t11475-1995 )。1.4 參考資料列出要用到的參考資料,如:a.本項(xiàng)目的經(jīng)核準(zhǔn)的計(jì)劃任務(wù)書或合同、上級(jí)機(jī)關(guān)的批文;b.屬于本項(xiàng)目的其他已發(fā)表的文件;c.本文件中各處引用的文件、資料,包括所要用到的軟件開發(fā)標(biāo)準(zhǔn)。列出這些文件的標(biāo)題、 文件編號(hào)、發(fā)表日期和出版單位, 說明能夠得到這些文件資料的 來源。2總體設(shè)計(jì)2.1 需求規(guī)定說明對(duì)本系統(tǒng)的主要的輸入輸出項(xiàng)目、處理的功能性能要求, 詳細(xì)的說明可參見 需求分析說明書。2.2
5、運(yùn)行環(huán)境簡要地說明對(duì)本系統(tǒng)的運(yùn)行環(huán)境(包括硬件環(huán)境和支持環(huán)境)的規(guī)定,詳細(xì)說明參見需 求分析說明書。? 數(shù)據(jù)庫服務(wù)器奔月p pro內(nèi)存128mb以上硬盤9gb100m網(wǎng)卡? 應(yīng)用服務(wù)器奔月p pro內(nèi)存64mb以上硬盤4gb100m網(wǎng)卡? 網(wǎng)絡(luò)配置100m / 10m? 工作站(柜臺(tái))p100以上內(nèi)存8mb以上硬盤1g以上100m/10m 網(wǎng)卡軟件? 操作系統(tǒng)windows nt 4.0 以上? 數(shù)據(jù)庫管理系統(tǒng)sql server 2005? 相關(guān)軟件工具windows nt workstation/windows nt serverwindows 2000 professional/ ser
6、ver開發(fā)工具? 平臺(tái): windows95/98、windows nt、windows 2000? 開發(fā)工具:visual stidio 2005 sp1,c#.net測(cè)試環(huán)境windows31、windows95/98、windows nt、windows 20002.3 基本設(shè)計(jì)概念和處理流程說明本系統(tǒng)的基本設(shè)計(jì)概念和處理流程,盡量使用圖表的形式。營業(yè)部系統(tǒng)一共有四個(gè)對(duì)象,即客戶、員工、市場和銀行,市場的概念是交易所的細(xì)化, 比如上海證券交易所的a股和b股就是兩個(gè)市場,有了市場的概念我們就可以把交易所這個(gè)概念細(xì)化,并使同一個(gè)市場的共性更突出。銀行則通過銀證轉(zhuǎn)賬業(yè)務(wù)介入,并成為營業(yè)部系統(tǒng)不
7、可或缺的組成部分。因此整個(gè)系統(tǒng)模上述四個(gè)對(duì)象通過一些業(yè)務(wù)流程進(jìn)行相互操作從而形成整個(gè)交易活動(dòng)。型可以表述為圖2-1設(shè)計(jì)時(shí)需要將營業(yè)部系統(tǒng)所使用的各種信息分為描述四個(gè)對(duì)象的信息和描述業(yè)務(wù)流程的信息。由于四個(gè)對(duì)象相對(duì)而言是一種穩(wěn)定型信息, 而業(yè)務(wù)流程則較易變化,且營業(yè)部之間 差異很大,因此應(yīng)將四個(gè)對(duì)象盡量定型, 而將各種業(yè)務(wù)流程盡可能做成組件, 以便營業(yè)部可 根據(jù)實(shí)際需求組裝成適合自己的系統(tǒng)。根據(jù)以上思想,在設(shè)計(jì)對(duì)象模型時(shí)應(yīng)充分考慮到可擴(kuò)展性,盡量做到抽象化、參數(shù)化, 從而使對(duì)象需求變化時(shí)不致影響系統(tǒng)結(jié)構(gòu)。圖2.12.4 結(jié)構(gòu)用一覽表及框圖的形式說明本系統(tǒng)的系統(tǒng)元素(各層模塊、子程序、公用程序等)
8、的劃分,扼要說明每個(gè)系統(tǒng)元素的標(biāo)識(shí)符和功能,分層次地給出各元素之間的控制與被控制關(guān)系。本系統(tǒng)采用c/s模式的3層結(jié)構(gòu)按照不同會(huì)話來劃分的話可以分為3大系統(tǒng)模塊資金管理報(bào)表管理圖2-2交易系統(tǒng)體系結(jié)構(gòu)客戶端登陸模塊:cjng最關(guān)鍵的交易系統(tǒng)模塊結(jié)構(gòu)圖如下:checkusermoneycount (stockdata)or checkuserstockcount要通過數(shù)據(jù)訪問層來訪問用戶表quotestockbuystocksellstockcanseldelegate在撮合隊(duì)列中處理并且返回處理結(jié)果tradeinqueue (stockdata newstockdata)success!unsu
9、ccessiiupdatedelegateinfo (stockdat a) 同左更新的是 委托臨時(shí)表f1updateuserinfo (stockdata)通過調(diào)用ado 層工廠來訪問 不同的數(shù)據(jù)庫 (更新用戶表ij)rules/modadofactory通過該模塊可動(dòng)態(tài)建立不同數(shù)據(jù)庫的連接orical、sqlserver, accessel規(guī)范 買賣 指令 傳輸 的數(shù) 據(jù)結(jié) 構(gòu)必 須是stockdatachec數(shù)據(jù)訪問層accessaccess.postdate(stockdata) 將數(shù)據(jù)更新到數(shù)據(jù)庫數(shù)據(jù)訪問層sqlserversqlserver。postdate (stockdata)
10、股票信息發(fā)布經(jīng)過修改我認(rèn)為每次由客戶端每5秒去查詢一次服務(wù)器更新信息不可取,因?yàn)檫@會(huì)加重服務(wù)端和客戶端的負(fù)擔(dān),特別是服務(wù)器端的運(yùn)算。修改后實(shí)現(xiàn)變更為:用戶一開始登陸后獲得一次服務(wù)器的全部股票當(dāng)前信息。而服務(wù)器端每次發(fā)生交易后,給每一個(gè)在線用戶發(fā)送當(dāng)前交易需要更新的股票信息,這樣就減輕了客戶機(jī)和服務(wù)端的信息第一次登陸發(fā)送請(qǐng)求獲得所有 股票信息,并畫分時(shí)線圖stock idstock pricetcp/ip服務(wù)器每次交易返回最新信息2.5 功能需求與程序的關(guān)系(該關(guān)系由需求分析報(bào)告編寫者根據(jù)結(jié)構(gòu)圖說明)本條用一張如下的矩陣圖說明各項(xiàng)功能需求的實(shí)現(xiàn)同各塊程序的分配關(guān)系:獲取并發(fā)送 用戶請(qǐng)求繪制分時(shí)
11、圖md5加密解密發(fā)送用戶 交易請(qǐng)求接受并識(shí)別 用戶請(qǐng)求調(diào)用數(shù)據(jù)層 查詢撮合交易服務(wù)器返回 客戶端信息用戶登陸vvvv查看用戶 持倉vvv實(shí)時(shí)指 數(shù)vv交易委托vvvvvv取消交易vvvvvv2.6 人工處理過程說明在本軟件系統(tǒng)的工作過程中不得不包含的人工處理過程(如果有的話)沒有完成股票管理的模塊設(shè)計(jì),所以股票必須從數(shù)據(jù)庫后臺(tái)添加如果有新股發(fā)行,還必須添加有關(guān)股票的交易隊(duì)列2.7 尚未解決的問題說明在概要設(shè)計(jì)過程中尚未解決而設(shè)計(jì)者認(rèn)為在系統(tǒng)完成之前必須解決的各個(gè)問題。3接口設(shè)計(jì)3.1 用戶接口說明將向用戶提供的命令和它們的語法結(jié)構(gòu),以及軟件的回答信息。向用戶提供簡單易用的 ui,以及幫助文檔。
12、客戶端將提供以下功能首先彈出用戶登陸框,供用戶輸入用戶名和密碼菜單項(xiàng)提供個(gè)股查詢和分時(shí)圖按鈕菜單欄下是選項(xiàng)卡,提供股票實(shí)時(shí)信息和個(gè)股分時(shí)圖欄提供用戶交易界面和交易按鈕以及查看用戶盈虧按鍵3.2 外部接口說明本系統(tǒng)同外界的所有接口的安排包括軟件與硬件之間的接口、本系統(tǒng)與各支持軟件之間的接口關(guān)系。采用基于正確公開標(biāo)準(zhǔn)的部件和技術(shù)以確保最大限度的協(xié)作能力以及與第三方系統(tǒng)與 部件集成的簡便性。這類標(biāo)準(zhǔn)包括但不限于以下幾種:? 網(wǎng)絡(luò)協(xié)議與標(biāo)準(zhǔn) (tcp/ip, http, ssl, etc)? 語言(sql, c#.net, etc.)? 數(shù)據(jù)庫連接性(adq net)3.3 內(nèi)部接口說明本系統(tǒng)之內(nèi)的各
13、個(gè)系統(tǒng)元素之間的接口的安排。邏輯層和數(shù)據(jù)訪問層通過以經(jīng)的stockdatamodel接口,來限定訪問stockdata類型的數(shù) 據(jù)客戶端通過調(diào)用buystock (stockdata)和sellstock (stockdata)來訪問邏輯層,在這個(gè)函數(shù)中包含了訪問邏輯層的接口dealtransaction(stockdata)通過adofactory訪問不同的數(shù)據(jù)庫客戶端登陸協(xié)議d(二字節(jié))+(客戶名字長度)(4字節(jié))+(客戶名字)+(客戶密碼長度)(4字節(jié))+(客戶密碼); 客戶買賣協(xié)議b(二字節(jié))+(股票id)(4字節(jié))+(股票數(shù)量)(4字節(jié))s(二字節(jié))+(股票id)(4字節(jié))+(股票數(shù)
14、量)(4字節(jié))查詢交易信息并返回給客戶端c(二字節(jié))具體有拆包解包的類using system;using system.collections.generic;using system.text;namespace projectcentertradingsyspublic class protocalprivatebyte messagebuffer;privatebyte messagelength;public byte messagebag;/該函數(shù)是將字符串轉(zhuǎn)換為字節(jié)數(shù)組public byte stringtobyte( string stringinfo)messagebuffe
15、r = system.text.asciiencoding .ascii.getbytes(stringlnfo);return messagebuffer;/該函數(shù)將整型轉(zhuǎn)換為個(gè)字節(jié) public byte inttobyte( int number) messagelength= bitconverter .getbytes(number);return messagelength;/將浮點(diǎn)型轉(zhuǎn)換為個(gè)字節(jié)public byte doubletobyte( double price)byte pricebyte = bitconverter .getbytes(price); return
16、pricebyte;/合并一個(gè)字符串(字節(jié)數(shù)組)和他的長度作為一個(gè)包public byte combinarray( byte messle, byte messinfo) messagebag= new byte messle.length+messinfo.length;int index;for (index = 0; index messle.length; index+) messagebagindex = messagelengthindex;for ( int index1 = 0; index1 newlist.price ,利 用插入排序?qū)?newlist插入到買隊(duì)列buyq
17、ueue中,轉(zhuǎn)1;3 .) if sellqueue0.countnewlist.count , newlist 完全撮合,sellqueue0.count = sellqueue0.count newlist.count ,轉(zhuǎn) 2;4.)if sellqueue0.count=newlist.count, sellqueue0撮合,并將 sellqueue0從 sellqueue 隊(duì)列中刪除,newlist.count=newlist.count-sellqueue0.count,轉(zhuǎn) 2;5.)取 買 單 隊(duì) 列 頭 buyqueue0 ,ifbuyqueue0.pricenewlist.c
18、ount, newlist 完全撮合,buyqueue0.count = buyqueue0.count newlist.count , 轉(zhuǎn)1;7.)if buyqueue0.count=newlist.count,buyqueue0撮合,并將 buyqueue0從 buyqueu以歹!j中刪除,newlist.count=newlist.count-buyqueue0.count,轉(zhuǎn)5;如下面流程圖5.2.2所示:newl squeue1 、 、)0 x-為空無法貢estt大 2seue(序可buyqueue口判斷苴為買判slueue口是否為空表還色裝鼠是否為空,不為空不為空 力空,弧斷差價(jià)
19、判面差價(jià)小年美法交ewnewlprice-buyquenew0pjpbceue0.price/buyquee/xr 7通磔插入排序找到承交易,學(xué) 花e曲郎位uneiwicount-b / 大于的于、) y %1 .y勺斷差量可交易,判斷差苗12t插入排序找到其uyqueuw / / 江 w 次松于小于篝于buyqueue0/ 1、buyqueu部非產(chǎn)成員向前5ja s / seueuetr部非返回成父伯息 空成員向前進(jìn)一位圖 .2集合競價(jià)集合競價(jià)是指對(duì)所有有效委托進(jìn)行集中處理,深、滬兩市的集合競價(jià)時(shí)間為 交易日上午9: 15至9: 25。集合競價(jià)原則:?凡是高于開盤價(jià)的買單一定
20、成交;?凡是低于開盤價(jià)的賣單一定成交;?凡是高于開盤價(jià)的賣單一定不成交;?凡是低于開盤價(jià)的買單一定不成交;集合競價(jià)分四步完成:第一步:確定有效委托在有漲跌幅限制的情況下,有效委托是這樣確定的: 根據(jù)該只證券上一交易日收盤價(jià)以及確定的漲跌幅度來計(jì)算當(dāng)日的最高限 價(jià)、最低限價(jià)。有效價(jià)格范圍就是該只證券最高限價(jià)、最低限價(jià)之間的所有價(jià) 位。限價(jià)超出此范圍的委托為無效委托,系統(tǒng)作自動(dòng)撤單處理。第二步:系統(tǒng)根據(jù)競價(jià)規(guī)則自動(dòng)確定集合競價(jià)的成交價(jià),這個(gè)價(jià)格就是當(dāng)日的開盤價(jià), 所有高于開盤價(jià)的買盤和所有低開開盤價(jià)的賣盤均以此價(jià)格成交, 集合競價(jià)的成交價(jià)確定原則是:以此價(jià)格成交,能夠得到最大成交量。第三步:集中撮
21、合處理所有的買委托按照委托限價(jià)由高到低的順序排列,限價(jià)相同者按照進(jìn)入系統(tǒng)的時(shí)間先后排列;所有女委托按委托限價(jià)由低到高的順序 排列,限價(jià)相同者按照進(jìn)入系統(tǒng)的時(shí)間先后排列。 依序逐筆將排在前面的買委 托與立委托配對(duì)成交,即按照“價(jià)格優(yōu)先,同等價(jià)格下時(shí)間優(yōu)先”的成交順序依次 成交,直至成交條件不滿足為止,即不存在限價(jià)高于等于成交價(jià)的叫買委托、或不存在限價(jià)低于等于成交價(jià)的叫賣委托。所有成交都以同一成交價(jià)成交。這同一成交價(jià)成交的買賣單一股量都是很大的,如圖3.2.3所示圖3.2.3所示第四步:行情揭示:1 .)如該只證券的成交量為零,則將成交價(jià)位揭示為開盤價(jià)、最近成交價(jià)、最高價(jià)、最低價(jià),并揭示出成交量、
22、成交金額。2 .) 剩余有效委托中,實(shí)際的最高叫買價(jià)揭示為叫買揭示價(jià),若 最高叫買價(jià)不存在,則叫買揭示價(jià)揭示為空;實(shí)際的最低叫 賣價(jià)揭示為叫賣揭示價(jià),若最低叫賣價(jià)不存在,則叫賣揭示 價(jià)揭示為空。集合競價(jià)中未能成交的委托,自動(dòng)進(jìn)入連續(xù)競價(jià)。按照這樣的原則和要求,我們?cè)O(shè)計(jì)了如下的集合競價(jià)撮合算法。如圖 3.2.4所示。buyqueue判斷兩隊(duì)列是否都不為空丸_/開盤價(jià)為昨日收盤價(jià),成交量為0sellqueue否小于0判斷差價(jià)buyqueue0.price-sellqueue0.price大于等于0i=j=0, m、n分別為buyqueue再sellqueue非空元素 的數(shù)目;bool k; buy
23、=buyqueue0; sell=sellqueue0判斷差價(jià)buyqueuei.price-sellqueuej.price大于等于0小于0判斷差量 buy.count-sell.count小于等于0大于0i+; k=false; buy1.count=buy.count;buy.count=buy.count+buyqueuei.count;j+; k=true; sell1.count=sell.count;sell.count=sell.count+sellqueueisellqueue.count;判斷是否im判斷是否jn、是判斷 buy.count-sell.count開盤價(jià)為 b
24、uyqueuei.price;總成交量為sell.count小于0等于0開盤價(jià)為 sellqueuej.price;總成交量為buy.count開盤價(jià)為(sellqueuej.price+buyqueuei-1.price)總成交量為sell.count判斷 buyl.count-selll.counttruev判斷k值等于0于0開盤價(jià)為(sellqueuej-1.price+buyqueuei-1.price)/2總 開盤價(jià)為buyqueuei.price;總)成交量為sell1.count成交量為sell1.countfalse斷 buy1.count-sell.count等于0開盤價(jià)為(
25、sellqueuej.price+buyqueuei-1.price)/2; 總成交量為buyl.count小于0v開盤價(jià)為 sellqueuej.price;總成交量為 buyl.count圖 3.2.4集合競價(jià)算法描述:和連續(xù)競價(jià)一樣,首先設(shè)定queuestruct 結(jié)構(gòu)為元素的買賣兩個(gè) 隊(duì)歹!j buyqueue 和 sellqueue 。為了盡可能的提高效率,減少資源占用,我們用靜態(tài)數(shù)組構(gòu)建這 兩個(gè)隊(duì)列。其中buyqueue是時(shí)間優(yōu)先、買價(jià)降序排序,而sellqueue 是時(shí) 間優(yōu)先、賣價(jià)升序排序。在開市到開盤這段時(shí)間內(nèi),買賣單已經(jīng)分別 進(jìn)入了買賣隊(duì)列內(nèi)排好了序。一旦宣布開盤,則觸發(fā)集
26、合撮合,如下:? 判斷兩隊(duì)列是否都不為空,如是,轉(zhuǎn)2;如否,轉(zhuǎn)21 ;? 判斷 buyqueue0.prince 與 sellqueue0.prince 之差,如大于等于0,轉(zhuǎn)3:如小于0,轉(zhuǎn)21 ;? 定義int i=j=0; m、n分別為買賣兩隊(duì)列非空元素的個(gè)數(shù);bool k ; queuestruct buy=buyqueue0 ; sell=sellqueue0 ; buy1 ; sell1 ;轉(zhuǎn) 4;? 判斷 buyqueuei.prince 與 sellqueuej.prince之差,如大于等于0,轉(zhuǎn)5:如小于0,轉(zhuǎn)14;? 判斷buy.count 與sell.count 之差,如
27、大于0,轉(zhuǎn) 6;如小于等于0,轉(zhuǎn)9;?j+ ; k=true ; sell1.count=sell.count;sell.count=sell.count+sellqueueisellqueue.count ;轉(zhuǎn) 7;? 判斷j是否小于n,如是,轉(zhuǎn)4;如不是,轉(zhuǎn)8;? 開盤價(jià)為 buyqueuei.price ; 總成交量為sell.count ;統(tǒng)計(jì)成交數(shù)據(jù)及回報(bào),并返回;i+; k=false ; buy1.count=buy.count ;buy.count=buy.count+buyqueuei.count;轉(zhuǎn) 10;判斷i是否小于m,如是,轉(zhuǎn)4;如不是,轉(zhuǎn)11 ;判 斷buy.cou
28、nt 與sell.count 之差,如小于0,轉(zhuǎn) 12;如等于0,轉(zhuǎn)13;開盤價(jià)為 sellqueuej.price ; 總成交量為 buy.count ;統(tǒng)計(jì)成交數(shù)據(jù)及回報(bào),并返回;開盤價(jià)為(sellqueuej.price+buyqueuei-1.price)/2;總成交量為sell.count ;統(tǒng)計(jì)成交數(shù)據(jù)及回報(bào),并 返回;判斷k值,如為true ,轉(zhuǎn)15;如為false ,轉(zhuǎn)18;判斷buy1.count 與sell1.count之差,如大于0,轉(zhuǎn)16;如小于0,轉(zhuǎn)17 ;開盤價(jià)為 buyqueuei.price; 總成交量為sell1.count ;統(tǒng)計(jì)成交數(shù)據(jù)及回報(bào),并返回;開盤
29、價(jià)為(sellqueuej-1.price+buyqueuei-1.price)/2;總成交量為sell1.count ;統(tǒng)計(jì)成交數(shù)據(jù)及回報(bào), 并返回;判斷buy1.count 與sell.count 之差,如小于0,轉(zhuǎn) 19;如等于0,轉(zhuǎn)20;開盤價(jià)為 sellqueuej.price ; 總成交量為buy1.count ;統(tǒng)計(jì)成交數(shù)據(jù)及回報(bào),并返回;開盤價(jià)為(sellqueuej.price+buyqueuei-1.price)/2;總成交量為buy1.count ;統(tǒng)計(jì)成交數(shù)據(jù)及回報(bào),并 返回;開盤價(jià)為昨日收盤價(jià),成交量為0;保留所有數(shù)據(jù)至 開盤進(jìn)入連續(xù)競價(jià)撮合;5.2.3買賣隊(duì)列排序上
30、面我們介紹了撮合算法的核心部分,但實(shí)際上在撮合前后都要 對(duì)兩個(gè)買賣隊(duì)列進(jìn)行一定的插入和排列處理,這在整個(gè)算法中也是很 重要的部分。下面我們就來具體介紹一下。對(duì)所有的排列和插入我們考慮了效率問題之后,最后統(tǒng)一使用了 二分插入排序法。在單子進(jìn)入隊(duì)列時(shí),我們首先統(tǒng)計(jì)出當(dāng)前隊(duì)列中的非空數(shù)據(jù)個(gè) 數(shù),然后再通過新單子與當(dāng)前隊(duì)列中間值的價(jià)格比較,確定新單子在 隊(duì)列的前半部分還是后半部分,然后再取該區(qū)域中間值與之比較,直 到確定新單子應(yīng)在的位置。如下列代碼所示:int low=0; int high=n-1;/n 為隊(duì) 列中非 空元素 的個(gè)數(shù)while(lowprice=high+1; -i)sellqueu
31、ei+1=sellqueuei;sellqueuehigh+1=*newlist;這是女隊(duì)列的排序,對(duì)于買隊(duì)列的排序與之相似,只是價(jià)格排列 是由高到底。在這里不再贅述這種插入排序方法完全符合了撮合算法中價(jià)格優(yōu)先、時(shí)間優(yōu)先的 要求,而且效率也是比較高的。在集合競價(jià)前和連續(xù)競價(jià)后進(jìn)行的插入排序都是這樣進(jìn)行的,而 在集合競價(jià)撮合之后,對(duì)兩隊(duì)列的重新排列,我們首先使用了 memset 函數(shù)將前面已全部成交的t個(gè)元素清空,然后將t到n(原總非空元 素個(gè)數(shù))前移t位。如下列代碼所示:for (int p=0; *t *n; p+,*t+)queuestruct temp;temp=queue*t;queu
32、e*t=queuep;queuep=temp;5.2.4撮合算法的運(yùn)行機(jī)制在交易所正常運(yùn)行時(shí),一天內(nèi)分為開市、開盤、休市、復(fù)開、收市等 5個(gè)步 驟。開市:每天上午9:15開市。這時(shí)候,股民可以通過券商向交易所遞單。同 一只股票的買賣單開始分別進(jìn)入這只股票的買賣隊(duì)列中,但并不進(jìn)行撮合。該過程一直持續(xù)到9:25。開盤:每天上午9:30正式開盤。9:25-9:30為盤前處理,這段時(shí)間也就是集 合競價(jià)撮合算法運(yùn)行的時(shí)間。9:25,買賣兩隊(duì)列開市不再接收新的單子。新的單 子這時(shí)都放在緩沖區(qū)中,直到兩隊(duì)列運(yùn)行完整個(gè)集合競價(jià)算法后開市重新進(jìn)單 時(shí),再依序?qū)巫訌木彺鎱^(qū)取出讀入買賣隊(duì)列進(jìn)行連續(xù)競價(jià)的撮合。買賣隊(duì)列于9:25開始集合競價(jià),運(yùn)算完畢,得出開盤價(jià)等所有統(tǒng)計(jì)數(shù)據(jù)并發(fā)布行情以及發(fā)送 完所有回報(bào)之后,重新接收單子進(jìn)入該日正常交易中,使用連續(xù)競價(jià)算法進(jìn)行撮 合。休市:每天上午11:00休市。此時(shí),所有的券商不再接受買賣單子,也不再 給交易所遞單。交易所將此前已經(jīng)收到的所有單子撮合之后處于休息階段。并進(jìn)行各種當(dāng)日前市盤點(diǎn)。復(fù)開:每天下午13:30復(fù)開。此時(shí),券商開市接收用戶的遞單,并將其送交 交易所。交易所重新開市進(jìn)入連續(xù)競價(jià)撮合收市:每天下午15:00收市。此時(shí)交易所不再接受任何單子,準(zhǔn)時(shí)進(jìn)行最后 一筆單子的撮合之后,關(guān)閉撮合線程。將最后得到
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 室內(nèi)設(shè)計(jì)風(fēng)格選擇與實(shí)施指南
- 農(nóng)業(yè)生態(tài)保護(hù)手冊(cè)
- 項(xiàng)目進(jìn)度總結(jié)與經(jīng)驗(yàn)分享報(bào)告
- 三農(nóng)合作企業(yè)經(jīng)營管理手冊(cè)
- 保險(xiǎn)行業(yè)保險(xiǎn)產(chǎn)品設(shè)計(jì)與管理方案
- 阜陽2025年安徽阜陽臨泉縣事業(yè)單位招聘56人筆試歷年參考題庫附帶答案詳解
- 遵義2025年貴州遵義市湄潭縣事業(yè)單位招聘34人筆試歷年參考題庫附帶答案詳解
- 貴州2025年貴州省政協(xié)辦公廳所屬事業(yè)單位招聘5人筆試歷年參考題庫附帶答案詳解
- 聊城2025年山東聊城高唐縣事業(yè)單位初級(jí)綜合類崗位招聘10人筆試歷年參考題庫附帶答案詳解
- 溫州浙江溫州體育運(yùn)動(dòng)學(xué)校編外工作人員招聘筆試歷年參考題庫附帶答案詳解
- 中職高考數(shù)學(xué)一輪復(fù)習(xí)講練測(cè)專題一 集合與充要條件(測(cè))原卷版
- 《抽水蓄能電站系統(tǒng)建模與特性分析》6300字(論文)
- 化學(xué)-江蘇省鎮(zhèn)江市2024-2025學(xué)年高三下學(xué)期期初質(zhì)量監(jiān)測(cè)試題和答案
- 2025年中考語文一輪復(fù)習(xí):民俗類散文閱讀 講義(含練習(xí)題及答案)
- 最終版附件1:“跨學(xué)科主題學(xué)習(xí)”教學(xué)設(shè)計(jì)(2025年版)
- 企業(yè)財(cái)務(wù)會(huì)計(jì)(第四版)教案27:合同成本
- 2025年春季安全教育主題班會(huì)教育記錄
- 機(jī)電一體化專科畢業(yè)論文范文
- 醫(yī)療入圍(藥品、耗材集中配送)服務(wù)部分方案
- 食品倉儲(chǔ)的庫房的安全巡檢考核試卷
- 財(cái)務(wù)管理委托代理會(huì)計(jì)服務(wù) 投標(biāo)文件(技術(shù)方案)
評(píng)論
0/150
提交評(píng)論