Pythonで株価を取得して移動平均線を描く方法【楽天・ホンダで実例解説】

「緑と黄色を基調にした背景に、中央寄せで可愛いフクロウキャラクターと『Pythonで株価分析』という白文字が配置された横長アイキャッチ画像」 初心者向け

Pythonを使うと、普段チェックしている保有銘柄の値動きを“自分の手で”簡単に可視化できます。特に移動平均線は、トレンドの強さや転換点をつかむ基本的な指標で、月1万円の少額投資でも判断材料として十分役立ちます。この記事では、楽天やホンダなど実際の保有銘柄を例に、株価データの取得から移動平均線の描画までを初心者向けに分かりやすく解説します。

※Pythonと必要なライブラリ(pandas・matplotlib・yfinance)が使える環境が整っている前提で進めます。まだの方は公式ドキュメントや入門記事を参考にセットアップしてください。

📘 株価データをPythonで取得する準備

株価の移動平均線を描くには、まず分析したい銘柄の株価データをPythonで取得する必要があります。今回は、楽天(4755)やホンダ(7267)など、あなたの保有銘柄を例に進めていきます。株価データの取得には、Pythonで広く使われている yfinance というライブラリを利用します。無料で使えて、国内株・米国株どちらも簡単に取得できるため、初心者でも扱いやすいのが特徴です。

まだインストールしていない場合は、次のコマンドを実行するだけで準備が整います。

pip install yfinance

準備ができたら、実際に楽天やホンダの株価を取得してみましょう。次の章では、具体的なコードとともに、株価データの読み込み方法を解説します。

📈 株価データを取得するコード例【楽天・ホンダ】

ここからは、実際に Python を使って保有銘柄の株価データを取得していきます。今回は例として、楽天(4755.T)とホンダ(7267.T)の2銘柄を読み込みます。yfinance を使うと、わずか数行のコードで株価データを取得できるため、初心者でも扱いやすいのが特徴です。

以下のコードをそのまま実行すれば、過去1年分の株価データを取得できます。

import yfinance as yf

# 銘柄コード(Yahoo! Finance形式)
tickers = ["4755.T", "7267.T"]  # 楽天・ホンダ

# 過去1年分の株価データを取得
data = yf.download(tickers, period="1y")

# 先頭5行を表示
print(data.head())

実行すると、日付ごとに「始値・高値・安値・終値・出来高」などのデータが取得されます。
このデータをもとに、次の章では 移動平均線を計算してグラフ化 していきます。

📊 移動平均線を計算してグラフ化する【楽天・ホンダ】

取得した株価データを使って、次は移動平均線(Moving Average)を計算していきます。移動平均線は、一定期間の終値を平均したもので、株価のトレンドを滑らかに把握するための基本的な指標です。短期線と長期線を組み合わせることで、トレンドの強弱や転換点を視覚的に確認できます。

今回は、

  • 短期:25日移動平均線
  • 長期:75日移動平均線
    を例に、楽天とホンダの株価に重ねて表示してみます。
import yfinance as yf
import pandas as pd
import matplotlib.pyplot as plt

# 銘柄コード
ticker = "4755.T"  # 楽天(例として1銘柄)

# 過去1年分の株価データを取得
data = yf.download(ticker, period="1y")

# 移動平均線を計算
data["MA25"] = data["Close"].rolling(window=25).mean()
data["MA75"] = data["Close"].rolling(window=75).mean()

# グラフ描画
plt.figure(figsize=(12, 6))
plt.plot(data["Close"], label="Close", color="black")
plt.plot(data["MA25"], label="MA25 (25日)", color="blue")
plt.plot(data["MA75"], label="MA75 (75日)", color="red")

plt.title(f"{ticker} 株価と移動平均線")
plt.xlabel("Date")
plt.ylabel("Price")
plt.legend()
plt.grid(True)
plt.show()

このコードを実行すると、終値と2本の移動平均線が重なったグラフが表示されます。短期線が長期線を上抜ける「ゴールデンクロス」や、逆に下抜ける「デッドクロス」など、トレンドの変化が視覚的に分かるようになります。

📘 複数銘柄の移動平均線をまとめて比較する【ポートフォリオ全体を可視化】

