Guest User

Untitled

a guest
Sep 16th, 2024
58
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.44 KB | None | 0 0
  1. import random
  2. import os
  3. import matplotlib.pyplot as plt
  4.  
  5. def clear_screen():
  6. os.system('cls' if os.name == 'nt' else 'clear')
  7.  
  8. def calculate_sma(prices, period):
  9. return sum(prices[-period:]) / period
  10.  
  11. def simulate_price_change(stock_price):
  12. return stock_price + random.uniform(-10, 10)
  13.  
  14. def display_menu():
  15. print("** MS-DOS Stock Market Simulator **")
  16. print("---------------------------------")
  17. print("1. Buy Stocks")
  18. print("2. Sell Stocks")
  19. print("3. Check Portfolio")
  20. print("4. View Historical Data")
  21. print("5. Calculate Technical Indicators")
  22. print("6. Quit")
  23.  
  24. def main():
  25. stocks = {
  26. "AAPL": 150,
  27. "GOOGL": 2500,
  28. "AMZN": 3000,
  29. }
  30.  
  31. stock_history = {
  32. "AAPL": [],
  33. "GOOGL": [],
  34. "AMZN": [],
  35. }
  36.  
  37. player_portfolio = {}
  38. player_cash = 10000
  39.  
  40. while True:
  41. clear_screen()
  42. display_menu()
  43. choice = input("Enter your choice: ")
  44.  
  45. if choice == "1":
  46. stock_name = input("Which stock do you want to buy? ")
  47. shares = int(input("How many shares do you want to buy? "))
  48. if stock_name in stocks and player_cash >= stocks[stock_name] * shares:
  49. player_portfolio[stock_name] = player_portfolio.get(stock_name, 0) + shares
  50. player_cash -= stocks[stock_name] * shares
  51. print("Purchase successful!")
  52. else:
  53. print("Insufficient funds or stock not available.")
  54. elif choice == "2":
  55. stock_name = input("Which stock do you want to sell? ")
  56. shares = int(input("How many shares do you want to sell? "))
  57. if stock_name in player_portfolio and player_portfolio[stock_name] >= shares:
  58. player_portfolio[stock_name] -= shares
  59. player_cash += stocks[stock_name] * shares
  60. print("Sale successful!")
  61. else:
  62. print("You don't have enough shares of that stock.")
  63. elif choice == "3":
  64. print("Your Portfolio:")
  65. for stock, shares in player_portfolio.items():
  66. print(f"{stock}: {shares} shares")
  67. print("Your Cash:")
  68. print(player_cash)
  69. elif choice == "4":
  70. stock_name = input("Enter the stock name: ")
  71. if stock_name in stock_history:
  72. plt.plot(stock_history[stock_name])
  73. plt.title(f"Historical Prices for {stock_name}")
  74. plt.xlabel("Days")
  75. plt.ylabel("Price")
  76. plt.show()
  77. else:
  78. print("No historical data available for that stock.")
  79. elif choice == "5":
  80. stock_name = input("Enter the stock name: ")
  81. if stock_name in stock_history:
  82. sma_20 = calculate_sma(stock_history[stock_name], 20)
  83. print(f"20-day SMA for {stock_name}: {sma_20}")
  84. # Calculate other technical indicators as needed
  85. else:
  86. print("No historical data available for that stock.")
  87. elif choice == "6":
  88. break
  89. else:
  90. print("Invalid choice. Please try again.")
  91.  
  92. # Update stock prices and history
  93. for stock in stocks:
  94. stocks[stock] = simulate_price_change(stocks[stock])
  95. stock_history[stock].append(stocks[stock])
  96.  
  97. if __name__ == "__main__":
  98. main()
Advertisement
Add Comment
Please, Sign In to add comment