艾歐踢論壇

標題: 台達電(2308) k line & MACD [打印本頁]

作者: admin    時間: 2023-4-13 22:59
標題: 台達電(2308) k line & MACD
  1. from datetime import timedelta, datetime
  2. import pandas as pd
  3. import yfinance as yf
  4. import matplotlib
  5. import mplfinance as mpf
  6. import talib as ta
  7. import matplotlib.pyplot as plt

  8. plt.rcParams['font.family'] = 'sans-serif'
  9. plt.rcParams['font.sans-serif'] = 'Noto Sans TC'
  10. plt.rcParams['axes.unicode_minus'] = False
  11. ticker_name = '台達電'
  12. stock_list = ['2308.TW']
  13. delta = timedelta(days=-300)  #
  14. today = datetime.now()
  15. Data = yf.download(stock_list, today + delta)
  16. # Setting date as index
  17. Data["Date"] = Data.index
  18. # Giving column names
  19. Data = Data[["Date", "Open", "High", "Low", "Close", "Adj Close", "Volume"]]
  20. # Resetting the index values
  21. Data.reset_index(drop=True, inplace=True)
  22. # getting the first 5 rows of the data
  23. print(Data.head())
  24. df = pd.DataFrame(Data, columns=['Date', 'Volume', 'Open', 'High', 'Low', 'Close'] )
  25. df['Date'] = pd.to_datetime(df['Date'], format='%Y-%m-%d')
  26. df.index = pd.DatetimeIndex(df['Date'])
  27. # trim volume to avoid exponential form
  28. Data['Volume'] = Data['Volume'] / 10
  29. mc = mpf.make_marketcolors(up='r',
  30.                            down='g',
  31.                            edge='',
  32.                            wick='inherit',
  33.                            volume='inherit')

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

  35. # macd
  36. Data["macd"], Data["macd_signal"], Data["macd_hist"] = ta.MACD(Data['Close'])
  37. # macd panel
  38. colors = ['g' if v >= 0 else 'r' for v in Data["macd_hist"]]
  39. macd_plot = mpf.make_addplot(Data["macd"], panel=1, color='fuchsia', title="MACD")
  40. macd_hist_plot = mpf.make_addplot(Data["macd_hist"], type='bar', panel=1, color=colors)  
  41. macd_signal_plot = mpf.make_addplot(Data["macd_signal"], panel=1, color='b')
  42. # plot
  43. plots = [macd_plot, macd_signal_plot, macd_hist_plot]
  44. 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')








歡迎光臨 艾歐踢論壇 (http://www.iot.idv.tw/ucenter/) Powered by Discuz! X3.2