ピボット(Pivot)

 

 

概要
図1 ピボットの表示例

ピボットは前日のTypical Price(TP)を軸として翌日の売買の目安となる。サポートライン・レジスタンスラインを計算するテクニカル指標です。90年代の先物市場のディーラの間でよく使われていました。別名 リアクション・トレンド・システムと呼びます。

3組の支持線S1、S2と抵抗線B1、B2、加えてトレンド発生を示すHBOP(High Break Out Point、S3とも)とLBOP(Low Break Out Point、B3とも)、合計6本の線を用いて相場の動きと支持線と抵抗線の幅の大小でトレンドをとらえることができます。

計算方法(日足の場合)

中央線となる線は次の通り当日終値(C)と当日高値(H)、当日安値(L)から計算します。

$$ \rm{} TP = (当日終値、当日高値、当日安値)/3 $$

次に指示線B1、B2を計算します。

$$ \rm{} B1 = TP \times 2 – H = P – (H-P) \\ B2 = P – (H-L) \\ $$

続いて抵抗線S1、S2を計算します。

$$ \rm{} S1 = TP \times 2 – L = P + (P – L) \\ S2 = P + (H-L) \\ $$

最後にHBOPとLBOPを計算します。

$$ \rm{} HBOP = P + D2 + D3 = 2P – 2L + H \\ LBOP = P – D1 – D3 = 2P – 2H + L \\ D1 = H – P \\ D2 = P – L \\ D3 = H – L $$
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_tp = df.loc[:,['High', 'Low', 'Close']].mean(axis='columns')
df_d1 = df['High'] - df_tp
df_d2 = df_tp - df['Low']
df_d3 = df['High'] - df['Low']

df_b1 = df_tp - df_d1
df_b2 = df_tp - df_d3
df_hbop = df_tp + df_d2 + df_d3

df_s1 = df_tp + df_d2
df_s2 = df_tp + df_d3
df_lbop = df_tp- df_d1 - df_d3

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

fig = plt.figure(figsize=(12, 8))
fig.patch.set_facecolor(canvas_color)

ax = fig.add_subplot(1, 1, 1)
ax.patch.set_facecolor(canvas_color)
mpl_finance.candlestick_ohlc(ax, ohlc, width=0.5, alpha=1, colorup=colorup, colordown=colordown)
ax.plot(range(len(data)), df_b1.values[n_data:] , color='darkorange', ls='-', label='S1, B1')
ax.plot(range(len(data)), df_b2.values[n_data:] , color='darkred', ls='-', label='S2, B2')
ax.plot(range(len(data)), df_s1.values[n_data:] , color='darkorange', ls='-')
ax.plot(range(len(data)), df_s2.values[n_data:] , color='darkred', ls='-')
ax.plot(range(len(data)), df_hbop.values[n_data:] , color='darkblue', ls='-', label='HBOP, LBOP')
ax.plot(range(len(data)), df_lbop.values[n_data:] , color='darkblue', ls='-')
ax.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 = ax
im_sabo = AnnotationBbox(imagebox, (0, 9850), xybox=(0, 9950), xycoords="data", boxcoords="data", pad=0.3, frameon=False)

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

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

ax.yaxis.tick_right()
ax.yaxis.set_label_coords(0, 0.5)
ax.tick_params(labelsize=24, labelcolor=font_color, color=line_color)

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

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

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

ax.set_axisbelow(True)

plt.savefig('pivot.png')

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

リンク先はこちら

ピボットを使った予想

通常は逆張りで考え、抵抗線に接近してきた場合は売り、支持線に接近してきた場合は買いです。ただし、HBOPを上抜けした場合は上昇トレンドの発生、LBOPを下抜きした場合は下落トレンドの発生と判断して順張りを行います。

この他、もみ合いのレンジ相場で利用しているとき、買いの場合はLBOPまでレートが下がった場合や売りの場合はHBOPまでレートが上がった場合には損切りタイミングとなります。
図2がピボットを使った予想例です。分かりやすい一部をポイント例として紹介しています。下側のB1バンドやB2バンドに接するのは陽線で、上側のS1バンドやS2バンドに接するのが陰線であることがわかります。

注意点

1日の動きの大きかった日ではピボットの値が大きくなるので幅で大きくなり、レンジ相場などで値動きが小さいと幅も小さくなります。


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


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