Please correct this code for stock market prediction modify this code as im getting a blank plot in the below code (The plot shows nothing) correct everywhere it need to be changed:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import datetime
from sklearn.preprocessing import MinMaxScaler
from keras.models import Sequential
from keras.layers import Dense, LSTM, Dropout
import yfinance as yf

# Download historical stock data
stock_symbol = 'AAPL'  # Replace this with the desired stock symbol
start_date = '2000-01-01'  # Replace this with the desired start date
end_date = datetime.datetime.today().strftime('%Y-%m-%d')  # Today's date

stock_data = yf.download(stock_symbol, start=start_date, end=end_date)

stock_data['Close'].plot(title='AAPL Closing Price', figsize=(15,6))
plt.show()


# Reset the index and use the 'Date' column as the index
stock_data.reset_index(inplace=True)
stock_data.set_index('Date', inplace=True)

# Calculate the Average True Range and Super Trend
price_high_low = stock_data['High'] - stock_data['Low']
price_high_close = abs(stock_data['High'] - stock_data['Close'].shift())
price_low_close = abs(stock_data['Low'] - stock_data['Close'].shift())
tr = np.maximum(price_high_low, np.maximum(price_high_close, price_low_close))
atr = tr.rolling(window=14).mean()


multiplier = 3
stock_data['SuperTrend_Up'] = (stock_data['High'] + stock_data['Low']) / 2 - multiplier * atr
stock_data['SuperTrend_Down'] = (stock_data['High'] + stock_data['Low']) / 2 + multiplier * atr

super_trend = []
for i in range(len(stock_data)):
    if i == 0:
        super_trend.append(stock_data['Close'].iloc[i])
    elif stock_data['Close'].iloc[i] > super_trend[i - 1]:
        super_trend.append(stock_data['SuperTrend_Up'].iloc[i])
    else:
        super_trend.append(stock_data['SuperTrend_Down'].iloc[i])

stock_data['SuperTrend'] = super_trend

stock_data.info()

# Remove rows with missing data and select the 'Close' and 'SuperTrend' columns for training and testing
stock_data = stock_data.dropna()
data = stock_data[['Close', 'SuperTrend']].values
stock_data.head()

# Scale the data
scaler = MinMaxScaler(feature_range=(0, 1))
scaled_data = scaler.fit_transform(data)

# Choose number of time steps (e.g., 60 days) and split into training and testing datasets
time_steps = 60
train_data = scaled_data[:len(stock_data)-time_steps-1]
test_data = scaled_data[len(stock_data)-time_steps-1:]

# Prepare the input and output for the LSTM model
x_train = []
y_train = []
x_test = []
y_test = []

for i in range(time_steps, len(train_data)):
    x_train.append(train_data[i-time_steps:i])
    y_train.append(train_data[i, 0])

for i in range(time_steps, len(test_data)):
    x_test.append(test_data[i-time_steps:i])
    y_test.append(test_data[i, 0])

x_train, y_train = np.array(x_train), np.array(y_train)
x_test, y_test = np.array(x_test), np.array(y_test)

# Build the LSTM model
model = Sequential()
model.add(LSTM(units=50, return_sequences=True, input_shape=(x_train.shape[1], 2)))
model.add(Dropout(0.2))
model.add(LSTM(units=50))
model.add(Dropout(0.2))
model.add(Dense(1))

# Compile and train the LSTM model
model.compile(optimizer='adam', loss='mean_squared_error')
model.fit(x_train, y_train, epochs=100, batch_size=32)

# Perform predictions using the LSTM model
predicted_prices = model.predict(x_test)
predicted_prices = np.concatenate((predicted_prices, x_test[:, -1, 1].reshape(-1, 1)), axis=1)
predicted_prices = scaler.inverse_transform(predicted_prices)[:, 0]

# Create a dataframe for actual prices and predicted prices
actual_prices = pd.DataFrame(stock_data[len(stock_data) - len(y_test):]['Close'])
actual_prices['predicted'] = predicted_prices
actual_prices.columns = ['Actual', 'Predicted']




# Plot the actual vs predicted closing prices
plt.figure(figsize=(14, 6))
plt.plot(actual_prices['Actual'].values, color='blue', label='Actual Stock Price')
plt.plot(actual_prices['Predicted'].values, color='red', label='Predicted Stock Price')
plt.title('Stock Price Prediction')
plt.xlabel('Time')
plt.ylabel('Stock Price')
plt.legend()
plt.show()