如何修复 api 密钥和 url 以获取信息并使 pandas 库在该项目的图表上绘制 3 个图[关闭]

问题描述 投票:0回答:0

他让我用 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 
python pandas python-requests
© www.soinside.com 2019 - 2024. All rights reserved.