在這裡我們要開發一個融資融券平台,採用Java技術,用例驅動(TDD)開發模式進行開發。
首先,我們需要充分理解我們要做的系統。由於通常系統都比較複雜,因此我們需要階段來實施,在第一階段,先實現一個最小系統,然後逐漸加入新的功能,這就是迭代式漸進式開發的核心精神。
我們第一步是做一個簡單的融資平台,具體業務模式為:使用者通過在證券公司系統中開戶,可以向證券公司借錢在T日購買股票,然後在T+1日將股票賣出,通過股票價差來獲得盈利。然後使用者把線還給證券公司,並支付一定的手續約。
商務程序看起來很簡單,為了討論問題方便,我們首先定義如下術語:
使用者 User
金幣賬戶 Jinbi
金幣是系統的虛擬貨幣,與人民幣的匯率初始設定為1:1,根據國家規定,金幣賬戶只能進行儲值,不能取回現金。在交易系統中,金幣可以用來支付交易手續約。使用者可以通過財付通和快錢來為金幣賬戶儲值。
錢包賬戶 purse
錢包賬戶中儲存使用者的現金,可以取現。但是需要經過審批,進行人工轉賬。
實盤 capital order
可以實際融資購買股票。
清算 clearing
賣出實盤中所有股票
結算 settlement
收取交易手續約,每支股票買賣的印花稅、過戶費、傭金後,將資金返回給使用者錢包賬戶的過程。
掛單
掛單是指使用者或系統直接在證交所申請股票交易的過程。掛單分為市價掛單、委託價掛單、條件掛單,市價掛單為按照當前最新價掛單買入或賣出。委託價掛單是使用者指定價格,到證交所掛牌交易。條件掛單在當前系統中主要用於止損,就是以止損價掛條件單。
撤單
撤消已經掛牌交易的請求。在T+1日,系統自動為每個使用者做條件掛單(用於止損)。當使用者要進行市價交易或委託價交易時,系統先撤消原來的條件單,再將目前使用者的交易請求到證交所掛單交易。
止損點
當使用者股價交易損失達到多少後,系統將自動以市價對股票進行交易。止損點目前為8%和12%兩種。
金幣匯率
金幣與人民幣之間的匯率,初始設定為1:1。
系統賬戶
系統賬戶為我的賬戶,是我們系統的資金池。用於提出實盤申請時,由這個賬戶借錢給使用者進行股票交易。這個賬戶是通過向財道或金融機構貸款得到,需要按賬期支付借款方利息。
股票賬戶
我們為使用者開設的股票交易賬戶,使用者股票交易申請,先將錢匯入此賬戶,然後進行真實股票交易。
具體需求可以通過應用情境來描述:
使用者註冊
金幣賬戶儲值
錢包賬戶儲值
錢包賬戶取現
實盤申請
T日購買股票
T+1日賣出股票
逾時清算
止損清算
未賣出股票處理
使用者結算