無料でロボットをダウンロードする方法を見る
Telegram上で私たちを見つけてください。
私たちのファンページに参加してください
興味深いスクリプト?
それではリンクにそれを投稿してください。-
他の人にそれを評価してもらいます
スクリプトを気に入りましたか?MetaTrader 5ターミナルの中でそれを試してみてください。
インディケータ

Swing Detector by Pullback (Smart Money Concepts) - MetaTrader 5のためのインディケータ

Sandro Begashvili
Sandro Begashvili
Sandro Begashvili - MQL5、MQL4、Python、Pine Script 開発者
MetaTrader 4 と MetaTrader 5 向けの取引プログラムを開発しています。エキスパートアドバイザー、カスタムインジケーター、グラフィカルな取引パネルが対象です。ご要望をお伝えいただければ、動作するコードとドキュメントの形に仕上げます。
開発できるもの
エキスパートアドバイザー(EA)- MT4 および MT5 向けの自動売買戦略
インジケーター - アラートやマルチタイムフレームに対応した独自の分析ツール
| Japanese English Русский 中文 Español Deutsch Português 한국어 Français Italiano Türkçe
ビュー:
5
評価:
(1)
パブリッシュ済み:
MQL5フリーランス このコードに基づいたロボットまたはインジケーターが必要なら、フリーランスでご注文ください フリーランスに移動

構造に基づく手法のほとんどすべては、同じ問いから始まります実際に重要な高値と安値はどれか?」 ということです。その答えに基づいて、市場構造、BOSやCHoCH、オーダーブロック、流動性レベルなど、その後のすべての分析が構築されます。つまり、どの定義を選ぶかによって、その後の分析で何が明らかになるかが決まるのです。


この問いに答える一般的な方法はいくつかある。 最もよく知られているのは「3本足パターン」(フラクタル)です。高値が両隣のローソク足よりも高いローソク足は、スイング高値と見なされます。これは対称的で計算も簡単であり、ほとんどのスイング指標で採用されています。他にも、対象期間を5本や7本に広げたり、ポイント単位やATRでの最小変動幅で候補を絞り込んだりする手法があります。

このインジケーターは、Trading Hub 3.0 で使用されている「プルバック定義」という異なる定義を採用しています。ローソク足が隣接するローソク足よりも高いかどうかを問うのではなく、価格が戻ってきてそのローソク足を拒否した かどうか 問うものです。高値がスイングとなるのは、市場がその高値を形成したローソク足の安値を再び下回って取引された場合に限られます。 形状によって決定されることは何もなく、すべてはその後価格がどう動くかによって決定されます。


実用上の違いは、フラクタルが幾何学的形状を表すのに対し、プルバックは「出来事」を表す点にあります。プルバックは出来事であるため、スイングがいつ 有効になったかを 示してくれます。そして、そのタイムスタンプこそが、再描画しない実装を可能にするのです。

ルールの仕組み

検出器は決して両側を同時に探すことはありません。一度に片側だけを 検索し、正確に3つの情報を保持します:

状態 意味
方向 現在検索対象となっている側面 — ハイかローか
追跡中の極値 現在のトレンド区間において、これまでに観測された最高値(または最安値)
基準値 その高値(または安値)を形成したローソク足の反対側の

重要なのはこの基準値です。ローソク足が新たな最高値(最高高値)を更新した際、その同じローソク足が、後にその最高値を確定させる水準、すなわちそのローソク足自身の安値も 提供します。その高値が有効となるためには、価格がその安値を再び下回らなければなりません。


図の読み方:

  • A— トレンドが始まる。追跡対象の高値と基準となる安値は、いずれも1本のローソク足から生じる。
  • B— より高い高値が形成されるたびに、これら2つの値は更新される。この高値はまだ暫定的なものであり、何も描画されない。
  • C— ついにローソク足が基準となる安値を下回って取引される。これが 引き戻しであり、これにより追跡されていた高値がスイング高値として確定する。
  • D— 確認となるローソク足が、直ちに安値の探索を開始する。これは対称的に行われる:最も低い安値を追跡し、その高値を基準とし、上抜けすれば確認される。

一方の確認が行われると、常に検索対象が反対側へ切り替わるため、スイング高値と安値は自動的に交互に現れます。これを強制する個別のルールはなく、過去のスイングとの比較も行われません。

ローソク足ごとのルール

閉じたローソク足ごとに、検出器は2つの独立した質問を投げかけます。「このローソク足は新たな極値を記録したか?」 および「基準値を突破したか?」。 方向ごとに4つの組み合わせが考えられます。


