ジグザグ

7.2.4

ジグザグ

最終更新 2020-03-11 読了時間 1 分
まとめ
  • ZigZagインジケーターで株価のトレンド転換点(ピーク・バレー)を自動検出する。
  • mplfinanceのローソク足チャートにZigZagラインを重ね、主要なスイングを可視化する。
  • peak_valley_pivotsの閾値パラメーターで、検出感度を調整する。

ZigZagをプロットする #

ZigZagライブラリを使用してジグザグをプロットします。株価のデータとしてTORM plc (TRMD)のデータを使用しています。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
import mplfinance as mpf
import numpy as np
import pandas as pd
import seaborn as sns
from matplotlib.dates import DateFormatter
from zigzag import peak_valley_pivots

# TORM plc (TRMD)
trmd = pd.read_csv("TRMD.csv", index_col="Date")
trmd.index = pd.to_datetime(trmd.index)
trmd.head(5)

OpenHighLowCloseAdj CloseVolume
Date
2023-02-1732.08000232.66999831.76000032.06000125.389601206600
2023-02-2132.49000233.25000031.84000032.11999925.437117240900
2023-02-2232.70999932.75999831.11000131.45000124.906519340400
2023-02-2333.38000134.63999933.33000234.29999927.163548496600
2023-02-2434.88999934.96500034.29000134.68999927.472404338000
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
def plot_zigzag(ax, X, p):
    """zigzagをプロット
    args:
        ax: axis
        X: pandas.Series
        p: pivots index
    """
    ax.plot(np.arange(len(X))[p != 0], X[p != 0], "g-", linewidth=1)
    return ax

fig, axes = mpf.plot(
    trmd, type="candle", style="starsandstripes", figsize=(12, 4), returnfig=True
)

pivots = peak_valley_pivots(trmd["Close"], 0.03, -0.03)
axes[0] = plot_zigzag(axes[0], trmd["Close"], pivots)

ZigZagをプロットするの図