軟件詳細(xì)設(shè)計說明書_第1頁
軟件詳細(xì)設(shè)計說明書_第2頁
軟件詳細(xì)設(shè)計說明書_第3頁
軟件詳細(xì)設(shè)計說明書_第4頁
軟件詳細(xì)設(shè)計說明書_第5頁
已閱讀5頁,還剩38頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

案卷號00001日期軟件詳細(xì)設(shè)計說明書(例)作者:完成日期:簽收人:簽收日期:修改情況記錄:版本號修改批準(zhǔn)人修改人安裝日期簽收人目錄1引言錯誤!未定義書簽。編寫目的錯誤!未定義書簽。范圍錯誤!未定義書簽。定義錯誤!未定義書簽。參考資料錯誤!未定義書簽。2總體設(shè)計錯誤!未定義書簽。需求規(guī)定錯誤!未定義書簽。運行環(huán)境錯誤!未定義書簽。基本設(shè)計概念和處理流程錯誤!未定義書簽。結(jié)構(gòu)錯誤!未定義書簽。尚未解決的問題錯誤!未定義書簽。3接口設(shè)計錯誤!未定義書簽。用戶接口錯誤!未定義書簽。外部接口錯誤!未定義書簽。內(nèi)部接口錯誤!未定義書簽。4運行設(shè)計錯誤!未定義書簽。運行模塊組合錯誤!未定義書簽。運行控制錯誤!未定義書簽。運行時間錯誤!未定義書簽。5系統(tǒng)數(shù)據(jù)結(jié)構(gòu)設(shè)計錯誤!未定義書簽。數(shù)據(jù)結(jié)構(gòu)與程序的關(guān)系錯誤!未定義書簽。6系統(tǒng)出錯處理設(shè)計錯誤!未定義書簽。出錯信息錯誤!未定義書簽。補救措施錯誤!未定義書簽。系統(tǒng)維護設(shè)計錯誤!未定義書簽。1引言編寫目的隨著證券交易電子化程度的不斷提高,券商對于各種業(yè)務(wù)提出了新的要求,為了滿足券商的發(fā)展需求,更好的為客戶提供服務(wù),現(xiàn)結(jié)合原有各版本的證券交易軟件的優(yōu)點和特點,開發(fā)一套采用Client/Server結(jié)構(gòu)的證券交易軟件管理系統(tǒng)(SQL版)。本系統(tǒng)從底層予以優(yōu)化,使整個系統(tǒng)的運行速度得到較大提高,通過重新優(yōu)化數(shù)據(jù)庫內(nèi)部結(jié)構(gòu),使系統(tǒng)的可擴充性得到極大提高。本說明書給出SQL版證券交易系統(tǒng)的設(shè)計說明,包括最終實現(xiàn)的軟件必須滿足的功能、性能、接口和用戶界面、附屬工具程序的功能以及設(shè)計約束等。目的在于:為編碼人員提供依據(jù);為修改、維護提供條件;項目負(fù)責(zé)人將按計劃書的要求布置和控制開發(fā)工作全過程;項目質(zhì)量保證組將按此計劃書做階段性和總結(jié)性的質(zhì)量驗證和確認(rèn)。本說明書的預(yù)期讀者包括:項目開發(fā)人員,特別是編碼人員;軟件維護人員;技術(shù)管理人員;執(zhí)行軟件質(zhì)量保證計劃的專門人員;參與本項目開發(fā)進程各階段驗證、確認(rèn)以及負(fù)責(zé)為最后項目驗收、鑒定提供相應(yīng)報告的有關(guān)人員。合作各方有關(guān)部門的復(fù)雜人;項目負(fù)責(zé)人和全體參加人員。范圍說明:待開發(fā)的軟件系統(tǒng)的名稱:模擬股票交易系統(tǒng)列出本項目的任務(wù)提出者、開發(fā)者、用戶以及將運行該項軟件的單位。定義列出本文件中用到的專門術(shù)語的定義和縮寫詞的原詞組。本報告用到的術(shù)語符合國家標(biāo)準(zhǔn)《軟件工程術(shù)語(GB/T11475-1995)》。參考資料列出要用到的參考資料,如:a本項目的經(jīng)核準(zhǔn)的計劃任務(wù)書或合同、上級機關(guān)的批文;a?b.屬于本項目的其他已發(fā)表的文件;C.本文件中各處引用的文件、資料,包括所要用到的軟件開發(fā)標(biāo)準(zhǔn)。列出這些文件的標(biāo)題、文件編號、發(fā)表日期和出版單位,說明能夠得到這些文件資料的來源。2總體設(shè)計需求規(guī)定說明對本系統(tǒng)的主要的輸入輸出項目、處理的功能性能要求,詳細(xì)的說明可參見《需求分析說明書》。運行環(huán)境簡要地說明對本系統(tǒng)的運行環(huán)境(包括硬件環(huán)境和支持環(huán)境)的規(guī)定,詳細(xì)說明參見《需求分析說明書》。數(shù)據(jù)庫服務(wù)器奔騰Pro內(nèi)存128MB以上硬盤9GB應(yīng)用服務(wù)器奔騰Pro內(nèi)存64MB以上硬盤4GB100M網(wǎng)卡網(wǎng)絡(luò)配置100M/10M工作站(柜臺)P100以上內(nèi)存8MB以上硬盤1G以上軟件操作系統(tǒng)WindowsNT以上數(shù)據(jù)庫管理系統(tǒng)SQLServer2005相關(guān)軟件工具WindowsNTWorkstation/WindowsNTserverWindows2000Professional/Server開發(fā)工具平臺:Windows95/98、WindowsNT、Windows2000開發(fā)工具:visualstidio2005sp1,C#.Net測試環(huán)境Windows31、Windows95/98、WindowsNT、Windows2000基本設(shè)計概念和處理流程說明本系統(tǒng)的基本設(shè)計概念和處理流程,盡量使用圖表的形式。營業(yè)部系統(tǒng)一共有四個對象,即客戶、員工、市場和銀行,市場的概念是交易所的細(xì)化,比如上海證券交易所的A股和B股就是兩個市場,有了市場的概念我們就可以把交易所這個概念細(xì)化,并使同一個市場的共性更突出。銀行則通過銀證轉(zhuǎn)賬業(yè)務(wù)介入,并成為營業(yè)部系統(tǒng)不可或缺的組成部分。上述四個對象通過一些業(yè)務(wù)流程進行相互操作從而形成整個交易活動。因此整個系統(tǒng)模型可以表述為圖2-1設(shè)計時需要將營業(yè)部系統(tǒng)所使用的各種信息分為描述四個對象的信息和描述業(yè)務(wù)流程的信息。由于四個對象相對而言是一種穩(wěn)定型信息,而業(yè)務(wù)流程則較易變化,且營業(yè)部之間差異很大,因此應(yīng)將四個對象盡量定型,而將各種業(yè)務(wù)流程盡可能做成組件,以便營業(yè)部可根據(jù)實際需求組裝成適合自己的系統(tǒng)。

