2024-12-10

平均足データを作成

平均足はトレンドの流れを確認する上で便利なテクニカルチャートです。通常のローソク足とは異なり、「始値・終値・高値・安値」の四本値をそれぞれ平均するなどして、トレンドがわかりやすいようにローソク足を描くため、陽線と陰線に連続性があり、相場の流れを読むことに適しています。

楽天証券 マーケットスピードオンラインヘルプ [1] より引用
今回のテーマ

yfinance で取得した4本値 (OHLC) データから平均足データを作成します。

下記の OS 環境で動作確認をしています。

Fedora Linux Workstation 41 x86_64
Python 3.13.0
jupyterlab 4.3.2
matplotlib 3.9.3
mplfinance 0.12.10b0
numpy 2.2.3
pandas 2.2.3
yfinance 0.2.50

以下の作業は、Jupyter Lab 上でおこなっています。

準備

最初に必要なライブラリをインポートしておきます。

import matplotlib.pyplot as plt
import mplfinance as mpf
import numpy as np
import pandas as pd
import yfinance as yf

チャート作成に関連する関数を2つ定義しておきます。

まずはチャートのタイトルを作成する処理 get_chart_title です。

def get_chart_title(ticker: yf.Ticker, symbol: str, ctype: str) -> str:
    try:
        title = '%s (%s) - %s' % (ticker.info['longName'], symbol, ctype)
    except KeyError:
        title = '%s - %s' % (symbol, ctype)
    return title

次はチャートのタイトルを作成する処理 gen_chart です。

def gen_chart(df: pd.DataFrame, title: str):
    fig = plt.figure(figsize=(12, 4))
    ax = fig.add_subplot(111)
    mpf.plot(
        df,
        type='candle',
        style='default',
        volume=False,
        xrotation=0,
        ax=ax
    )
    ax.set_title(title)
    ax.grid()
    
    plt.tight_layout()
    # plt.savefig('output.png')
    plt.show()

日足データの取得

例として、日経平均株価 (^N225) の過去 6ヶ月分の日足データを取得します。

symbol = '^N225'
ticker = yf.Ticker(symbol)
df0 = ticker.history(period='6mo', interval='1d')
df0

 

必要な列だけを残します。

df = df0[['Open', 'High', 'Low', 'Close']]
df

 

ローソク足チャート

mplfinance で日足のローソク足チャートを作成します。

ctype = 'Candlestick Chart'
gen_chart(df, get_chart_title(ticker, symbol, ctype))

平均足データの作成

まず、4本値データと同じインデックスと列を持った空のデータフレームを用意しておきます。もっとスマートなやり方があるとは思いますが、とりあえず取得したデータフレーム dfdf_mean へコピーして、中身を NaN で埋めています。

df_mean = df.copy()
for col in df.columns:
    df_mean[col] = np.nan
df_mean

 

楽天証券が提供するトレーディング・ツール「マーケットスピード II」のオンラインヘルプ、テクニカル指標/チャート形状 [2] で説明されている定義に従って、一行ずつ平均足データを作成します。

"""
【参考・引用サイト】
https://marketspeed.jp/ms2/onlinehelp/ohm_007/ohm_007_05.html
"""
for i, dt in enumerate(df.index):
    # 1本目の平均足
    # 前日の平均足がなく始値が算出出来ないため、描画対象外
    if i == 0:
        continue

    # 【平均足の始値】
    if i == 1:
        # 2本目の平均足:前日の平均足がないため、始値を下記値より算出する
        # 始値=(前日の始値+前日の高値+前日の安値+前日の終値)/4
        p_open = df.iloc[0].mean()
    else:
        # 始値=(前日の平均足の始値+前日の平均足の終値)/2
        p_open = df_mean.iloc[i - 1][['Open', 'Close']].mean()

    # 【平均足の終値】
    # 終値=(当日の始値+当日の高値+当日の安値+当日の終値)/4
    p_close = df.iloc[i].mean()
    
    """
    陰線:始値>=終値
    陽線:始値<終値
    平均足の高値と安値は、当日の高値と安値を用いる。但し、
    平均足が陰線で当日の高値<平均足の始値の場合、平均足の高値=平均足の始値とする。
    平均足が陽線で当日の安値>平均足の始値の場合、平均足の安値=平均足の始値とする。
    """
    # 【平均足の高値】
    if p_open >= p_close: # 平均足が陰線
        p_high = max(p_open, df.iloc[i]['High'])
    else:
        p_high = df.iloc[i]['High']
    # 【平均足の安値】
    if p_open < p_close: # 平均足が陽線
        p_low = min(p_open, df.iloc[i]['Low'])
    else:
        p_low = df.iloc[i]['Low']

    df_mean.iloc[i] = [p_open, p_high, p_low, p_close]

df_mean

 

平均足チャート

ローソク足チャートと同様に、mplfinance で平均足チャートを作成します。

ctype = 'Heikin Ashi Chart'
gen_chart(df_mean, get_chart_title(ticker, symbol, ctype))

まとめ

楽天証券の口座でトレーディングをしている新米トレーダーで、自動売買実現に向けて取り組んでいます。

リアルタイムの情報を取得するためにいろいろ試しましたが、Windows 上で表計算ソフト Excel のアドイン「マーケットスピード II RSS [3]」(以下、MS2 RSS と呼びます)を利用するのがもっとも確実そうだという結論に至りました。

Excel 2024 上で「マーケットスピード II RSS」の利用している例

MS2 RSS では、本体の「マーケットスピード II [4]」上に表示される情報を取得できますが、全てではありません。

今回取り上げた「平均足チャート」は、本体の「マーケットスピード II」のチャート上では利用できますが、チャートにプロットされた平均足のデータは MS2 RSS では取得できません。日足などの OHLC データは MS2 RSS で取得できますので、平均足データを使いたければ、VBA でマクロを用意して算出するしかなさそうです。

MS2 RSS では売買用の関数も提供されているので、自動売買は Excel 上で実現することになり、判定基準などの必要な機能は VBA で用意することになります。そういうわけで、いまさらながら VBA の話題を本ブログで取り上げることになるかもしれません。一方、実装前の確認やシミュレーションは依然として Linux 上の Python でおこなっています。

株価の値動きの確認には Parabolic SAR を頻繁に利用していますが、ローソク足より平均足の方が相性が良さそうなことを知り [5] [6]、評価をはじめたところです。

参考サイト

  1. 平均足 | マーケットスピードオンラインヘルプ
  2. テクニカル指標/チャート形状 | マーケットスピード II オンラインヘルプ | 楽天証券のトレーディングツール
  3. マーケットスピード II RSS | 楽天証券のトレーディングツール
  4. マーケットスピード II | 楽天証券のトレーディングツール
  5. Parabolic SAR - Wikipedia
  6. Parabolic SAR Secrets: Pro Trader Shares Tested Tactics [Updated on 2024-10-22]

 

ブログランキング・にほんブログ村へ bitWalk's - にほんブログ村 にほんブログ村 IT技術ブログ オープンソースへ
にほんブログ村

オープンソース - ブログ村ハッシュタグ
#オープンソース



このエントリーをはてなブックマークに追加