非IT企業に勤める中年サラリーマンのIT日記

非IT企業でしかもITとは全く関係ない部署にいる中年エンジニア。唯一の趣味がプログラミングという”自称”プログラマー。

【Python】mplfinanceでローソク足チャートの下にストキャスティクスチャートを表示してみた

   

金融データを可視化する際、ローソク足チャートは非常に便利なツールです。加えて、テクニカル指標を組み合わせることで、より深い分析が可能になります。今回の記事では、mplfinanceを使ってローソク足チャートの下にストキャスティクスオシレーターを表示する方法を解説します。

ストキャスティクスは買われすぎや売られすぎの状態を視覚化するのに役立つ指標で、トレンドフォローや反転のタイミングを把握するのに効果的で。過去一定期間の価格レンジ内で現在の価格がどの位置にあるかを示すテクニカル指標です。

一般的に%Kライン(実測値)と%Dライン(移動平均値)の2つを使用します。この指標は、価格の動きが速いとされる短期トレーダーやレンジ相場で特に有用で、20%以下は売られすぎ、80%以上は買われすぎとされます。反転のシグナルやエントリーポイントの判断材料として活用されています。

import pandas as pd
import mplfinance as mpf

# データの読み込み
# 'USDJPYDaily.csv'ファイルを読み込み、DataFrameに格納
df = pd.read_csv('USDJPYDaily.csv')

# 日付列を日時型に変換
df['Date'] = pd.to_datetime(df['Date'])

# 日付をインデックスとして設定(mplfinanceではインデックスが日時である必要があるため)
df.set_index(keys='Date', inplace=True)

# ダミーのVolume列を追加
# mplfinanceでボリュームのプロットを行うためにVolume列を追加
df['Volume'] = 0  # 必要に応じて実際のボリュームデータに置き換える

# ストキャスティクスの計算
# ストキャスティクスの計算に使用するパラメータ
k_period = 14  # %K(実測値)の計算期間
d_period = 3   # %D(移動平均値)の計算期間

# 過去k_period期間の最安値を計算
df['Low_min'] = df['Low'].rolling(window=k_period).min()

# 過去k_period期間の最高値を計算
df['High_max'] = df['High'].rolling(window=k_period).max()

# %Kの計算: 現在の終値が過去k_period期間の価格レンジ内でどこに位置するかをパーセンテージで表現
df['%K'] = 100 * (df['Close'] - df['Low_min']) / (df['High_max'] - df['Low_min'])

# %Dの計算: %Kの移動平均(d_period期間)を計算
df['%D'] = df['%K'].rolling(window=d_period).mean()

# NaNを削除(計算期間内のデータ不足による欠損値を除去)
df.dropna(inplace=True)

# プロットするデータ数を指定(ここでは直近100件のデータを使用)
PLOT_DATA_COUNT = 100
last_100_df = df.tail(PLOT_DATA_COUNT)

# ストキャスティクスプロット用のデータを抽出
stochastic_data = last_100_df[['%K', '%D']]

# mplfinance用の追加プロット設定
# %K(青線)と%D(オレンジ線)を下部パネルにプロット
add_plot = [
    mpf.make_addplot(stochastic_data['%K'], panel=1, color='blue', ylabel='Stoch %K/%D'),
    mpf.make_addplot(stochastic_data['%D'], panel=1, color='orange')
]

# チャートのデザイン(スタイル)を設定
my_style = mpf.make_mpf_style(
    base_mpf_style='yahoo', # 'yahoo'スタイルをベースにする(他にも'classic', 'default'などが選べる)
    marketcolors=mpf.make_marketcolors(
        up='red', # 上昇(陽線)の色
        down='darkblue', # 下落(陰線)の色
        edge='inherit', # ローソクの枠線の色を継承
        wick='black', # ヒゲの色を黒に設定
        volume='inherit' # ボリュームバーの色を継承
    ),
    facecolor='white', # チャート背景を白に設定
    gridcolor='lightgray', # グリッド線の色を薄い灰色に設定
    gridstyle='--' # グリッド線を点線に設定
)

# チャートを描画
mpf.plot(
    df.tail(PLOT_DATA_COUNT), # 描画対象のデータ(直近100件)
    type='candle', # ローソク足チャートとして描画
    style=my_style, # スタイルを適用
    # mav=(5, 25), # 移動平均線(5日と25日)の設定(必要ならコメントを外す)
    addplot=add_plot, # ストキャスティクスを追加プロットとして設定
    figratio=(10, 5) # 図のアスペクト比を設定
)
 

 

 

実行結果はこちらです。上部がローソク足チャート(USDJPYの価格データ)で、下部がストキャスティクスオシレーター(青線が%K、オレンジ線が%D)となります。

 

スポンサーリンク

 - Python