根據(jù)以上思想,在設(shè)計對象模型時應(yīng)充分考慮到可擴展性,盡量銀苗七%.業(yè)務(wù)流程Ii巾-場投資#做到抽象化、參數(shù)化,從而使對象需求變化時不致影響系統(tǒng)結(jié)構(gòu)。根據(jù)以上思想,在設(shè)計對象模型時應(yīng)充分考慮到可擴展性,盡量銀苗七%.業(yè)務(wù)流程Ii巾-場投資#做到抽象化、參數(shù)化,從而使對象需求變化時不致影響系統(tǒng)結(jié)構(gòu)。日大Ji七「日幻報合系統(tǒng)ill:券商電惱系統(tǒng)委根方式,圖結(jié)構(gòu)用一覽表及框圖的形式說明本系統(tǒng)的系統(tǒng)元素(各層模塊、子程序、公用程序等)的劃分,扼要說明每個系統(tǒng)元素的標(biāo)識符和功能,分層次地給出各元素之間的控制與被控制關(guān)系。本系統(tǒng)采用c/s模式的3層結(jié)構(gòu)按照不同會話來劃分的話可以分為3大系統(tǒng)模塊客戶端登陸模塊:菁EBJTtvd(Qlmlipte最關(guān)鍵的交易系統(tǒng)模塊結(jié)構(gòu)圖如下:SuccessupDateUserInfo(stockData)通過調(diào)用ADO層工廠來訪問不同的數(shù)據(jù)庫(更新用戶表)數(shù)據(jù)訪問層SuccessupDateUserInfo(stockData)通過調(diào)用ADO層工廠來訪問不同的數(shù)據(jù)庫(更新用戶表)數(shù)據(jù)訪問層sqlserverSqlserver。postDate(stockData)buyStocksellStockquoteStockCanselDelegateadoFactory通過該模塊可動態(tài)建立不同數(shù)據(jù)庫的連接Orical、sqlserver,accessRules/Model規(guī)范買賣指令傳輸?shù)臄?shù)據(jù)結(jié)構(gòu)必須是stockData形式Chec數(shù)據(jù)訪問層accessaccess.postDate(stockData)將數(shù)據(jù)更新到數(shù)據(jù)庫checkUserMoneyCount(stockData)OrcheckUserStockCount要通過數(shù)據(jù)訪問層來訪問用戶表unSuccessupDateDelegate-Info(stockData)I同左更新的是委托臨時表在撮合隊列中處理并且返回處理結(jié)果tradeInQueue(stockDatanewstockData)股票信息發(fā)布經(jīng)過修改我認(rèn)為每次由客戶端每5秒去查詢一次服務(wù)器更新信息不可取,因為這會加重服務(wù)端和客戶端的負(fù)擔(dān),特別是服務(wù)器端的運算。修改后實現(xiàn)變更為:用戶一開始登陸后獲得一次服務(wù)器的全部股票當(dāng)前信息。而服務(wù)器端每次發(fā)生交易后,給每一個在線用戶發(fā)送當(dāng)前交易需要更新的股票信息,這樣就減輕了客戶機和服務(wù)端的信息服務(wù)器每次交易返回最新信息功能需求與程序的關(guān)系(該關(guān)系由需求分析報告編寫者根據(jù)結(jié)構(gòu)圖說明)本條用一張如下的矩陣圖說明各項功能需求的實現(xiàn)同各塊程序的分配關(guān)系:

