模拟炒股小游戏

游戏

游戏核心功能

股票价格生成:股票价格通过正弦函数生成,并添加随机噪音,模拟真实市场的波动性。
交易操作:玩家可以买入或卖出股票,每次交易会扣除0.5%的手续费。
交易日推进:玩家可以手动进入下一个交易日,股票价格会更新,总资产也会随之变化。
交易历史记录:游戏会记录最近10笔交易,方便玩家回顾操作。

游戏界面

左侧面板:

状态显示:显示当前交易日、股票价格、现金余额、持有股票数量和总资产。
交易输入框:玩家可以输入要买入或卖出的股票数量。
交易按钮:提供“买入股票”和“卖出股票”按钮,执行交易操作。
下一个交易日按钮:手动进入下一个交易日。
交易历史:显示最近10笔交易的详细信息。

右侧面板:

股票价格图表:显示最近20天的股票价格走势。
总资产图表:显示最近20天的总资产变化。

游戏逻辑

初始资金:玩家初始拥有100元现金,没有股票。
股票价格波动:股票价格每天根据正弦函数和随机噪音更新,模拟市场波动。
交易费用:每次交易(买入或卖出)都会扣除0.5%的手续费。
总资产计算:总资产包括现金和持有的股票市值。

界面

在这里插入图片描述

代码

import random
import matplotlib.pyplot as plt
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
from tkinter import Tk, Label, Button, Entry, Frame, ttk
import numpy as np

class StockTradingGame:
    def __init__(self):
        self.cash = 100.00  # 初始资金
        self.shares = 0.00  # 持有的股票数量
        self.stock_price = self.generate_stock_price(0)  # 初始股票价格
        self.day = 1  # 交易日
        self.stock_prices = [self.stock_price]  # 记录最近20天的股票价格
        self.total_assets = [self.cash]  # 记录最近20天的总资产
        self.transaction_history = []  # 记录最近10笔交易

    def generate_stock_price(self, day):
        # 使用正弦函数生成股票价格,并添加正负5元的随机噪音
        base_price = 50 + 30 * np.sin(day * 0.1)  # 正弦函数基础价格
        noise = random.uniform(-5, 5)  # 随机噪音
        return round(base_price + noise, 2)

    def update_stock_price(self):
        # 更新股票价格
        self.stock_price = self.generate_stock_price(self.day)
        self.stock_prices.append(self.stock_price)
        if len(self.stock_prices) > 20:
            self.stock_prices.pop(0)

    def calculate_transaction_fee(self, amount):
        # 计算交易费用(0.5%)
        return round(amount * self.stock_price * 0.005, 2)

    def display_status(self):
        # 显示当前状态
        status = (
            f"=== 第 {
     self.day} 个交易日 ===\n"
            f"当前股票价格: {
     self.stock_price:.2f} 元\n"
            f"现金: {
     self.cash:.2f} 元\n"
            f"持有股票: {
     self.shares:.2f}\n"
            f"总资产: 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值