保有銘柄が複数ある場合、1銘柄ずつグラフを描くよりも、同じスケールで並べて比較できるグラフがあると便利です。Pythonなら、楽天・ホンダ・りそなHDなど複数銘柄の移動平均線を一度に描画して、ポートフォリオ全体のトレンドを俯瞰できます。

ここでは、

  • 楽天(4755.T)
  • ホンダ(7267.T)
  • りそなHD(8308.T)
    の3銘柄を例に、25日移動平均線を比較してみます。
import yfinance as yf
import pandas as pd
import matplotlib.pyplot as plt

# 複数銘柄
tickers = {
    "楽天": "4755.T",
    "ホンダ": "7267.T",
    "りそなHD": "8308.T"
}

plt.figure(figsize=(12, 6))

for name, code in tickers.items():
    data = yf.download(code, period="1y")
    data["MA25"] = data["Close"].rolling(window=25).mean()
    plt.plot(data["MA25"], label=f"{name} MA25")

plt.title("保有銘柄の25日移動平均線の比較")
plt.xlabel("Date")
plt.ylabel("Price")
plt.legend()
plt.grid(True)
plt.show()

このグラフを見ることで、

  • どの銘柄が強いトレンドにあるか
  • どの銘柄が横ばいか
  • どの銘柄が下落傾向か
    が一目で分かります。

⚡ ゴールデンクロス/デッドクロスを自動判定する【シグナル検出】

移動平均線を描けるようになったら、次にやりたいのが ゴールデンクロス(GC)デッドクロス(DC) の自動判定です。
これは短期線と長期線の交差を検出するだけなので、Pythonなら数行で実装できます。

ここでは、

  • 短期:25日移動平均線(MA25)
  • 長期:75日移動平均線(MA75)
    を使って、楽天(4755.T)のシグナルを判定してみます。
import yfinance as yf
import pandas as pd

ticker = "4755.T"  # 楽天

# 株価データ取得
data = yf.download(ticker, period="1y")

# 移動平均線
data["MA25"] = data["Close"].rolling(window=25).mean()
data["MA75"] = data["Close"].rolling(window=75).mean()

# シグナル判定
data["Signal"] = 0
data["Signal"] = data["MA25"] > data["MA75"]
data["Cross"] = data["Signal"].diff()

# ゴールデンクロス(1)、デッドクロス(-1)
gc = data[data["Cross"] == 1]
dc = data[data["Cross"] == -1]

print("ゴールデンクロス:")
print(gc[["Close", "MA25", "MA75"]].tail())

print("\nデッドクロス:")
print(dc[["Close", "MA25", "MA75"]].tail())

このコードでは、

  • MA25 が MA75 を上抜けた瞬間 → ゴールデンクロス(買いシグナル)
  • MA25 が MA75 を下抜けた瞬間 → デッドクロス(売りシグナル)
    として判定しています。

実際に出力される日付を見ると、
「この時期にトレンドが変わっていたのか」
と気づきが得られます。

🎯 ゴールデンクロス/デッドクロスをグラフにプロットする【視覚的に理解する】

シグナルを数値として判定できるようになったら、次のステップは グラフ上に“印”として表示すること
これによって、

  • どのタイミングでトレンドが変わったのか
  • その後の値動きはどうだったのか
    が直感的に理解できるようになる。

今回は、

  • ゴールデンクロス → 緑の上向き三角
  • デッドクロス → 赤の下向き三角
    としてプロットしてみる。
import yfinance as yf
import pandas as pd
import matplotlib.pyplot as plt

ticker = "4755.T"  # 楽天

# 株価データ取得
data = yf.download(ticker, period="1y")

# 移動平均線
data["MA25"] = data["Close"].rolling(window=25).mean()
data["MA75"] = data["Close"].rolling(window=75).mean()

# シグナル判定
data["Signal"] = data["MA25"] > data["MA75"]
data["Cross"] = data["Signal"].diff()

# グラフ描画
plt.figure(figsize=(12, 6))
plt.plot(data["Close"], label="Close", color="black")
plt.plot(data["MA25"], label="MA25", color="blue")
plt.plot(data["MA75"], label="MA75", color="red")

# ゴールデンクロス(上向き三角)
gc = data[data["Cross"] == 1]
plt.scatter(gc.index, gc["Close"], color="green", marker="^", s=100, label="Golden Cross")

