小组项目第三周:后端数据——模拟炒股系统
个人工作
本周实现了一个额外功能:模拟炒股系统。
每个论坛用户拥有一个模拟炒股用户,可以实现买入、卖出委托,由程序后台实时获取股票价格,判断委托是否可以成交。
在mock_exchange.py中,定义了四个类:
Owned_Stock:用户持有股票类,继承自之前写的Stock类,每个owned_stock对象包含了用户持有的某一支股票的具体信息,包括总余额、可用余额、冻结余额、成本价、市价、盈亏、盈亏比例、市值等信息。
Deal:成交记录类,一个deal对象是一条成交记录,包含交易日期、交易时间、股票代码、股票名称、操作(买入/卖出)、成交数量、成交均价等信息。
Commission:委托记录类,一个commission记录是一条委托记录,包含委托日期、委托时间、股票代码、股票名称、操作、备注、委托数量、委托价格等信息。
MockUser:模拟炒股用户类,包含用户的总资产、现金、持仓列表、成交列表、委托列表。操作通过MockUser的若干方法实现。create_commission方法为创建委托,cancel_commission方法为撤销委托,trade方法为执行委托。
个人总结
模拟股票系统有两个难点,一个是数据处理,一个是实时处理委托。
其一,股票交易的信息很多,而且规则复杂。程序必须判断用户的输入是否符合规定,还要定时自动更改用户信息,例如当天买入的股票是冻结的,必须要到第二天才能出售,这就要求程序要时刻获取系统时间作出相应的操作。
其二,用户提交委托后,程序必须时刻获取股票价格,判断委托是否能够成交。我的解决方法是多线程。一条线程是用户的操作,另一条线程是交易,循环判断每个用户的委托是否能够成交