05.2.4
ジグザグ
まとめ
ZigZag は、株価の細かな上下を無視して「直前の高値・安値から一定割合以上動いたときだけ転換点とみなす」インジケーターで、転換点どうしを直線で結ぶとトレンドの骨格だけが残ります。このページでは
zigzag ライブラリの peak_valley_pivots(trmd["Close"], 0.03, -0.03) を使い、TORM plc(TRMD)の 2023 年以降の終値から 3% 以上の反転点を検出します。返り値は各日に +1(ピーク)・−1(バレー)・0(転換点ではない)を付けた配列で、0 でない日だけを ax.plot で結ぶと mplfinance のローソク足の上に緑のジグザグ線が重なります。閾値の 0.03 を 0.05 に広げれば小さなスイングが消え、0.01 に狭めればほぼ毎日が転換点になるという感度の調整が、この 1 つの引数で行えます。直感 #
山道を歩いた記録を地図に描くとき、1 歩ごとの蛇行まで描くと線がつぶれて読めませんが、「ここで登りから下りに変わった」という峠と谷だけを結べば道の形が分かります。ZigZag はこれを株価で行います。終値が直前の安値から 3% 以上上がったらそこを「谷」として確定し、直前の高値から 3% 以上下がったらそこを「山」として確定します。3% 未満の値動きは転換と見なさないため、ローソク足のノイズが消えて、上昇スイングと下降スイングの長さだけが見えてきます。
TRMD.csv の終値
peak_valley_pivots(close, 0.03, -0.03)
各日に +1 / −1 / 0 のラベル
0 でない日だけを取り出す
mplfinance のローソク足に緑線で結ぶ
ZigZagをプロットする #
ZigZagライブラリを使用してジグザグをプロットします。株価のデータとしてTORM plc (TRMD)のデータを使用しています。Yahoo Finance の「Historical Data」からダウンロードした CSV は Date・Open・High・Low・Close・Adj Close・Volume の 7 列で、mplfinance はこの列名をそのまま認識します。
次のコードは、CSV を読み込んで日付をインデックスにし、先頭 5 行を表示してデータの形を確認します。
| |
| Open | High | Low | Close | Adj Close | Volume | |
|---|---|---|---|---|---|---|
| Date | ||||||
| 2023-02-17 | 32.080002 | 32.669998 | 31.760000 | 32.060001 | 25.389601 | 206600 |
| 2023-02-21 | 32.490002 | 33.250000 | 31.840000 | 32.119999 | 25.437117 | 240900 |
| 2023-02-22 | 32.709999 | 32.759998 | 31.110001 | 31.450001 | 24.906519 | 340400 |
| 2023-02-23 | 33.380001 | 34.639999 | 33.330002 | 34.299999 | 27.163548 | 496600 |
| 2023-02-24 | 34.889999 | 34.965000 | 34.290001 | 34.689999 | 27.472404 | 338000 |
ローソク足に ZigZag を重ねる #
次のコードは、ローソク足を描いた軸を returnfig=True で受け取り、終値から ±3% の転換点を検出して、転換点どうしを緑の直線で結びます。
| |

図の読み方 #
緑の線が折れ曲がる点が、終値が直前の極値から 3% 以上反転した日です。線の 1 区間が 1 つのスイングで、上向きの区間が長く下向きの区間が短ければ、上昇トレンドの中の押し目が 3% 以内で収まっていたことを意味します。ローソク足の細かな上下は線に反映されないので、線の傾きと区間の長さだけを見ればトレンドの強さと転換の頻度を比べられます。