獲取并發(fā)送用戶請求繪制分時圖MD5加密解密發(fā)送用戶交易請求接受并識另"用戶請求調(diào)用數(shù)據(jù)層查詢撮合交易服務(wù)器返回客戶端信息用戶登陸VVVV查看用戶持倉VVV實時指數(shù)VVV交易委托VVVVVVV取消交易VVVVVV人工處理過程說明在本軟件系統(tǒng)的工作過程中不得不包含的人工處理過程(如果有的話)。沒有完成股票管理的模塊設(shè)計,所以股票必須從數(shù)據(jù)庫后臺添加如果有新股發(fā)行,還必須添加有關(guān)股票的交易隊列尚未解決的問題說明在概要設(shè)計過程中尚未解決而設(shè)計者認(rèn)為在系統(tǒng)完成之前必須解決的各個問題。3接口設(shè)計用戶接口說明將向用戶提供的命令和它們的語法結(jié)構(gòu),以及軟件的回答信息。向用戶提供簡單易用的UI,以及幫助文檔??蛻舳藢⑻峁┮韵鹿δ苁紫葟棾鲇脩舻顷懣?,供用戶輸入用戶名和密碼菜單項提供個股查詢和分時圖按鈕菜單欄下是選項卡,提供股票實時信息和個股分時圖欄提供用戶交易界面和交易按鈕以及查看用戶盈虧按鍵外部接口說明本系統(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#,etc.)數(shù)據(jù)庫連接性(ADO。net)內(nèi)部接口說明本系統(tǒng)之內(nèi)的各個系統(tǒng)元素之間的接口的安排。邏輯層和數(shù)據(jù)訪問層通過以經(jīng)的stockDataModel接口,來限定訪問stockData類型的數(shù)據(jù)客戶端通過調(diào)用buyStock(stockData)和sellStock(stockData)來訪問邏輯層,在這個函數(shù)中包含了訪問邏輯層的接口dealTransaction(stockData)通過AdoFactory訪問不同的數(shù)據(jù)庫客戶端登陸協(xié)議。(二字節(jié))+(客戶名字長度)(4字節(jié))+(客戶名字)+(客戶密碼長度)(4字節(jié))+(客戶密碼);客戶買賣協(xié)議B(二字節(jié))+(股票ID)(4字節(jié))+(股票數(shù)量)(4字節(jié))S(二字節(jié))+(股票ID)(4字節(jié))+(股票數(shù)量)(4字節(jié))查詢交易信息并返回給客戶端日二字節(jié))具體有拆包解包的類usingSystem;using;namespaceProjectCenterTradingSys{publicclassProtocalprivatebyte[]messagebuffer;privatebyte[]messagelength;publicbyte[]messagebag;stockID//以stockDat要通過St接邱as婷stockID//以stockDat要通過windowForm:FormPrivateFMDEetcrypt(string)Private:satdMestoServer//動態(tài)數(shù)組存儲股票價ClassstockData訂單號publicintListID;publicint格userLogDialog〃向主機發(fā)送信息AuserNametextBoxlogOK_press(event,hanstockPrice[]dle);userPasswordtextBoxstockQuoteitem_press(e,h);userlogOKbotton1/Clieritlntot,Etring,Syztem.t.EndFoiTLt,■三t.四ClassstockDataClassADOSQLserverPrivate訂單號publicintListID;PrivatedataSetpublicint5.//ds下可有4個dataTable高的買入申報優(yōu)先于價格較低的買入申報2.1價格優(yōu)先原則:價格較,價格較低的賣出申報優(yōu)先于價格較高的賣出申報。userTable)時間優(yōu)先原則:同價位申報、依照申報時序決定優(yōu)先順序,即莢樊方^制^價格相同的,先申報者先于后申報者。先后順序按證券交易所主機接受申報的時間確定。User_stockTable在正常情況下,買隊列的第一筆(報價最高)的報價一定小于賣不發(fā)生撮合。一旦買賣隊列隊列的第一筆(最低報價)的報價。此時不發(fā)生撮合。一旦買賣隊列的忒格發(fā)生^*甲交叉,如圖2.3.1所示,發(fā)生交叉的那部分就會進行撮合。Public:而事實上,由于每一筆新來的單子進入數(shù)列后都會觸發(fā)一次比較,所以每次觸發(fā)撮合都是由新單子促成的。稱為“來一筆撮合一次”,

