見出し画像

利用しているインジケーターの紹介 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描画は、以下のプロセスで行われていました。

  1. スイングハイが検出されると、そのポイントがZigZagの候補となります。

  2. 次にスイングローが検出されると、前のスイングハイのポイントと結ばれます。

  3. このプロセスを繰り返し、高値と安値を交互に結ぶことでZigZagラインが形成されます。

  4. その後、そのポイントより新しいバーで、さらに高い高値が出現すると、インジケーターは古い暫定ポイントの描画を消去します。

  5. そして、新しい最高値のポイントに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. 描画の基本

    • ルール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とします。

  2. 暫定と再描画

    • ルール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からダウンロードして、お試しください。



いいなと思ったら応援しよう!

SORA PAPA よろしければ応援お願いします!