【Python】【テクニカル指標】一目均衡表とローソク足への追加描画
一目均衡表(Ichimoku Cloud)は、細田悟一さんによって考案された日本発祥のテクニカル分析手法です。一目瞭然、ひと目見てわかるというところから名前がつけられたようです。
一目均衡表は、テクニカル指標の中でも「トレンド系」に分類される指標で、「売り手と買い手のバランスが崩れたときに相場は大きく動く」という考え方に基づいています。相場は買い方と売り方の均衡が崩れた時に大きく動くので、どちらが優勢かが分かればよく、それを一目で知ることができる」という由来による相場分析手法です。一目均衡表を使うことにより、相場の流れや方向性を把握しやすくなります。
チャートを見ることによって、現在および今後の相場のトレンド、今は買いシグナルか、売りシグナルか、をパッと一目で見ることができる。まさに一目で相場の均衡状態を把握できるようにしている点が画期的と言われています。
ここでは株価データを取得し、mplfinanceを使用してローソク足チャートを描画し、ローソク足チャートに一目均衡表を追加していきます。
なお、最低限のポイントのみの説明にするため、Pythonライブラリ、モジュール等のインストール方法については割愛させて頂きます。お使いのPC環境等に合わせてインストールしてもらえればと思います。
1.株価データを取得する
まず、mplfinanceをインポートします。mplfinanceを使用することで簡単にローソク足チャートを描画できます。
下記を参考にOHLCV(始値 / 高値 / 安値 / 終値 / 出来高)形式の日経平均株価(^NKX)データを取得します。データの取得期間は、2022年10月1日から現在の日付までです。
※stooqでデータ取得した場合、日付の降順にデータが並ぶようです。df.sort_index(inplace=True)で昇順に並び替えています。
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline
import mplfinance as mpf
import pandas_datareader.data as web
import datetime
start = '2022-10-01'
end = datetime.date.today()
df = web.DataReader('^NKX', 'stooq', start, end)
# 日付を昇順に並び替える
df.sort_index(inplace=True)
2.一目均衡表の算出方法とデータの作成
一目均衡表は5本の補助線から構成されています。それぞれの計算方法は次の通りです。
また、先行スパン1と先行スパン2で囲われた部分は雲と呼ばれ、相場の動向を見ることに役立ちます。この雲の存在が、英語でIchimoku Cloudと呼ばれる所以です。
ここで、まずは使用するデータを作成します。
# 基準線に使用するデータを作成
high = df['High']
low = df['Low']
max26 = high.rolling(window=26).max()
min26 = low.rolling(window=26).min()
df['basic_line'] = (max26 + min26) / 2
# 転換線に使用するデータを作成
high9 = high.rolling(window=9).max()
low9 = low.rolling(window=9).min()
df['turn_line'] = (high9 + low9) / 2
# 先行スパン1に使用するデータを作成
span1 = (df['basic_line'] + df['turn_line']) / 2
df['span1'] = span1.shift(25)
# 先行スパン2に使用するデータを作成
high52 = high.rolling(window=52).max()
low52 = low.rolling(window=52).min()
span2 = (high52 + low52) / 2
df['span2'] = span2.shift(25)
# 遅行線に使用するデータを作成
df['slow_line'] = df['Close'].shift(-25)
df
確認のため描画してみます。
plt.figure(figsize=(12, 6))
plt.plot(df['basic_line'], label='basic', color='red')
plt.plot(df['turn_line'], label='turn', color='blue')
plt.fill_between(df.index, df['span1'], df['span2'], facecolor="gray", alpha=0.5, label="span")
plt.plot(df['slow_line'], label='slow', color='orange')
plt.xlabel('Date')
plt.ylabel('Price')
plt.legend()
plt.grid()
plt.show()
3.ローソク足チャートに一目均衡表を追加して描画する
mplfinanceを使用することでローソク足チャートを描画し、基準線、転換線、雲、遅行線を追加していきます。
# 基準線に使用するデータを作成
high = df['High']
low = df['Low']
max26 = high.rolling(window=26).max()
min26 = low.rolling(window=26).min()
df['basic_line'] = (max26 + min26) / 2
# 転換線に使用するデータを作成
high9 = high.rolling(window=9).max()
low9 = low.rolling(window=9).min()
df['turn_line'] = (high9 + low9) / 2
# 先行スパン1に使用するデータを作成
span1 = (df['basic_line'] + df['turn_line']) / 2
df['span1'] = span1.shift(25)
# 先行スパン2に使用するデータを作成
high52 = high.rolling(window=52).max()
low52 = low.rolling(window=52).min()
span2 = (high52 + low52) / 2
df['span2'] = span2.shift(25)
# 遅行線に使用するデータを作成
df['slow_line'] = df['Close'].shift(-25)
apd = [
mpf.make_addplot(df['basic_line'], color='red', width=1.5),
mpf.make_addplot(df['turn_line'], color='blue', width=1.5),
mpf.make_addplot(df['span1'], color='black', width=0.5),
mpf.make_addplot(df['span2'], color='black', width=0.5),
mpf.make_addplot(df['slow_line'], color='orange', width=1.5)
]
labels = ["basic", "turn", "span1", "span2", "slow"]
# ラベルをつけてチャートを表示
fig, ax = mpf.plot(df, type='candle', figsize=(12,6), style='classic', xrotation=0, addplot=apd, returnfig=True,
fill_between=dict(y1=df['span1'].values, y2=df['span2'].values, alpha=0.5, color='grey'))
# チャートを表示
plt.show()
活用法について
いろいろなシグナルがあるので、最初は混乱しがちですが、使いこなせるとかなり強力なツールになります。
ローソク足チャートの描画の参考
mplfinanceを使用してローソク足チャートに一目均衡を追加することで、トレンドの転換や買い時・売り時の判断など、より詳細なテクニカル分析が可能になります。
この記事が気に入ったらサポートをしてみませんか?