他让我用 Python 修复这个项目,修复 api 密钥和 url,并让 pandas 库在图形上绘制 3 个图,我需要帮助修复这个项目,因为我不擅长使用 pandas 和 requect
mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm Mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm Mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm Mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm Mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm Mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm Mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
import requests
import pandas as pd
import mplfinance as mpf
symbol = "AAPL" # Replace this with your stock ticker
api_key = "EI5BHOU6888SJP3U"
days_of_data = 30
# Get OHLC data
url = f"https://www.alphavantage.co/query?function=TIME_SERIES_DAILY&symbol={symbol}&outputsize=compact&apikey={api_key}"
r = requests.get(url)
data = r.json()
df = pd.DataFrame(data['Time Series (Daily)']).T
df = df.astype(float)
df.index = pd.to_datetime(df.index)
df = df.iloc[:days_of_data] # Replace days_of_data with your desired data range
df = df.rename(columns={'1. open': 'Open', '2. high': 'High', '3. low': 'Low', '4. close': 'Close'})
# Add EMA to the candlestick chart
df['ema_20'] = df['Close'].ewm(span=20, adjust=False).mean()
# Get ADX data
url_1 = f"https://www.alphavantage.co/query?function=ADX&symbol={symbol}&interval=daily&time_period=14&apikey={api_key}"
ADX_r = requests.get(url_1)
if ADX_r.status_code != 200:
print(f"Error retrieving ADX data: {ADX_r.status_code}")
ADX_df = pd.DataFrame()
else:
ADX_data = ADX_r.json()
try:
ADX_df = pd.DataFrame.from_dict(ADX_data['ADX'])
except KeyError:
print("ADX data not found")
ADX_df = pd.DataFrame()
# Check for buying/selling signals
if not ADX_df.empty and ADX_df.iloc[-1]['ADX'] > 30 and ADX_df.ADX.diff().iloc[-1] > 0:
if df.iloc[-1]['Close'] > df['ema_20'].iloc[-1] and df.iloc[-2]['Close'] <= df['ema_20'].iloc[-2]: # Bullish EMA crossover
# Plot buy stop
mpf.plot(df, type='candle', mav=(20), title=symbol + ' Stock Price with Buy Alert', ylabel='Price ($)', style='charles',
volume=False, addplot=[mpf.make_addplot(df.High.iloc[-2], type='scatter', marker='^', color='b')])
print('Bullish EMA crossover and ADX > 30. Buy alert plotted at', df.High[-2])
elif df.iloc[-1]['Close'] < df['ema_20'].iloc[-1] and df.iloc[-2]['Close'] >= df['ema_20'].iloc[-2]: # Bearish EMA crossover
# Plot sell stop
mpf.plot(df, type='candle', mav=(20), title=symbol + ' Stock Price with Sell Alert', ylabel='Price ($)', style='charles',
volume=False, addplot=[mpf.make_addplot(df.Low.iloc[-2], type='scatter', marker='^', color='r')])
print('Bearish EMA crossover and ADX > 30. Sell alert plotted at', df.Low[-2])
else:
print('ADX > 30 but no buying/selling signal')
elif not ADX_df.empty and ADX_df.iloc[-1]['ADX'] < 30:
print('ADX < 30. No buying/selling signal')
else:
print('ADX not rising. No buying/selling signal')
# Plot OHLC chart with ADX on a separate panel
if not ADX_df.empty:
apds = [mpf.make_addplot(ADX_df['ADX'], panel=2, ylabel='ADX', color='purple')]
mpf.plot(df, type='candle', mav=(20), title=symbol + ' Stock Price with ADX', ylabel='Price ($)', style='charles',
volume=False, addplot=apds, panel_ratios=(3, 1))
else:
mpf.plot(df, type='candle', mav=(20), title=symbol + ' Stock Price', ylabel='Price ($)', style='charles',
volume=False)
Tried artificial intelligence but failed