アンゴウのPython投資でFIREへ

元公務員がPythonと投資を学び、FIRE(早期リタイア)を目指しています。

MENU

PythonでRSIとMACDを表示する方法について

どうもアンゴウです。

 

中々忙しく久しぶりの投稿になります。本日は、PythonでRSIとMACDを表示する方法について方法について説明します。今日もChatGPTにはプログラムの評価をしてもらいます。

 

ちなみに、まだ始める準備ができていない人は↓から

angousan.hatenablog.com

では、いつもどおり先に手っ取り早くコードを知りたい方はこちらから

このコードをコピーしてPythonに貼り付けましょう!


#ライブラリのインポート
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
import datetime
import yfinance as yf
import mplfinance as mpf
import talib

#銘柄コード
A=input("銘柄は(日本の銘柄は.Tを忘れずに):")
B=input("期間は(1y、6mo、1dなどを入力):")
C=input("足(1d・5mなどを入力):")
#------------------------------------------------------------------------------------------------------------------------------#期間とローソク足を指定(日足)
date = yf.download(A , period= B, interval = C)
df = date

#可視化
df.plot()
mpf.plot(df, type="candle",volume=True,figratio=(10,5))

#---------------------------------------------------------------------------------------
# RSI
df['rsi'] = talib.RSI(df['Close'])

# MACD
ema12 = df['Close'].ewm(span=12, adjust=False).mean()
ema26 = df['Close'].ewm(span=26, adjust=False).mean()
df['macd'] = ema12 - ema26
df['signal'] = df['macd'].ewm(span=9, adjust=False).mean()

#---------------------------------------------------------------------------------------

fig, (ax1, ax2) = plt.subplots(nrows=2, ncols=1, figsize=(16, 8))

# Plot the closing price
ax1.plot(df.index, df['Close'], label='Close')

# Plot the MACD and signal line
ax2.plot(df.index, df['macd'], label='MACD', color='red')
ax2.plot(df.index, df['signal'], label='Signal', color='green')

# Add legend
ax1.legend(loc='upper left')
ax2.legend(loc='upper left')

# Add title and axis labels
ax1.set_title('Stock Price and MACD')
ax1.set_xlabel('Date')
ax1.set_ylabel('Price')
ax2.set_xlabel('Date')
ax2.set_ylabel('MACD')

# Create a new figure for RSI
fig2, ax3 = plt.subplots(figsize=(16, 4))

# Plot the RSI
ax3.plot(df.index, df['rsi'], label='RSI')
ax3.axhline(y=70, color='red', linestyle='--') # Add overbought line at 70
ax3.axhline(y=30, color='green', linestyle='--') # Add oversold line at 30
ax3.fill_between(df.index, df['rsi'], where=(df['rsi']>=70), color='red', alpha=0.1) # Fill overbought region
ax3.fill_between(df.index, df['rsi'], where=(df['rsi']<=30), color='green', alpha=0.1) # Fill oversold region
ax3.set_ylim(0,100) # Set the y-axis limits to 100-0

# Add legend and axis labels
ax3.legend(loc='upper left')
ax3.set_title('RSI')
ax3.set_xlabel('Date')
ax3.set_ylabel('RSI')

# Show the plot
plt.show()


結果はこちら↓

 

RSIとMACDの図がでました。

今回は、私も保有している銘柄のBA(ボーイング)について表示をさせました。ちなみに銘柄については、コードを書き換えるのがめんどくさいので下記のコードを入れて好きな銘柄や期間、何足を入力することでこの図を取得することができます。

#銘柄コード
A=input("銘柄は(日本の銘柄は.Tを忘れずに):")
B=input("期間は(1y、6mo、1dなどを入力):")
C=input("足(1d・5mなどを入力):")

では分析をしていくと、2022年10月はMACDは比較的機能していることがわかります。そして、押し目をつけながら反発を繰り返しています。直近では、MACDが上昇トレンドに切り替わるのも近そうです。(赤が緑をうわ抜けると上昇トレンド)

ここ最近は長期金利の上昇がとまらず、心配をしておりましたが金曜日に大きく反発をしました。これは、米の高官発言が大きかったようです。ミクロの視点ではまだまだ、あがったり下がったりはあるかと思います。ただ、マクロの視点ではもう利上げは出口に近いかと思います。弱気にならずに積極的に買い増しをしていく、そういう場面かと僕は思っているので将来に向けて投資を継続して頑張りたいと思っています。

 

今回は、ここまでの説明になります。

では、最後にこのプログラムをChatGPTに聞いてみます。

このプログラムは、ユーザーが指定した銘柄の株価データをダウンロードし、ローソク足チャート、MACD、RSIのグラフを作成するものです。pandas、matplotlib、numpy、datetime、yfinance、mplfinance、talibのライブラリが使用されています。

プログラムは、ユーザーが銘柄コード、期間、足の情報を入力するように要求します。ダウンロードした株価データを使用して、ローソク足チャートを描画し、MACDとRSIの値を計算し、それらのグラフを作成します。

MACDとは、移動平均収束拡散指標のことで、トレンドの強さや転換点を把握するために使用されます。RSIとは、相対力指数のことで、過買い・過売りの状態を示す指標です。

グラフの見方としては、株価の変動がどのようにRSIやMACDに反映されるかを確認することができます。また、過買い・過売りの状態を示すRSIのレベルに注目することで、適切な売買タイミングを判断することができます。

ChatGPTがこのプログラムがどういったものか評価をしてくれました。

 

それでは、最後まで読んでいただきありがとうございました。

 

投資の勉強に活用中↓(無料体験有です)

amzn.to

オススメ本紹介

アマゾン

楽天