admin 發表於 2023-4-13 22:59:11

台達電(2308) k line & MACD

from datetime import timedelta, datetime
import pandas as pd
import yfinance as yf
import matplotlib
import mplfinance as mpf
import talib as ta
import matplotlib.pyplot as plt

plt.rcParams['font.family'] = 'sans-serif'
plt.rcParams['font.sans-serif'] = 'Noto Sans TC'
plt.rcParams['axes.unicode_minus'] = False
ticker_name = '台達電'
stock_list = ['2308.TW']
delta = timedelta(days=-300)#
today = datetime.now()
Data = yf.download(stock_list, today + delta)
# Setting date as index
Data["Date"] = Data.index
# Giving column names
Data = Data[["Date", "Open", "High", "Low", "Close", "Adj Close", "Volume"]]
# Resetting the index values
Data.reset_index(drop=True, inplace=True)
# getting the first 5 rows of the data
print(Data.head())
df = pd.DataFrame(Data, columns=['Date', 'Volume', 'Open', 'High', 'Low', 'Close'] )
df['Date'] = pd.to_datetime(df['Date'], format='%Y-%m-%d')
df.index = pd.DatetimeIndex(df['Date'])
# trim volume to avoid exponential form
Data['Volume'] = Data['Volume'] / 10
mc = mpf.make_marketcolors(up='r',
                           down='g',
                           edge='',
                           wick='inherit',
                           volume='inherit')

s = mpf.make_mpf_style(base_mpf_style='yahoo', marketcolors=mc, rc={'font.sans-serif': 'Noto Sans TC'})

# macd
Data["macd"], Data["macd_signal"], Data["macd_hist"] = ta.MACD(Data['Close'])
# macd panel
colors = ['g' if v >= 0 else 'r' for v in Data["macd_hist"]]
macd_plot = mpf.make_addplot(Data["macd"], panel=1, color='fuchsia', title="MACD")
macd_hist_plot = mpf.make_addplot(Data["macd_hist"], type='bar', panel=1, color=colors)
macd_signal_plot = mpf.make_addplot(Data["macd_signal"], panel=1, color='b')
# plot
plots =
mpf.plot(df, type='candle', style=s, mav=(5,20,60), figscale=1.5,addplot=plots, title="台達電", volume=True, volume_panel=2, ylabel='', ylabel_lower='Shares')
Q1)中文亂碼關鍵:A1) rc={'font.sans-serif': 'Noto Sans TC'}Q2)"TypeError: Expect data.index as DatetimeIndex". ?
A2) df.index = pd.DatetimeIndex(df['Date'])

data['Date'] = pd.to_datetime(data['Date'])
data = data.set_index('Date')


頁: [1]
查看完整版本: 台達電(2308) k line & MACD