python程序设计_模拟交易系统(文章待更新)
import random;
import math;
import string;
import os;
stockPack={'AMD':90,'NVDA':500,'TSLA':700}#字典实现股票库
class stock:#股票类
def __init__(self,ID,price):
self.ID=ID#股票ID
self.price=price#股票价格
class Assets:#用户账户
def __init__(self,level):#level是资产等级,每一级+10000
self.availableAssets=10000*level#初始可用资产为10000*level
self.holdAssets=0#初始持仓资产为0
self.StockStore={}#持仓的stock库
#添加股票
def addStock(self,stock,Amount):
if stock.ID in self.StockStore:
self.StockStore[stock.ID]+=Amount
else:
self.StockStore[stock.ID]=Amount
self.availableAssets-=stock.price*Amount
self.holdAssets+=stock.price*Amount
#减少股票
def delStock(self,stock,Amount):
self.StockStore[stock.ID]-=Amount
self.availableAssets+=stock.price*Amount
self.holdAssets-=stock.price*Amount
#获取最新的stock价格,并更新持仓资产
def refresh(self,stock):
for ID,amount in self.StockStore.items():#在持仓股中寻找stock
if stock.ID == ID:
self.holdAssets=stock.price*amount
#显示目前资产状况
def showMeTheMoney(self):
print("当前资产:",self.availableAssets+self.holdAssets)
print("当前可用资产:",self.availableAssets)
print("当前持仓资产:",self.holdAssets)
#显示目前持仓状况
def showMeTheStore(self):
for ID,amount in self.StockStore.items():
print("股票:",ID,"持仓:",amount)
#合肥工业大学_王镇远
#股价绝对上涨
def priceUp(stock,level):#level用于表示涨跌幅程度
upRate=round((random.uniform(0.00, 0.01*level)),2)#限定精度为0.01,涨幅范围在0.00到0.10之间
print("当前涨幅:",upRate)
stock.price*=1+upRate
print("当前股价:",round(stock.price,2))
#股价绝对下跌
def priceDown(stock,level):
downRate=round((random.uniform(0.00, 0.01*level)),2)
print("当前跌幅:",downRate)
stock.price*=1-downRate
print("当前股价:",round(stock.price,2))
#股价波动
def priceWave(stock,level):
Rate=round((random.uniform(-0.01*level, 0.01*level)),2)
print("当前涨跌幅度:",Rate)
stock.price*=1+Rate
print("当前股价:",round(stock.price,2))
#买入股票
def buying(assets,stock,amount):
print("当前买入:",stock.ID,"买入价格:",stock.price,"买入数量:",amount)
if assets.availableAssets<stock.price*amount:
print("资金余额不足")
else:
print("全部成交")
assets.addStock(stock,amount)
#卖出股票
def selling(assets,stock,amount):
print("当前卖出:",stock.ID,"卖出价格:",stock.price,"卖出数量:",amount)
if assets.StockStore[stock.ID]<amount:
print("持仓不足")
else:
print("全部成交")
assets.delStock(stock,amount)
#主程序 只支持一种股票交易
level=int(input("输入初始资产level:(每增加1级资产增加10000)"))
A=Assets(level)
#随机获取一个股票名和股价赋给stock1
stock1=stock(random.choice(list(stockPack.keys())),random.choice(list(stockPack.values())))
while True:
#os.system('cls')
print("当前市场:",stock1.ID,stock1.price)
A.refresh(stock1)
mode=int(input("1.显示当前资产及持仓 2.买入股票 3.卖出股票 4.退出程序"))
if mode==1:
A.showMeTheStore()
A.showMeTheMoney()
continue #查看资产持仓时不影响股价
elif mode==2:
amount=int(input("输入买入数量:"))
buying(A,stock1,amount)
elif mode==3:
amount=int(input("输入卖出数量:"))
selling(A,stock1,amount)
elif mode==4:
exit(0)
else:
print("输入错误")
continue
priceWave(stock1,10)