也就是連續(xù)競價。b圖2.3.1連續(xù)競價算法描述:b首先設(shè)定QueueStruct結(jié)構(gòu)為元素的買賣兩個隊列BuyQueue和SellQueue。為了盡可能的提高效率,減少資源占用,我們用靜態(tài)數(shù)組構(gòu)建這兩個隊列。其中BuyQueue是時間優(yōu)先、買價降序排序,而SellQueue是時間優(yōu)先、賣價升序排序,在連續(xù)競價條件下,可以保證BuyQueue[0]的price小于SellQueue[0]的price。連續(xù)競價算法如下:)接收一個新單子newlist,判斷newlist是買單還是賣單;如果是買單,則轉(zhuǎn)2,如果是賣單,則轉(zhuǎn)B;)取賣單隊列頭SellQueue[0],ifSellQueue[0].price>,利用插入排序?qū)ewlist插入到買隊列BuyQueue中,轉(zhuǎn)1;)ifSellQueue[0].count>,newlist完全撮合,SellQueue[0].count=SellQueue[0].count―,轉(zhuǎn)2;)ifSellQueue[0].count<=,SellQueue[0]撮合,并將SellQueue[0]從SellQueue隊列中刪除,=[0].count,轉(zhuǎn)2;)取買單隊列頭BuyQueue[0],if利用插入排序?qū)ewlist插BuyQueue[0].price<,入到賣隊列BuyQueue中,轉(zhuǎn)1;)ifBuyQueue[0].count>,newlist完全撮合,BuyQueue[0].count=BuyQueue[0].count—,轉(zhuǎn)1;)ifBuyQueue[0].count<=,)BuyQueue[0]撮合,并將BuyQueue[0]從BuyQueue隊列中刪除,=[0].count,轉(zhuǎn)5;如下面流程圖5.2.2所示:利用插入排序?qū)ewlist插uyQueue-Jn置-_-葺洲亨-slaeueceu/CDs.Iwg峰冒ge二