# デッドクロス(下向き三角)
dc = data[data["Cross"] == -1]
plt.scatter(dc.index, dc["Close"], color="red", marker="v", s=100, label="Dead Cross")

plt.title(f"{ticker} 株価と移動平均線(GC/DC表示)")
plt.xlabel("Date")
plt.ylabel("Price")
plt.legend()
plt.grid(True)
plt.show()

このグラフを見ると、

  • ゴールデンクロス後に上昇したのか
  • デッドクロス後に下落したのか
  • だまし(フェイクシグナル)はあったか
    などが一目で分かる。

📋 複数銘柄のシグナルを一覧化する【買い時・売り時をまとめて確認】

ゴールデンクロス(GC)やデッドクロス(DC)をグラフで確認できるようになったら、次に便利なのが 複数銘柄のシグナルを一覧表にまとめる方法です。

これを作っておくと、

  • 「今、買い増し候補の銘柄はどれ?」
  • 「トレンドが弱っている銘柄は?」
  • 「保有銘柄の状況を毎週チェックしたい」
    といった用途にすぐ使える“簡易スクリーニングツール”になります。

今回は、あなたの保有銘柄の一部である

  • 楽天(4755.T)
  • ホンダ(7267.T)
  • りそなHD(8308.T)
  • オンワードHD(8016.T)
    を例に、最新のGC/DCシグナルを一覧化してみます。
import yfinance as yf
import pandas as pd

tickers = {
    "楽天": "4755.T",
    "ホンダ": "7267.T",
    "りそなHD": "8308.T",
    "オンワードHD": "8016.T"
}

results = []

for name, code in tickers.items():
    data = yf.download(code, period="6mo")
    data["MA25"] = data["Close"].rolling(window=25).mean()
    data["MA75"] = data["Close"].rolling(window=75).mean()

    data["Signal"] = data["MA25"] > data["MA75"]
    data["Cross"] = data["Signal"].diff()

    # 最新のシグナルを取得
    latest_cross = data["Cross"].iloc[-1]

    if latest_cross == 1:
        signal = "ゴールデンクロス(買い)"
    elif latest_cross == -1:
        signal = "デッドクロス(売り)"
    else:
        signal = "シグナルなし"

    results.append([name, signal])

df = pd.DataFrame(results, columns=["銘柄", "シグナル"])
print(df)

このコードを実行すると、次のような表が出力されます。

銘柄シグナル
楽天ゴールデンクロス
ホンダシグナルなし
りそなHDデッドクロス
オンワードHDシグナルなし

(※これは例です。実際の結果は実行時の株価によって変わります

🔍 この一覧表が便利な理由

  • ポートフォリオ全体のトレンドを一目で把握できる
  • 毎週・毎月のルーティンチェックに使える
  • 買い増し候補の優先順位を決めやすい
  • ブログ読者の皆様にも「実用的だ」と感じてもらえる

📝 まとめ:Pythonで保有銘柄を可視化すると投資判断が一段階クリアになる

Pythonを使うことで、楽天・ホンダ・りそなHDなどの保有銘柄を自分の手で分析できるようになり、日々の値動きが「ただの数字」から「意味のある情報」に変わります。移動平均線を描くだけでも、トレンドの強弱や転換点が視覚的に分かり、買い増しや様子見の判断がしやすくなります。

さらに、ゴールデンクロスやデッドクロスの自動判定、複数銘柄の一覧化などを組み合わせれば、ポートフォリオ全体の状況を短時間で把握できるようになります。月1万円の少額投資でも、こうした“見える化”は大きな武器になります。

今回紹介したコードはどれも短くシンプルで、少しずつ応用していけば、あなた自身の投資スタイルに合わせた分析ツールへと育てていくことも可能です。次のステップとして、トレンドラインやボラティリティ分析、簡単な予測モデルなどにも挑戦してみると、さらに理解が深まります。

関連記事

月1万円の少額投資でも使える!Pythonで株価予測の基本と注意点を解説

本ブログは情報提供を目的としており、投資に関する最終的な判断は読者ご自身にてお願いいたします。掲載内容による損益について、当方は一切の責任を負いかねます。

\ 最新情報をチェック /

PAGE TOP
タイトルとURLをコピーしました