游戏
游戏核心功能
股票价格生成:股票价格通过正弦函数生成,并添加随机噪音,模拟真实市场的波动性。
交易操作:玩家可以买入或卖出股票,每次交易会扣除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"总资产: