トヨタの決算前後、チャートを見る時間がなくて乗り遅れたことが何度もあった。子供が寝た後にスマホで確認しても、そのときには動きが終わってたりする。だから「製造メーカー株のMACDが動いたら自動で通知してくれる仕組み」を作った。今回はJ-Quants APIとPythonで実装した方法を紹介する。
なぜJ-Quants APIを使うのか
yfinanceでも日本株は取れるけど、J-Quantsは東証公式で調整済みデータが取れる点が強い。無料プランでも過去データが使える(12週間遅延あり)。製造メーカー株は流動性が高いので、多少遅延があってもシグナルの検証には十分使える。
実装コード
import jquantsapi
import pandas as pd
import numpy as np
# J-Quants APIクライアント初期化
client = jquantsapi.Client(
mail_address="your@email.com",
password="your_password"
)
def get_ohlcv(code: str, start: str, end: str) -> pd.DataFrame:
"""証券コードの日足OHLCVを取得"""
df = client.get_price_range(
code=code,
date_yyyymmdd_from=start.replace("-", ""),
date_yyyymmdd_to=end.replace("-", "")
)
df["Date"] = pd.to_datetime(df["Date"])
return df.sort_values("Date").reset_index(drop=True)
def calc_macd(close: pd.Series, fast=12, slow=26, signal=9):
"""MACDを計算する"""
ema_fast = close.ewm(span=fast, adjust=False).mean()
ema_slow = close.ewm(span=slow, adjust=False).mean()
macd_line = ema_fast - ema_slow
signal_line = macd_line.ewm(span=signal, adjust=False).mean()
histogram = macd_line - signal_line
return macd_line, signal_line, histogram
def check_macd_cross(code: str, name: str):
"""MACDのゴールデン/デッドクロスを検出"""
from datetime import datetime, timedelta
end = datetime.today().strftime("%Y-%m-%d")
start = (datetime.today() - timedelta(days=200)).strftime("%Y-%m-%d")
df = get_ohlcv(code, start, end)
macd, sig, hist = calc_macd(df["AdjustmentClose"])
# 直近2日のクロス判定
prev_diff = macd.iloc[-2] - sig.iloc[-2]
curr_diff = macd.iloc[-1] - sig.iloc[-1]
if prev_diff < 0 and curr_diff >= 0:
return f"✅ {name}({code}): ゴールデンクロス発生!"
elif prev_diff > 0 and curr_diff <= 0:
return f"⚠️ {name}({code}): デッドクロス発生!"
else:
return f" {name}({code}): シグナルなし (MACD差={curr_diff:.2f})"
# 製造メーカー株リスト
stocks = [
("7203", "トヨタ自動車"),
("6501", "日立製作所"),
("5401", "日本製鉄"),
("7011", "三菱重工業"),
("6752", "パナソニック"),
]
print("=== 製造メーカー株 MACDチェック ===")
for code, name in stocks:
result = check_macd_cross(code, name)
print(result)
LINE通知と組み合わせる
このスクリプトを毎朝自動実行してクロスが出たときだけLINEに通知するようにした。子供が起きる前の5分で確認できるので、見逃しがなくなった。毎日チャートを見なくてよくなったのが一番の収穫だと思う。
次はMACDだけじゃなく、RSIとの組み合わせシグナルも試してみる予定。

