[原创]python程序设计_maxkern

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.000.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)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值