# 現在のトレンド 現在のローソク足 アクション1 アクション2
1 高値 を探る インサイドバー— 新高値は更新せず、基準となる安値は維持 特段の変動なし なし
2 高値 を探している 新高値、基準安値は維持 追跡高値 = このローソク足の最高値 基準安値=このローソク足の安値
3 高値 を探している ブレイク— 新高値は更新されていないが、基準安値を下回って取引されている 追跡高値をスイング高値 として確認する LOWに切り替え:追跡した安値 = 当該ローソク足の安値、基準高値 = 当該ローソク足の最高値
4 高値 を探している アウトサイドバー— 新高値を更新し、 基準安値を割り込む このローソク足自体の高値を スイング高値として確認する LOWに切り替える:追跡安値=このローソク足の安値、基準高値=このローソク足の最高値
5 安値 の確認 インサイドバー— 新たな安値は形成されず、基準高値は維持されている なし なし
6 安値 を探している 新たな安値、基準高値は維持 追跡安値=このローソク足の安値 基準高値=このローソク足の高値
7 安値 を探している ブレイク— 新たな安値はつかないが、基準高値を上回って取引される 追跡安値をスイング安値 として確認する HIGHに切り替え:追跡高値=このローソク足の高値、基準安値=このローソク足の安値
8 安値 を探る アウトサイドバー— 新たな安値を更新し、 基準高値をブレイク このローソク足自体の安値を スイング安値として確認する HIGHに切り替え:追跡高値 = 当該ローソク足の最高値、基準安値 = 当該ローソク足の最安値

1~4行目と5~8行目は完全に鏡像関係にあるため、このアルゴリズム全体はわずか数十行で構成されています。

稀なケース:両方向の基準を突破するローソク足

4行目と8行目については別途説明が必要です。通常、ローソク足はトレンドを延長するか、基準値をブレイクするかのいずれかです。アウトサイドバーは 両方を同時に起こす可能性があります――同じローソク足内で新高値を更新しつつ、 基準安値を下回って取引されるのです。

そうなると、両方のルールがこれを対象としてしまい、互いに矛盾が生じます。これを「延長」として扱うと、実際のブレイクを見逃してしまいます。一方、「ブレイク」として扱うと、このローソク足がすでに超えてしまった高値を改めて確認することになってしまいます。


解決策は、そのローソク足をスイングそのものとして扱うことです:

  1. そのローソク足自体の高値が スイング高値として確定する――直前に更新した、以前追跡されていた高値ではない。
  2. そして、その同じローソク足が 反対の波動を開始します。追跡されていた安値がそのローソク足の安値となり、基準値がその高値となります。

つまり、1本のローソク足がスイング高値と安値レッグの開始の両方を担うことになる。チャート上では、同じバーの上下にある マーカーと、その間に垂直なレッグとして表示されるが、これはまさにそのローソク足内部で起こったことそのものである。

This is also why the legs are drawn as trend-line objects rather than a DRAW_SECTION buffer. A section plot stores one value per bar and could not hold two points on the same candle.

再描画は行われません

追跡された極値は暫定的なものであり、決して描画されることはありません。スイングは、それを確認するローソク足にのみチャートに記録され、一度記録されると、移動、色変更、削除されることはありません。評価の対象となるのは終値が決まったローソク足のみであり、形成中のローソク足は完全に無視されます。

その代償として、率直に述べておくべき点があります。それは「確認の遅れ」です。最新のスイングは、それを有効化するブレイクが発生した後にのみ表示されます。新しい高値がついた瞬間にマーカーを表示したいのであれば、これは適切なツールではありません。そのようなマーカーは後から移動することになり、それはリペイントにあたるからです。

入力パラメータ

検出

入力 デフォルト 機能
まず、以下を探します スイング高値の検索 最初のレッグがどちらの方向を探索するか。これはチャート上の最も古いバーにのみ影響します。最初の確認後は、ブレイクによって方向が完全に決定されます。履歴上の最初のスイングが間違っていると思われる場合を除き、この設定はそのままにしておいてください。
ブレイクは以下によって確認される ウィック 「ウィック」 はローソク足の安値・高値を使用します。これはTrading Hubのルールそのものであり、より感度の高い設定です。「クローズ」は、ローソク足が基準値を突破して引けることを 必要とし、単一のウィックによる一時的な接触を無視するため、スイングの数は著しく少なくなりますが、その振れ幅は大きくなります。

選択方法: 「ウィック」 から始めてください。M1~M15で取引している場合、または金や指数CFDなど、ノイズの多い長いウィックを持つ銘柄を扱っている場合は、「クローズ」 に切り替えてください。これにより、他のロジックを変更することなく、単発のスパイクによって引き起こされるスイングの大部分が除去されます。 より大きな時間軸で分析することも、大きなトレンド構造を捉えるもう一つの方法です。ルール自体には、調整可能な感度や期間の設定はありません。

