利用しているインジケーターの紹介 Swing High Low 〜ZigZag描画を8つのルールで見直しました〜
更新履歴:
2025/10/13:新規作成
2025/10/20:ZigZagの挙動を示すモーションGIFを追加
2025/12/02:ルール4を修正(SwingHL Ver3.05)
1.はじめに:インジケーターの現状と迷走の理由
1-1. SwingHLインジケーターが提供する機能
現在公開中の「SwingHLインジケーター」をご利用いただきありがとうございます。
このインジケーターは、Swing High(SH)とSwing Low(SL)を基にZigZagを描画するツールです。また、以下の機能も提供しています。
バンドの描画: スイングハイとスイングローをバンドとして描画。
水平線の描画: 直近のいくつかのZigZagの高値・安値に水平線を描画。
リペイント制御: ZigZagラインが確定前の足で書き換わる(リペイントする)か、しないかを選択。
描画のON/OFF切り替え: キーボードの特定キー(デフォルトは'd'キー)を押すことで、インジケーターの描画を動的にON/OFF。
1-2. 従来のZigZag描画ロジックと課題(なぜ迷走したのか)
従来のZigZag描画は、以下のプロセスで行われていました。
スイングハイが検出されると、そのポイントがZigZagの候補となります。
次にスイングローが検出されると、前のスイングハイのポイントと結ばれます。
このプロセスを繰り返し、高値と安値を交互に結ぶことでZigZagラインが形成されます。
その後、そのポイントより新しいバーで、さらに高い高値が出現すると、インジケーターは古い暫定ポイントの描画を消去します。
そして、新しい最高値のポイントにZigZagラインを再描画します。
この仕組みでは、「うまく行かないときは、その都度、発生条件を洗い出して、ソースコードを修正する」という状態が続き、特定の複雑なチャートパターンで予期せぬ描画が発生し、メンテナンスが非常に困難になっていました。
2.根本的な見直し:ZigZag決定の「8つのルール」
この「迷走」状態を脱却するため、ZigZag描画ロジックをゼロベースで整理し、「Swing High and Lows から ZigZag を作成するルール」として8つの明確な仕様を定義しました。Ver3では、インジケーターの内部構造もこのルールに基づいて完全リニューアルしています。
これにより、従来は捉えきれなかったローソク足の動きにも、より適切に追従できるようになりました。以下の画像のパラメーターは、Depth: 3、StartBarIndex: 0 を設定しています。

2-1. Swing High/LowとZigZagの定義
まず、基本的な用語を明確にします。
Depth (n):Swing High (SH) や Swing Low (SL) を決定する際の「左右 n 本」のパラメーター
SH :Swing High(左 n 本、右 n 本の中で最も高い高値)
SL:Swing Low(左 n 本、右 n 本の中で最も低い安値 )
ZH:ZigZag High(ZigZagの高値)
ZL:ZigZag Low (ZigZagの安値)
2-2. ZigZag決定の8つのルール(仕様)
ZigZag High(ZH)とZigZag Low(ZL)は、以下のルールに基づいて決定されます。
描画の基本
ルール1:ZigZagは古いバーから順に決定します 。
ルール2:ZHとZLは交互でなければなりません 。
ルール3:ZHの次のZLはZHより小さい値でなければならず、ZLの次のZHはZLより大きい値でなければなりません 。
ルール4:同一バーでSLとSHが共存する場合は、以下の判定ルールに従います。
上昇トレンド示唆(切り上げ)の場合:
前回のSHより現在のSHが高く、かつ前回のSLより現在のSLが高い場合は、SHとします。下降トレンド示唆(切り下げ)の場合:
前回のSHより現在のSHが低く、かつ前回のSLより現在のSLが低い場合は、SLとします。その他の場合:
陽線の場合はSHとし、陰線の場合はSLとします。
暫定と再描画
ルール5(未決定の動作):Depth内のバーは、右 n 本をすべてを考慮する必要はなく、暫定でSHあるいはSLとみなします。バー描画が進んだときに変更があれば修正します 。
ルール6(再描画):
ZHの後にSHがある場合、後のSHがZHより高いときはZHを後のSHに変更します 。
ZLの後にSLがある場合、後のSLがZLより低いときはZLを後のSLに変更します 。
ルール7(再描画):
同一バーにSLとSHが出現した後の状態や再描画などによって、ZHとZLの間にZHより高いSHが存在した場合はSHをZHに変更します。
同様にZLとZHの間にZLより低いSLが存在した場合はSLをZLに変更します。
ルール8(再描画): 新規バー出現後などで、前述までのルールに従わない場合には適合するように再計算します。
3.最後に
今回の「8つのルール」定義と内部構造の完全リニューアルにより、ZigZag描画のロジックが論理的に整理され、これまで手探りで修正していた状況から脱却できました。
成果のポイント:
堅牢性の向上: 曖昧さが排除され、複雑な相場でも予測可能な描画動作を実現しました。
メンテナンス性の向上: ルールに基づいた構造になったことで、今後の機能追加やバグ対応が容易になりました。
Ver.3では、この明確な仕様に基づき、ZigZag描画の安定性と信頼性を向上させました。ぜひ、新しくなった「SwingHLインジケーター」を以下のURLからダウンロードして、お試しください。
いいなと思ったら応援しよう!
よろしければ応援お願いします!