見出し画像

MACDをプログラムしてみた

MACDとは何か、マネックス証券のページに説明がありましたので、転記しますね
####
MACD(通称マックディー)は、移動平均の発展版で、更に売買シグナルにおいて精度を高くした、トレンド分析の中でも人気のある指標の一つです。「移動平均収束拡散」又は「移動平均収束乖離」などとも呼ばれています。
トレンド形成時に威力を発揮するため、逆にボックス相場に弱いのが特徴です。
主にMACDとMACDシグナルという2本のラインの交差を売買のタイミングとして用いられることが多く、初心者の方でもシグナルの発見が容易です。
####

Pythonプログラムの実行は、グーグルコラボが便利です
グーグルコラボはこちら

使い方が分からないようだったら、こちらのページで丁寧な説明あります


先ずは、実行結果から
これは、米国製薬会社大手のイーライリリーの、ここ1年の株価のチャートとMACDのチャートです。現在、シグナルラインをMACDがクロスして、突き抜けてるので、今は買いでしょうかね。
私は伸びが止まった今年3月に保有したので、これからの伸びが楽しみです。

イーライリリーの株価とMACDチャート

次にプログラム公開しますね

tickers = {"MSFT", "LLY"}
とあるとおり、マイクロソフトとイーライリリーについて、チャートを作成しています。
調べたい会社のティッカーシンボルを並べて書けば、そのすべてにチャートを作ってくれます。

株価情報は米国Yahoo Financeからです。

!pip install pandas beautifulsoup4 lxml html5lib
!pip install pandas matplotlib pandas_datareader
!pip install yfinance

import pandas as pd
import requests
from bs4 import BeautifulSoup
import pandas_datareader as pdr
import matplotlib.pyplot as plt
import yfinance as yf
from datetime import datetime

tickers = {"MSFT", "LLY"}

# 各シンボルについてMACDプロット
for symbol in tickers:

    # データ取得期間の設定
    start_date = '2023-01-01'
    end_date = datetime.now().strftime('%Y-%m-%d')  # 現在の日付

    # Yahoo Financeから価格データを取得
    df = yf.download(symbol, start=start_date, end=end_date)

    # MACDの計算
    # 短期EMA(12日)
    df['EMA_12'] = df['Close'].ewm(span=12, adjust=False).mean()
    # 長期EMA(26日)
    df['EMA_26'] = df['Close'].ewm(span=26, adjust=False).mean()
    # MACDの計算
    df['MACD'] = df['EMA_12'] - df['EMA_26']
    # シグナルライン(9日)
    df['Signal_Line'] = df['MACD'].ewm(span=9, adjust=False).mean()

    # MACDとシグナルラインのプロット
    plt.figure(figsize=(10, 5))
    plt.plot(df.index, df['MACD'], label='MACD', color='blue')
    plt.plot(df.index, df['Signal_Line'], label='Signal Line', color='red')
    plt.legend(loc='upper left')
    plt.title('MACD for ' + symbol)
    plt.show()

この記事が気に入ったらサポートをしてみませんか?