表示

入力 デフォルト 機能
スイングマーカーを描画する true 矢印の表示/非表示を切り替えます。どちらの場合でもバッファは満たされたままとなるため、iCustom は 引き続きすべてのスイングを返します。
矢印コード — スイング高/低 217/218 Wingdingsコード。一般的な代替コード:234/233241/242、ドットの場合は159
バーからの矢印の距離 10 ローソク足と矢印の間のピクセル単位のギャップ。ローソク足が密集しているチャートでは、この値を大きくしてください。
スイング間の足を描画する true 連続するスイングを結ぶ点線のジグザグ線。すでにジグザグ線を表示している場合は、これをオフにしてください。
線の色/スタイル/太さ silver, dotted, 1 線の外観。

マーカーと線を両方とも オフにすると、純粋に計算のみが行われる状態になります。これは、EAがバッファを読み取り、チャート上に何も表示させたくない場合に便利です。

アラート

入力 デフォルト 機能
確認済みのスイング時にポップアップアラートを表示 false スイングが確定した際にターミナルにポップアップを表示します。
スイングが確定した際にプッシュ通知を送信する false 「ツール」→「オプション」→「通知」で設定されたMetaQuotes ID宛にプッシュ通知が送信されます。

アラートはライブ更新時にのみ発動し、インジケーターが履歴を読み込んでいる間は発動せず、スイングごとに1回のみ発動します。

EAからの使用方法

2つのバッファがあり、いずれも確認済みのスイング時のみ非空となります(空の値は0.0 です):

バッファ 内容
0 確認済みのスイング高値 の価格
1 確認済みスイング安値 の価格
int h = iCustom(_Symbol, _Period, "SMC_Pullback");
double buf[];
CopyBuffer(h, 0, 0, 100, buf);   // スイング高値

検出エンジンは、CPullbackDetectorという 単一の独立したクラス内に実装されており、チャートやバッファへの依存関係はありません。価格配列を受け取り、確認済みのスイングを報告するため、iCustomを経 由したくない場合は、EAに直接コピーして使用することができます。

意図的に行わないこと

このインジケーターはスイングポイントの特定にとどまります。HH/HL/LH/LLのラベル付けは行わず、BOS、CHoCH、IDM、オーダーブロック、流動性レベルの算出も行いません。これらは、まず信頼性の高いスイングのセットが必要となる別個のステップであり、まさにこのインジケーターが提供するものです。


このプロジェクトはMQL5 Algo Forgeでサポートされています。 コードや今後のアップデートについては、以下のリンクをご覧ください

リポジトリはこちらです:https://forge.mql5.io/SandroBegashvil/SMC-Pullback-CodeBase

MetaQuotes Ltdによって英語から翻訳されました。
元のコード: https://www.mql5.com/en/code/76451

SuperTrend Indicator SuperTrend Indicator

第一原理に基づいて構築されたカスタム「SuperTrend」インジケーター。ATRに基づくボラティリティバンドとラチェット機構を組み合わせることで、クリーンでリペイントしないトレンドラインを描画します。 内部の再帰的な状態は、適切に登録された計算バッファを通じて管理されており、手動で管理される配列実装によく見られる状態喪失のバグを回避しています。記事シリーズ「初心者向けカスタムインジケーターの作成」より。

Fisher Transform Indicator Fisher Transform Indicator

統計学の第一原理に基づいて構築されたフィッシャー変換オシレーター――価格を有限の範囲に正規化した後、対数変換を適用することで、従来のオシレーターに典型的な緩やかな転換ではなく、鮮明で明確な反転シグナルを生成します。 内部の再帰的な状態は、適切な計算バッファを通じて処理されるため、バックテスト全体を通じて信頼性が高く正確な動作が保証される。記事シリーズ「初心者向けカスタム指標の作成」より。

PropFirm Equity Protector - Institutional Risk Manager(オープンソース) PropFirm Equity Protector - Institutional Risk Manager(オープンソース)

プロップファームのリスク管理向けプロフェッショナル・ユーティリティEA。日次の純資産モニタリング、損失ポジションに対する段階的なリスク軽減、および自己修復機能を備えたグラフィカルダッシュボードによる絶対的なハードストップが特徴です。

Accelerator Oscillator (AC) Accelerator Oscillator (AC)

アクセルレーション/デセレレーションインジケーター(AC)は現在の市場を動かす力の加速と減速を測ります。