見出し画像

【Python】【テクニカル指標】一目均衡表とローソク足への追加描画

一目均衡表(Ichimoku Cloud)は、細田悟一さんによって考案された日本発祥のテクニカル分析手法です。一目瞭然、ひと目見てわかるというところから名前がつけられたようです。

一目均衡表は、テクニカル指標の中でも「トレンド系」に分類される指標で、「売り手と買い手のバランスが崩れたときに相場は大きく動く」という考え方に基づいています。相場は買い方と売り方の均衡が崩れた時に大きく動くので、どちらが優勢かが分かればよく、それを一目で知ることができる」という由来による相場分析手法です。一目均衡表を使うことにより、相場の流れや方向性を把握しやすくなります。

チャートを見ることによって、現在および今後の相場のトレンド、今は買いシグナルか、売りシグナルか、をパッと一目で見ることができる。まさに一目で相場の均衡状態を把握できるようにしている点が画期的と言われています。

日本人が戦前に編み出したチャート分析の手法。
時間軸に着目し、ローソク足と5本の補助線(基準線、転換線、遅行線、先行スパン1、2)を用いて、相場の動きが一目でわかるようなチャートです。遅行線は「遅行スパン」ともいいます。「雲」といわれる抵抗帯が特徴で、雲と株価の位置関係や雲の厚さなどで今後の株価を予測します。

ワンポイント
先行スパン1と先行スパン2の2本の間を「雲」と呼びます。ローソク足が雲に突入した場合はトレンド転換の目安で、ローソク足が雲を下から上に突破すると上昇シグナル、上から下に突き抜ければ下落シグナルであるといわれています。このため、雲が厚ければ厚いほど相場の反転が難しいとされています。

大和証券 金融・証券用語解説 [一目均衡表]
https://www.daiwa.jp/glossary/YST0068.html
大和証券 金融・証券用語解説 [一目均衡表] https://www.daiwa.jp/glossary/YST0068.html



ここでは株価データを取得し、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本の補助線から構成されています。それぞれの計算方法は次の通りです。

基準線:当日を含めた過去26日間の高値と安値の中間値
過去26日間の最高値と最安値の平均(基準値)を算出し、複数の数値をつなぎ合わせて表示させた線が「基準線」です。基準線が上向きであれば上昇が強い、下向きであれば下落が強いと判断できます。中期的なトレンドの分析に効果的です。

基準値 = (当日を含めた過去26日間の最高値 + 最安値) ÷ 2

転換線:当日を含めた過去9日間の高値と安値の中間値
当日を含む過去9日間の最高値と最安値の平均を算出し、複数の数値をつなぎ合わせて表示させた線が「転換線」です。転換線が上向きであれば上昇が強い、下向きであれば下落が強いと判断できます。短期的なトレンドを分析するのに用いられるのが特徴です。
転換値 = (当日を含めた過去9日間の最高値 + 最安値) ÷ 2

先行スパン1:転換線と基準線の中間値を26日先に記入したもの
将来の値動きを予測するのに用いられるのが「先行スパン」です。先行スパン1は、基準線と転換線の平均値を26日先、つまりチャート上の右側に先行して表します。

先行スパン2:当日を含めた過去52日間の高値と安値の中間値を26日先に記入したもの
将来の値動きを予測するのに用いられるのが「先行スパン」です。先行スパン2は、過去52日間の最高値と最安値の平均値を26日先にずらして表示させた線です。

遅行スパン:当日の終値を26日前にさかのぼって記入したもの
一目均衡表の中でも、最も重要な要素といわれているのが「遅行スパン」です。当日の終値を26日前に、つまりチャートの左側に遅行させて表示します。当日の価格と26日前の価格を比較することになるため、遅行線がローソク足よりも上に表示されていれば上昇が強い相場、下に表示されていれば下落が強い相場と判断できます。

また、先行スパン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()


活用法について

1.基準線と転換線を使った活用法
基準線が重要で、基本的には移動平均線と同様の使い方になります。
①基準線が上向きなら上昇トレンド、下向きなら下降トレンド
②ローソク足が基準線の上側にあれば強い相場、下側にあれば弱い相場と判断します。
③基準線が上向きの状態で、転換線が基準線の下から上へ抜ける(ゴールデンクロス)を「好転」といい買いシグナルとなり、逆に基準線が下向きの状態で転換線が基準線の上から下へ抜ける(デッドクロス)を「逆転」といい、売りシグナルとなります。

2.先行スパン1と先行スパン2を使った活用法
先行スパン1と先行スパン2に挟まれたゾーンのことを「雲(抵抗帯)」と呼び、「雲」とローソク足との位置を見るだけで、相場の動向をチェックすることが可能です。

① ローソク足が雲の上方にあれば強い相場、下方にあれば弱い相場と判断します。
② ローソク足よりも雲が上にある場合 ⇒ 上値抵抗線
 ローソク足よりも雲が下にある場合 ⇒ 下値抵抗線
③ ローソク足が雲を下から上に突破した場合は上昇サインとなり 「好転」、逆にローソク足が雲を上から下に突破した場合は下落サインとなり「逆転」。相場の転換点として重要なポイントとなります。
※雲は抵抗帯の名のとおり、厚い場合は突破には日柄を要し、薄い場合は、影響が少ないので抜けやすく、転換しやすくなります。
④ 2本の先行スパンが交差した所(「雲のねじれ」などと呼ばれます)は相場の転換点(トレンドの転換、もしくは加速)となる可能性が高いとされています。

3.遅行線を使った活用法
遅行線は「売り」か「買い」かのタイミングを計る場合に見ます。 遅行線がローソク足を上回った場合を「好転」(買いシグナル)、逆に下回った場合を「逆転」(売りシグナル)と判断します。

4.三役好転(三役逆転)
下記3つの条件が揃うと、非常に強い買いシグナル(売りシグナル)になります。
● 転換線>基準線(転換線<基準線)
● ローソク足>雲(ローソク足<雲)
● 遅行線>ローソク足(遅行線<ローソク足)

マネックス証券 はじめてのテクニカル分析 一目均衡表
https://info.monex.co.jp/technical-analysis/indicators/004.html

いろいろなシグナルがあるので、最初は混乱しがちですが、使いこなせるとかなり強力なツールになります。


ローソク足チャートの描画の参考

mplfinanceを使用してローソク足チャートに一目均衡を追加することで、トレンドの転換や買い時・売り時の判断など、より詳細なテクニカル分析が可能になります。


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