,部黑a-\苛H)}-\\瑚用語^se^aFn鷺pr-ce:BuyQ\-L一/M盅41一--屋威>果蚩*伽膏源粵伽■__■mso^l!§s^0ol苛H)}mH松mD!s-瀏m0>Moo@tlyowls?麗\汁思41?3?2?25.2.2集合競價集合競價是指對所有有效委托進行集中處理,深、滬兩市的集合競價時間為交易日上午9:15至9:25。集合競價原則:凡是高于開盤價的買單一定成交;凡是低于開盤價的賣單一定成交;凡是高于開盤價的賣單一定不成交;凡是低于開盤價的買單一定不成交;集合競價分四步完成:第一步:確定有效委托在有漲跌幅限制的情況下,有效委托是這樣確定的:根據(jù)該只證券上一交易日收盤價以及確定的漲跌幅度來計算當(dāng)日的最高限價、最低限價。有效價格范圍就是該只證券最高限價、最低限價之間的所有價位。限價超出此范圍的委托為無效委托,系統(tǒng)作自動撤單處理。第二步:系統(tǒng)根據(jù)競價規(guī)則自動確定集合競價的成交價,這個價格就是當(dāng)日的開盤價,所有高于開盤價的買盤和所有低開開盤價的賣盤均以此價格成交,集合競價的成交價確定原則是:以此價格成交,能夠得到最大成交量。第三步:集中撮合處理所有的買委托按照委托限價由高到低的順序排列,限價相同者按照進入系統(tǒng)的時間先后排列;所有賣委托按委托限價由低到高的順序排列,限價相同者按照進入系統(tǒng)的時間先后排列。依序逐筆將排在前面的買委托與賣委托配對成交,即按照”價格優(yōu)先,同等價格下時間優(yōu)先”的成交順序依次成交,直至成交條件不滿足為止,即不存在限價高于等于成交價的叫買委托、或不存在限價低于等于成交價的叫賣委托。所有成交都以同一成交價成交。這同一成交價成交的買賣單一般量都是很大的,如圖3.2.3所示

圖3.2.3所示第四步:行情揭示:)如該只證券的成交量為零,則將成交價位揭示為開盤價、最近成交價、最高價、最低價,并揭示出成交量、成交金額。)剩余有效委托中,實際的最高叫買價揭示為叫買揭示價,若最高叫買價不存在,則叫買揭示價揭示為空;實際的最低叫賣價揭示為叫賣揭示價,若最低叫賣價不存在,則叫賣揭示價揭示為空。集合競價中未能成交的委托,自動進入連續(xù)競價。按照這樣的原則和要求,我們設(shè)計了如下的集合競價撮合算法。如圖3.2.4所示。BuyQueue-Jse=Queue.f斗甌->甘容m蒲斗既->'m'^Mm%、」煎ir'lr'OJVI島血=詰uyQuein胄陳皿BO.6L杰BuynBuyBuyQueueo.prQerse=Queueo.pr-ceBuyQueue三.pr-ce,se=Queuem.pr-ce*=票源岫uy.coune=.couni一++klla-se」Buy。bounlrBuy.coun二BuyoounllBuy.coun+BuyQueue三.counr善帶uy.counrse-.couni斗睇《->渤e=Queue三.price」?ttm-^Mm¥uy.couni?Je=QueuemlEH)}即Wueueok^'=楫^0>1|客業(yè)0」+■土kllrue」se=lbounlrse=.coun二ftounNse=.coun+se=Queue=se=QueueFCOLnrr斗睇-->^se=Queueu,二.pr-ce+BuyQueueLJ.pnm^Mm^-e--l.couni斗甌->誘^。3^=^/+8履。1|客當(dāng),二.20'^2」

