Supply Demand Zones Base Impulse ATR
- インディケータ
- バージョン: 1.1
Supply & Demand Zones は、MetaTrader 5 のチャートに需要ゾーンと供給ゾーンを描くインジケーターです。規則は1つに固定し、すべて公開しています。実体が ATR の X 倍以上ある「勢いの足」と、その直前にある実体の小さな足のかたまり(ベース)を探します。勢いの足が陽線でベースの上で引ければ需要ゾーン、陰線でベースの下で引ければ供給ゾーンです。各ゾーンには状態(未接触、接触○回、ブレイク済)を表示します。
手で描いているゾーンを、毎回同じ基準で描きたい方のための道具です。表示するだけのツールで、売買のシグナルは出さず、注文もしません。ゾーンは過去の足から取った価格の範囲で、そこで値動きが止まる・反転すると予測するものではありません。
機能
- 上の規則で需要ゾーンと供給ゾーンを描きます。判定は確定した足だけで行い、一度できたゾーンの上・下・始まりは後から動きません。
- 各ゾーンのラベル:「需要 未接触」「供給 接触2回」「需要 ブレイク済」など(英語表示では "Demand fresh"、"Supply touched 2" など)。ゾーンにマウスを重ねると、上下の価格、ベースの本数、ベースの最初の足の時刻が出ます。
- 状態ごとの色:未接触、接触あり、ブレイク済(灰色の枠)。ブレイク済のゾーンは初期設定で非表示、表示にもできます。
- 破られていないゾーンは今の足から数本右まで延ばします。ブレイク済のゾーンは破った足で終わります。
- ゾーンが重なったときは、古い方を塗り、新しい方は枠だけにします(色が見分けにくくならないように)。
- 上位足のゾーンを1つまで表示できます(初期設定はオフ)。同じ規則で計算し、太い枠で描き、ラベルに時間足が付きます(例:「H4 供給 未接触」)。
- アラートは1種類(初期設定はオフ):価格が外から未接触のゾーンに入ったとき。ポップアップ、音、プッシュ通知。
- ラベルの色はチャートの背景に合わせて自動で選びます(1色に固定も可)。チャートの文字とアラートは日本語か英語(Auto は端末の言語)。
- EA 用の非表示バッファー6本(下記)。
計算方法
- 足の True Range = 高値と前の足の終値の高い方 − 安値と前の足の終値の低い方。
- ATR = 勢いの足の直前 N 本の True Range の単純平均(勢いの足そのものは含めません)。
- 勢いの足:実体 |終値 − 始値| が X × ATR 以上。
- ベース:勢いの足の1本前から過去へ数えて、実体が Y × ATR 以下の足が続く本数(最大本数まで)。1本前の足が小さくなければゾーンは作りません。
- ゾーンの上下 = ベースの足の高値の最大と安値の最小(「Bodies only」を選ぶと始値・終値の最大と最小)。
- 需要:勢いの足が陽線で、終値がゾーンの上より上。供給:勢いの足が陰線で、終値がゾーンの下より下。
- 状態は勢いの足の次の足から判定します。需要ゾーンは、終値が下の境を下回るとブレイク済、安値が上の境に届くと接触。供給ゾーンは、終値が上の境を上回るとブレイク済、高値が下の境に届くと接触です。
- 接触の回数 = 前の足がゾーンの外にいて、その足でゾーンに入った回数。「未接触」はまだ一度も接触していない状態です。
- 計算に使うのは「Bars to scan」の範囲の足だけです。「Remove zones older than N bars」より古いゾーンは消します。
主な設定
- Zone rules:ATR period(14)、勢いの足の X(1.5)、ベースの足の Y(0.5、X より小さく)、ベースの最大本数(3、1〜10)、Zone edges(ヒゲ込み/実体のみ)、Bars to scan(5000、300〜100000)。
- Display:片側ごとの未ブレイクのゾーン数(5)、N 本より古いゾーンを消す(1000、0 = 消さない)、ブレイク済のゾーン(非表示/灰色の枠で表示)、片側ごとのブレイク済の数(3)、右への延長(10本)、ラベルのオン・オフ、文字の大きさ(8)、ゾーンの色5つ、ラベルの色(None = 自動)。
- Higher timeframe zones:時間足(current = オフ)、片側ごとの表示数(3)。
- Alerts:未接触のゾーンに入ったとき(オフ)、ポップアップ、音、プッシュ、言語。
範囲外の値を入れると読み込まず、理由を「エキスパート」タブのログに書きます。
EA・iCustom で使う方へ
- バッファー:0 = 需要ゾーンの上、1 = 需要ゾーンの下、2 = 需要ゾーンの接触回数、3 = 供給ゾーンの上、4 = 供給ゾーンの下、5 = 供給ゾーンの接触回数。各足には、その足が確定した時点で一番新しい、破られていないゾーン(需要・供給それぞれ)が入ります。作りかけの足は直前の確定足と同じ値です。ゾーンが無いとき(または一番新しいゾーンが「Remove zones older than N bars」より古いとき)は EMPTY_VALUE です。
- バッファーに入るのはチャートの時間足のゾーンだけです。上位足のゾーンは入りません。
- iCustom の引数:インジケーター名の後に、入力グループの空の文字列4つを含めて30個を次の順で渡します。
""、ATR period、X、Y、ベースの最大本数、Zone edges(0 ヒゲ込み、1 実体のみ)、Bars to scan、
""、片側ごとの未ブレイクのゾーン数、N 本より古いゾーンを消す、ブレイク済のゾーン(0 非表示、1 表示)、片側ごとのブレイク済の数、右への延長、ラベル表示、文字の大きさ、需要・未接触の色、需要・接触ありの色、供給・未接触の色、供給・接触ありの色、ブレイク済の色、ラベルの色、
""、上位足の時間足、上位足の片側ごとの表示数、
""、未接触のゾーンに入ったときのアラート、ポップアップ、音、プッシュ、言語(0 自動、1 英語、2 日本語)。
- iCustom で呼ばれたときはバッファーを埋めるだけで、何も描かず、アラートも出しません。
- EA やスクリプトが ChartIndicatorAdd() でチャートに載せたときは、MetaTrader 5 の仕組み上の制限があります。そのプログラムがハンドルを持っている間は、描いたゾーンがチャートに残ることがあります。また、プログラムが動いているチャートとは別のチャートに載せた場合、ゾーンは描かれません(バッファーは使えます)。
注意と限界
- ゾーンは足が確定したときにだけ作ります。作りかけの足でゾーンを作ったり状態を変えたりはしません。作りかけの足がゾーンに入っても、その足が確定するまでラベルは「未接触」のままです。
- アラートはティックごとに、直前の確定足の時点のゾーンと比べて判定します。そのため、ラベルがまだ「未接触」のうちにアラートが出ることがあります。アラートは1つのゾーンにつき1回です。読み込んだ直後の最初の価格は記録するだけで、アラートは出しません。
- 読み込み直し(履歴の追加、再接続、「Bars to scan」の変更など)のときは、範囲の最初の足から計算し直すため、チャートの古い部分のゾーンが変わることがあります。最近のゾーンは変わりません。
- 結果は入力の値とお使いの業者の価格データで変わります。値や業者が違えば、別のゾーンになることがあります。
- 値動きの小さいもみ合いでは小さなゾーンがたくさんでき、強いトレンドではできてすぐ破られるゾーンが多くなります。接触回数や「未接触」は過去の記録で、何かが起きる確率ではありません。
- 同じチャートの2つ目以降は枠だけを描きます(1つ目の塗りを消さないため)。
- ストラテジーテスターのビジュアルモードでは、チャートと同じようにゾーンを描きます。テスターの中ではアラートを出しません。
- 上位足を設定すると、テスターのログに「history cache」の行が出ます。端末がその時間足のデータを読み込むときに書くもので、インジケーターのエラーではありません。
- 表示数を大きくすると(例:片側50個、ブレイク済も表示、M1 で 100000 本)、テスターの実行がかなり遅くなります。初期設定は軽い設定です。
- 名前が「SDZ#」で始まるオブジェクトは本インジケーターのもので、外すと一緒に消えます。複数を見分けるため「SDZ_」で始まる一時的なグローバル変数を使います。チャートの設定は変えません。
動作環境とサポート
- MetaTrader 5。銘柄・時間足は問いません。MT4 版は別の無料商品です。
- 1つのチャートに複数載せられます(例:X・Y の値を変えて)。テンプレートでも、端末の再起動後も動きます。
- DLL、インターネット接続、ファイルの書き出しは使いません。
- 導入、設定、不具合のご連絡は MQL5 のメッセージで受け付けます。相場の見通しや個別の売買についてのご質問にはお答えしていません。
- チャート分析の補助ツールです。売買はせず、投資の成果を保証するものではありません。過去のチャートの動きは将来を保証しません。
