平均足(Heikinashi Candlestick)

 

概要
図1 平均足の描画例(下側が平均足)

平均足はローソク足を変形したトレンド系のテクニカル指標です。通常、ローソク足の実体部分は陽線なら上辺は終値、下辺は始値ですが、図1のように平均足は上辺下辺とも「平均値」に置き換えるので平均足と呼ばれます。平均足は値動きの情報が取り入れられているので、トレンド判断に使うことも出来ます。

陽線を例に見ていきます。陽線のローソク足は

上辺:終値

下辺:始値

ですが、これを平均足では

A:1本前のローソク足の始値と終値の平均値

B:始値・高値・安値・終値(現在値)の平均値

で置き換えます。B>Aなら今の時点の平均足は陽線、A>Bなら陰線となります。例えば、日足の場合、前日の価格の平均値を使って今日の値動きが陰線か陽線かを決めていくため、2本の間だけではありますが、移動平均の考えが入っていることが平均足の特徴です。高値と安値はそのまま使用します。

また、通常ローソク足では上昇トレンド中に陰線が、下落トレンドの間にも陽線がしばしば出現しますが、平均足では上昇トレンドはほぼ陽線、下落トレンドはほぼ陰線です。

計算方法(日足の場合)

平均線の計算方法は次の通りです。

$$ \rm{} A = 1本前のローソク足の始値と終値の平均値\\ B = 始値・高値・安値・終値(現在値)の平均値\\ B>Aなら陽線\\ A>Bなら陰線\\ $$

実際に計算してみましょう。

日数ローソク足始値 ローソク足終値 安値 高値 平均足始値 平均足終値 
1日目100010509971057
2日目105010701040107410251059
3日目107010601057107310601065
4日目106010801056108210651070
5日目108011001078110110701105
6日目110011501095115510901125
7日目115011201112115811251135
8日目112011301113113211241135
9日目113011001094113411151125
10日目(最新)1100 10501040110210731115
Pythonによる実装

必要なライブラリを読み込みます

!pip install mpl_finance #Collaboratoryに入っていないライブラリを読み込みます
import matplotlib
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
import pandas as pd
import mpl_finance
import sys
import numpy as np
from datetime import datetime
from matplotlib.offsetbox import OffsetImage, AnnotationBbox
import requests
import io

疑似データを読み込みます

#ファイルの読み込み
URL = "https://neulab.co.jp/wp-content/uploads/pseudo_data.csv" #csvファイルのURL

datafile = requests.get(URL)#ファイルの読み込み

#データフレームの作成
df_temp = pd.read_csv(io.BytesIO(datafile.content), header=0, index_col=0, parse_dates=True, encoding="UTF-8")

df = df_temp.loc[:,['Open','High','Low','Close']]
df.head()

平均足を計算します

df_open = df['Open'].shift(1)
df_close = df['Close'].shift(1)
df_avg = df.copy()

df_avg['Open'] = (df_open + df_close)/2
df_avg['Close'] = (df['Open'] + df['High'] + df['Low'] + df['Close'])/4

matplotを使ったチャートの描画例です

canvas_color = '#fffafa'
line_color = '#c8ced1'
font_color = '#171510'
colorup = '#bf0000'
colordown = '#006fbf'

n_data = -100
data = df[n_data:]
ohlc = np.vstack((range(len(data)), data.T)).T
data_avg = df_avg[n_data:]
ohlc_avg = np.vstack((range(len(data_avg)), data_avg.T)).T

fig, (ax1, ax2) = plt.subplots(2, 1, gridspec_kw={'height_ratios': [10, 6]}, sharex=True, figsize=(12,9))
fig.patch.set_facecolor(canvas_color)
ax1.patch.set_facecolor(canvas_color)
mpl_finance.candlestick_ohlc(ax1, ohlc, width=0.5, alpha=1, colorup=colorup, colordown=colordown)
ax2.patch.set_facecolor(canvas_color)
mpl_finance.candlestick_ohlc(ax2, ohlc_avg, width=0.5, alpha=1, colorup=colorup, colordown=colordown)
ax1.grid()
ax2.grid()

#ロゴ読み込み
logoURL = "https://neulab.co.jp/wp-content/uploads/logo.png" #logoファイルのURL
img_c = plt.imread(logoURL)
imagebox = OffsetImage(img_c, zoom=0.020) #画像をimageboxにいれる。
imagebox.image.axes = ax1
im_sabo = AnnotationBbox(imagebox, (0, 9850), xybox=(0, 9900), xycoords="data", boxcoords="data", pad=0.3, frameon=False)

l1,l2 = ax2.get_legend_handles_labels()
ax2.legend(l1,l2, fontsize=14, edgecolor='none', facecolor=canvas_color)

ax1.add_artist(im_sabo)
ax1.set_ylabel("Price of Something", fontsize=22)
ax1.set_ylim(9000., 10000.)
ax1.yaxis.tick_right()
ax1.yaxis.set_label_coords(0, 0.5)
ax1.tick_params(labelsize=24, labelcolor=font_color, color=line_color)

ax1.spines['left'].set_linewidth(0)
ax1.spines['right'].set_linewidth(0)
ax1.spines['top'].set_linewidth(0)
ax1.spines['bottom'].set_linewidth(0)

ax2.yaxis.tick_right()
ax2.set_ylim(9000., 10000.)
ax2.tick_params(labelsize=22, labelcolor=font_color, color=line_color)

ax2.spines['left'].set_color(line_color)
ax2.spines['right'].set_color(line_color)
ax2.spines['top'].set_color(line_color)
ax2.spines['bottom'].set_color(line_color)

xtick0 = 2
plt.xticks(range(xtick0,len(data),12), [x.strftime('%m/%d') for x in df.index][xtick0::12])

plt.subplots_adjust(left=0.05, right=0.89, bottom=0.1, top=0.99)
plt.grid(which='major',color=line_color,linestyle='-')
plt.grid(which='minor',color=line_color,linestyle='-')

ax2.grid(linestyle='--', lw=1)
ax1.set_axisbelow(True)

fig.savefig('Avg.png', facecolor=fig.get_facecolor(), edgecolor='none')

以上のコードをGoogle社の提供しているColaboratory上で公開しており、実際に動作させることができます。

リンク先はこちら

平均足を使った予想

平均足を使った予想の方法はシンプルです。陰線が続いた後に陽線が出現すれば買い、逆に陽線が続いた後に陰線が出現するれば売りと判断することが出来ます。トレンド転換の兆しとして重要視されるのはコマ足と呼ばれる実体が短くヒゲの長い足です。上昇トレンド中にコマ足が出現すれば下落トレンドへの転換の兆し、下落トレンド中のコマ足の出現は上昇トレンドへの転換の兆しと捉えることが出来ます。


※このHPページで紹介しているテクニカル指標を使った取引ルールや売買シグナルの見方は一般的な考え方に基づくものであり、利益の増加や損失の減少を保証するものではありません。ご自身の判断にてお取引いただきますようお願いいたします。


現在、ニューラボでは人工知能による取引アルゴリズムを開発中です。11月にリリース予定。乞うご期待!
自動取引にご興味を持たれましたら お問い合わせページよりお気軽にお問合せください。