?ttm^Mm¥uyl.couni?iBuyl.couni,se=l.cou^斗命《->誘e=Queue三.pr-ce+BuyQueuem^Mm^e=.couniL斗甌->^uyQueue三.pr一敏m'^Mm^e--l.couni斗甌->博,ueue三.pr一敏

爵圈恤沸e--.counifa-se雷uyl.counrse=.couni斗wi^e=Queue三.pr一敏m.?

圈恤詰uyloouni集合競價算法描述:和連續(xù)競價一樣,首先設(shè)定QueueStruct結(jié)構(gòu)為元素的買賣兩個隊列BuyQueue和SellQueue。為了盡可能的提高效率,減少資源占用,我們用靜態(tài)數(shù)組構(gòu)建這兩個隊列。其中BuyQueue是時間優(yōu)先、買價降序排序,而SellQueue是時間優(yōu)先、賣價升序排序。在開市到開盤這段時間內(nèi),買賣單已經(jīng)分別進入了買賣隊列內(nèi)排好了序。一旦宣布開盤,則觸發(fā)集合撮合,如下:判斷兩隊列是否都不為空,如是,轉(zhuǎn)2;如否,轉(zhuǎn)21;判斷BuyQueue[0].prince與SellQueue[0].prince之差,如大于等于0,轉(zhuǎn)3:如小于0,轉(zhuǎn)21;定義inti=j=0;M、N分別為買賣兩隊列非空元素的個數(shù);BOOLk;QueueStructBuy=BuyQueue[0];Sell=SellQueue[0];Buy1;Sell1;轉(zhuǎn)4;判斷BuyQueue[i].prince與SellQueue[j].prince之差,如大于等于0,轉(zhuǎn)5:如小于0,轉(zhuǎn)14;判斷與之差,如大于0,轉(zhuǎn)6;如小于等于0,轉(zhuǎn)9;j++;k=true;=;=+SellQueue[iSellQueue].count;轉(zhuǎn)7;判斷j是否小于N,如是,轉(zhuǎn)4;如不是,轉(zhuǎn)8;開盤價為BuyQueue[i].price;總成交量為;統(tǒng)計成交數(shù)據(jù)及回報,并返回;i++;k=false;=;=+BuyQueue[i].count;轉(zhuǎn)10;判斷i是否小于M,如是,轉(zhuǎn)4;如不是,轉(zhuǎn)11;判斷與之差,如小于0,轉(zhuǎn)12;如等于0,轉(zhuǎn)13;開盤價為SellQueue[j].price;總成交量為;統(tǒng)計成交數(shù)據(jù)及回報,并返回;開盤價為(SellQueue[j].price+BuyQueue[i-1].price)/2;總成交量為;統(tǒng)計成交數(shù)據(jù)及回報,并返回;判斷k值,如為true,轉(zhuǎn)15;如為false,轉(zhuǎn)18;判斷與之差,如大于0,轉(zhuǎn)16;如小于0,轉(zhuǎn)17;開盤價為BuyQueue[i].price;總成交量為;統(tǒng)計成交數(shù)據(jù)及回報,并返回;(SellQueue[j-1].price+BuyQueue[i-1].price)/2;總成交量為;統(tǒng)計成交數(shù)據(jù)及回報,并返回;判斷與之差,如小于0,轉(zhuǎn)19;如等于0,轉(zhuǎn)20;開盤價為SellQueue[j].price;總成交量為;統(tǒng)計成交數(shù)據(jù)及回報,并返回;開盤價為(SellQueue[j].price+BuyQueue[i-1].price)/2;總成交量為;統(tǒng)計成交數(shù)據(jù)及回報,并返回;開盤價為昨日收盤價,成交量為0;保留所有數(shù)據(jù)至開盤進入連續(xù)競價撮合;5.2.3買賣隊列排序上面我們介紹了撮合算法的核心部分,但實際上在撮合前后都要對兩個買賣隊列進行一定的插入和排列處理,這在整個算法中也是很重要的部分。下面我們就來具體介紹一下。對所有的排列和插入我們考慮了效率問題之后,最后統(tǒng)一使用了二分插入排序法。在單子進入隊列時,我們首先統(tǒng)計出當(dāng)前隊列中的非空數(shù)據(jù)個數(shù),然后再通過新單子與當(dāng)前隊列中間值的價格比較,確定新單子在隊列的前半部分還是后半部分,然后再取該區(qū)域中間值與之比較,直到確定新單子應(yīng)在的位置。如下列代碼所示:intlow=0;inthigh=N-1;rice)high=m-1;elselow=m+1;}for(inti=N-1;i>=high+1;--i){SellQueue[i+1]=SellQueue[i];}SellQueue[high+1]=*newlist;這是賣隊列的排序,對于買隊列的排序與之相似,只是價格排列是由高到底。在這里不再贅述。這種插入排序方法完全符合了撮合算法中價格優(yōu)先、時間優(yōu)先的要求,而且效率也是比較高的。在集合競價前和連續(xù)競價后進行的插入排序都是這樣進行的,而在集合競價撮合之后,對兩隊列的重新排列,我們首先使用了memset函數(shù)將前面已全部成交的t個元素清空,然后將t到N(原總非空元素個數(shù))前移t位。如下列代碼所示:for(intp=0;*t<*N;p++,*t++){QueueStructtemp;temp二Queue[*t];Queue[*t]=Queue[p];Queue[p]=temp;}5.2.4撮合算法的運行機制在交易所正常運行時,一天內(nèi)分為開市、開盤、休市、復(fù)開、收市等5個步驟。開市:每天上午9:15開市。這時候,股民可以通過券商向交易所遞單。同一只股票的買賣單開始分別進入這只股票的買賣隊列中,但并不進行撮合。該過程一直持續(xù)到9:25。開盤:每天上午9:30正式開盤。9:25-9:30為盤前處理,這段時間也就是集合競價撮合算法運行的時間。9:25,買賣兩隊列開市不再接收新的單子。新的單子這時都放在緩沖區(qū)中,直到兩隊列運行完整個集合競價算法后開市重新進單時,再依序?qū)巫訌木彺鎱^(qū)取出讀入買賣隊列進行連續(xù)競價的撮合。買賣隊列于9:25開始集合競價,運算完畢,得出開盤價等所有統(tǒng)計數(shù)據(jù)并發(fā)布行情以及發(fā)送完所有回報之后,重新接收單子進入該日正常交易中,使用連續(xù)競價算法進行撮合。休市:每天上午11:00休市。此時,所有的券商不再接受買賣單子,也不再給交易所遞單。交易所將此前已經(jīng)收到的所有單子撮合之后處于休息階段。并進行各種當(dāng)日前市盤點。復(fù)開:每天下午13:30復(fù)開。此時,券商開市接收用戶的遞單,并將其送交交易所。交易所重新開市進入連續(xù)競價撮合收市:每天下午15:00收市。此時交易所不再接受任何單子,準(zhǔn)時進行最后一筆單子的撮合之后,關(guān)閉撮合線程。將最后得到的收盤價等數(shù)據(jù)統(tǒng)計發(fā)送完之后,當(dāng)天的所有工作全部結(jié)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論