PYTHONでAMAZON株価取得、ポリンジャーバンド・MACD・RSI付加

#①

import mplfinance as mpf

from pandas_datareader import data

import warnings

warnings.simplefilter('ignore')


start = '2022-03-20'

end = '2022-10-19'

df = data.DataReader('AMZN','yahoo', start, end)


mpf.plot(df, type='candle', figsize=(20,10), style='yahoo', volume=True) 



#②

#ポリンジャーバンド用(株:売られすぎ、買われすぎ)のDF追加

#25日の移動平均、標準偏差2(0:単純移動平均、1:指数移動平均、2:加重移動平均)

import talib as ta

df["upper"], df["middle"], df["lower"] = ta.BBANDS(df['Adj Close'], timeperiod=25, nbdevup=2, nbdevdn=2, matype=0)


apds = [mpf.make_addplot(df['upper'],color='g'),  

        mpf.make_addplot(df['middle'],color='b'),

        mpf.make_addplot(df['lower'],color='r')

       ]

mpf.plot(df, type='candle', figsize=(20,10), style='yahoo', volume=True, addplot=apds)


#df.tail()



#③

#MACD用(トレンドを見る指標、0以上:上昇トレンド、0以下:下降トレンド)のDF追加

#MACDの構成:短期の移動平均、長期の移動平均、MACDシグナル

df['macd'], df['macdsignal'], df['macdhist'] = ta.MACD(df['Adj Close'], fastperiod=12, slowperiod=26, signalperiod=9)


apds = [mpf.make_addplot(df['upper'],color='g'),  

        mpf.make_addplot(df['middle'],color='b'),

        mpf.make_addplot(df['lower'],color='r'),

        mpf.make_addplot(df['macdhist'], type='bar', 

                         width=1.0, panel=1, color='gray', alpha=0.5, ylabel='MACD')

       ]


mpf.plot(df, type='candle', figsize=(20,10), style='yahoo', volume=True, addplot=apds, 

          volume_panel=2, panel_ratios=(3,1,1))



#④

#RSI用(株の買われすぎや売られすぎを判断する指標)のDF追加

#20%~30%を下回る:売られすぎ、70%~80%を上回る:買われすぎ

df["RSI"] = ta.RSI(df["Adj Close"], timeperiod=25)


apds = [mpf.make_addplot(df['upper'],color='g'),  

        mpf.make_addplot(df['middle'],color='b'),

        mpf.make_addplot(df['lower'],color='r'),

        mpf.make_addplot(df['macdhist'], type='bar', 

                         width=1.0, panel=1, color='gray', alpha=0.5, ylabel='MACD'),

        mpf.make_addplot(df['RSI'], panel=2, type='line', ylabel='RSI')      

       ]


mpf.plot(df, type='candle', figsize=(20,10), style='yahoo', volume=True, addplot=apds,

       volume_panel=3, panel_ratios=(5,2,2,1)) 




#⑤

#ファイル出力

mpf.plot(df, type='candle', addplot=apds, figsize=(20,10), style='yahoo',

         volume=True, volume_panel=3,panel_ratios=(1,1,1,1), savefig='technical.png')         


コメント

このブログの人気の投稿